можно ли проверить, защищен ли pdf паролем с помощью ghostscript?

можно ли проверить, защищен ли pdf паролем с помощью ghostscript? какой будет команда? Я знаю, что вы можете удалить пароль pdf с помощью ghostscript, но все, что я хочу сделать, это просто проверить, если PDF защищен паролем и включенной безопасностью.

4 ответов


checkuserpasswdPDF.sh:

#!/bin/sh

GS=~/gs/bin/gs
output=`$GS -dBATCH -sNODISPLAY "" 2>&1`
gsexit=$?

if [ "$gsexit" == "0" ]; then
  echo "Not user-password protected"
  exit 0;
else
  found=`echo "$output" |grep -o "This file requires a password"`
  if [ -z "$found" ]; then
    echo "Failed to invoke gs" 
    exit $gsexit
  else
    echo "Protected"
    exit 0;
  fi  
fi

проверяет защищенные паролем пользователя PDF-файлы:checkuserpasswdPDF.sh test.pdf.

GS игнорирует пароли владельца (см. этой).


С pdftk можно обнаружить пароль пользователя или пароль владельца, просто пытаясь сделать dump_data операции.

 protected=0
 pdftk "input.pdf" dump_data output /dev/null dont_ask || protected=1

проблема здесь в том, что вы не знаете, что предотвращает пароль: чтение, извлечение данных, изменение...?


используя файл bat, вы можете сделать небольшое обходное решение, выполнив поиск "Encrypt" в PDF-файлах. Его тихий быстрый поиск по многим файлам.

Findstr /M /I "Encrypt" *.pdf 

это вернет все имена файлов, которые защищены (так как "шифровать" будет записываться в файл, как dos читает его)

может быть, это то, что кто-то может использовать. Я использую:
for /f %%a in ('Findstr /M /I "Encrypt" *.pdf') do move %%a c:\tempfiles\
переместить всех обеспеченных PDF для c:\tempfiles. Оттуда я использую ghostscript для удаления безопасности и перемещения ее обратно в оригинал папка.


Вы можете проверить с помощью pdfinfo

pdfinfo $filename &>/dev/null;
if [[ $? -eq 1 ]] ; then
   echo "File can not be opened for reading"
fi