电脑打开正常,程序却读取错误!
这时候如果尝试在电脑上打开pdf,然后另存为一个新的pdf文件,再用代码去检测,会发现竟然修复了!
太好了,问题解决!
等等,如果我有1000张pdf文件,难道要逐个打开并另存为?这怎么能忍? 所以如果有一种批量修复的功能就好了
在网上找了很久,大概得到三种解决方案:
利用 Acrobat SDK,调用SDK中的另存为功能,可以实现电脑打开另存为的效果 利用ghostscript进行pdf修复 利用mupdf进行pdf修复这里我只验证了第三种方式是可行的,这里我使用mupdf-0.9-linux-amd64这个版本进行验证
下载软件包后,得到其中一个可执行文件:pdfclean
$ pdfclean broken.pdf repaired.pdf
+ pdf/pdf_xref.c:160: pdf_read_trailer(): cannot recognize xref format: '%'
| pdf/pdf_xref.c:481: pdf_load_xref(): cannot read trailer
pdf/pdf_xref.c:537: pdf_open_xref_with_stream(): trying to repair
从输出结果来看,mupdf尝试了修复处理
得到新的pdf文件之后,再用前面的Go代码尝试打开,就正常了
剩下的就是写一个bash脚本,批量修复,目标达成!
九、识别一个PDF文件的字体信息
有时候要使多个pdf文本字体保持一致,免不得要去分析pdf中都使用了哪些字体,这时候可以使用xpdf/pdffonts进行字体分析
$ pdffonts input.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
NimbusSanL-Regu CID TrueType Identity-H yes no yes 10 0
NimbusSanL-Bold CID TrueType Identity-H yes no yes 20 0
其他Libiray介绍:
PDF-Writer
这是一个C++的开源库,支持创建pdf,合并pdf,图片水印文字操作等
对于gopher来讲,要使用这个库,需要封装一层CGO代码才可以
rsc/pdf
这是一个Go语言实现的pdf库,可以用于读取pdf信息,比如读取pdf内容/页数/字体等... 具体可以参考文档
介绍了这么多第三方库,简直就是五花八门,各显神通。有些功能在大多数库中都是有重复的,具体使用中会遇到什么问题,还是要看实际情况如何。
希望这些总结能够对读者有所帮助
参考:
wkhtmltopdf
xpdf
cpdf
qpdf
unidoc
pdflib/tet
pdfwriter
mupdf
pdfcpu
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持易采站长站。









