можно ли проверить, защищен ли pdf паролем с помощью ghostscript? какая будет команда? Я знаю, что вы можете удалить пароль PDF с помощью ghostscript, но все, что я хочу сделать, это просто проверить, защищен ли PDF паролем или включена ли безопасность.
можно ли проверить, защищен ли pdf паролем с помощью ghostscript?
Ответы (4)
checkuserpasswdPDF.sh
:
#!/bin/sh
GS=~/gs/bin/gs
output=`$GS -dBATCH -sNODISPLAY "$1" 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, вы можете найти небольшой обходной путь, выполнив поиск «Зашифровать» в 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