можно ли проверить, защищен ли 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