Answers:
也许运行pdfinfo
(在poppler-utils
软件包中的Fedora上)提供了一个线索?
PDF文件中的大多数信息都位于字典的末尾,因此,如果找到它,应该可以。我会做类似的事情:
for f in *.pdf; do
if pdfinfo "$f" > /dev/null; then
: Nothing
else
echo "$f" is broken
fi
done
pdfinfo
还是pdftotext
...
我选择检查PDF的工具是qpdf
。qpdf
有一个--check
论点非常适合发现PDF中的问题。
qpdf
:qpdf --check test_file.pdf
qpdf
:find ./directory_to_scan/ -type f -iname '*.pdf' \( -exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \; -o -exec echo "{}": FAILED \; \)
命令说明:
find ./directory_to_scan/ -type f -iname '*.pdf'
查找所有带有'.pdf'扩展名的文件
-exec sh -c 'qpdf --check "{}" > /dev/null && echo "{}": OK' \;
qpdf
对找到的每个文件
执行,并将所有输出通过管道传输到/dev/null
。如果返回状态qpdf
为0(即无错误),还打印文件名,后跟':OK'
-o -exec echo "{}": FAILED \; \)
如果发现错误,将执行此命令:打印文件名,后跟“:FAILED”
qpdf
:qpdf
在以下网址提供了Linux和Windows二进制文件:https : //github.com/qpdf/qpdf/releases。您也可以使用所选的包管理器来获取它。例如,在Ubuntu上,您可以通过以下命令使用apt安装qpdf:
apt install qpdf
我得到了一个答案:
for x in *.pdf; do echo "$x"; pdfinfo "$x" | grep Pages; done
包含错误的PDF将显示错误。
ls
:mywiki.wooledge.org/ParsingLs
find (1)
。:-)
所有使用pdfinfo
或pdftotext
不适合我的方法。实际上,他们不断给我带来误报,有时还会创建我不需要的文件。
做的是JHOVE。
安装:
从上面的链接安装jar,并使用以下命令更新PATH环境变量:
echo "export PATH=\$PATH:/REPLACE_WITH/YOUR/PATH_TO/jhove/" >> ~/.bash_profile
刷新每个终端,
source ~/.bash_profile
您就可以开始在系统范围内使用它了。
基本用法:
jhove -m pdf-hul someFile.pdf
您将获得许多有关pdf的信息-比大多数人可能需要的更多。
Bash One-Liner:
只需返回valid
或invalid
:
if [[ $(jhove -m pdf-hul someFile.pdf | grep -a "Status:") == *"Well-Formed and valid"* ]]; then echo "valid"; else echo "invalid"; fi;
请注意,这是在Mac OS X上运行的,但我认为它与任何基于Unix的Bash环境都可以正常工作。