Можно ли проверить, защищен ли pdf паролем, используя ghostscript? - PullRequest
6 голосов
/ 28 октября 2010

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

Ответы [ 4 ]

5 голосов
/ 09 декабря 2010

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 игнорирует пароли владельца (см. this ).

2 голосов
/ 05 июля 2016

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

Findstr /M /I "Encrypt" *.pdf 

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

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

2 голосов
/ 09 декабря 2010

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

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

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

0 голосов
/ 28 июня 2018

Вы можете проверить, используя pdfinfo

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