8

是否可以使用ghostscript检查pdf是否受密码保护?命令是什么?我知道您可以使用 ghostscript 去除 pdf 密码,但我要做的只是检查 PDF 是否受密码保护或启用安全性。

4

5 回答 5

10

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 忽略所有者密码(请参阅)。

于 2010-12-09T10:02:06.513 回答
2

只需pdftk尝试执行dump_data操作即可检测用户密码或所有者密码。

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

这里的问题是您不知道密码会阻止什么:读取、提取数据、修改......?

于 2010-12-09T08:22:21.380 回答
2

您可以使用测试pdfinfo

pdfinfo $filename &>/dev/null;
if [[ $? -eq 1 ]] ; then
   echo "File can not be opened for reading"
fi
于 2018-06-27T22:58:55.210 回答
2

使用 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 删除安全性,并将其移回原始文件夹。

于 2016-07-05T12:08:21.563 回答
0

@Benoit 的答案在控制台上给出了丑陋的错误,但有效。

所以我会把它放到一个带有错误输出抑制的单行器中:

protected=0 && pdftk "input.pdf" dump_data output /dev/null dont_ask 2>/dev/null || protected=1
于 2021-09-17T08:47:33.077 回答