是否可以使用ghostscript检查pdf是否受密码保护?

时间:2010-10-28 04:06:45

标签: ghostscript

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

4 个答案:

答案 0 :(得分:5)

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)。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:2)

使用bat文件,您可以通过搜索"加密"来做一些解决方法。在pdfs中。它可以快速搜索许多文件。

Findstr /M /I "Encrypt" *.pdf 

这将返回所有受保护的文件名(因为"加密"将在dos读取时写入文件中)

也许这是某人可以使用的东西。 我用:
for /f %%a in ('Findstr /M /I "Encrypt" *.pdf') do move %%a c:\tempfiles\将所有受保护的pdf移至c:\ tempfiles。从那里我使用ghostscript删除安全性,并将其移回原始文件夹。

答案 3 :(得分:0)

您可以使用pdfinfo

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