是否可以使用ghostscript检查pdf是否受密码保护?命令是什么?我知道您可以使用 ghostscript 去除 pdf 密码,但我要做的只是检查 PDF 是否受密码保护或启用安全性。
问问题
8648 次
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 回答