如何通过编程生成的PDF找到问题?

Swo*_*op 13 pdf pdf-generation ghostscript itextsharp

我的小组一直在使用itext-sharp库和C#/ .NET来生成自定义的动态PDF.在大多数情况下,这个过程非常适合我们的需求.我们在开发/测试期间可能遇到的一个问题是布局问题,这可能导致PDF无法在Adobe Reader中正确打开/呈现,尤其是.较新版本的Acrobat/Reader.

该文档将正确打开前X页的显示.但是如果出现错误,则不会显示文档中的其余页面.

如上所述,我们通常能够使用C#/ iText代码将此问题跟踪到布局类型问题.我们最终通过使用猜测和检查方法或分而治之来找到错误.它有效,但它不是解决这些问题的最佳方法.

我想知道是否有任何可用的工具可以加快验证PDF文档的过程,并有助于指出文档中的错误?

Kur*_*fle 18

"最便宜"(同时又非常可靠!)的方式是使用Ghostscript.让Ghostscript解释PDF并查看它给出的返回值.如果没有问题,PDF文件应该没问题.在Windows上:

 gswin32c.exe ^
       -o nul
       -sDEVICE=nullpage ^
        d:/path/to/file.pdf
Run Code Online (Sandbox Code Playgroud)

nullpage输出设备不会产生任何新的文件.但是Ghostscript会告诉stdout/stderr它是否遇到错误.检查%errorlevel%伪环境变量的内容. - 在Linux上:

 gs \
       -o /dev/null \
       -sDEVICE=nullpage \
        /path/to/file.pdf
Run Code Online (Sandbox Code Playgroud)

(检查返回值echo $?是否0为"无问题".)

如果出现错误,Ghostscript会发布一些可能对您有所帮助的信息.在任何情况下,至少你可以肯定地识别那些没有问题的文件:如果Ghostscript可以处理它们,Acrobat(Reader)也不会有任何问题.


Row*_*wan 13

验证PDF文件可能是一项非常棘手的任务 - 主要是因为正确执行此操作所需的工具非常昂贵.

Acrobat有一个工具(高级>预检> PDF分析>报告PDF语法问题),可以扫描PDF以查找任何语法问题,但无法以编程方式访问该工具.

Appligent有一个名为pdfHarmmony的工具,由Adobe的PDF库提供支持,可以通过编程方式访问,但价格非常昂贵(2500美元以上).如果您能负担得起,此选项将为您提供最佳结果.

还有另一种选择是3-Heights PDF Analysis&Repair,我不知道它的质量是什么,但同样昂贵.

SourceForge上的这个PDF Validator工具可能会让您感兴趣,但是,它只分析文档结构而不是内容本身,因此不会拾取损坏的图像或内容流.

遗憾的是,由于难以详细分析PDF文件,实际上没有任何可以正确执行的免费工具,但我认为检查文档结构的工具总比没有好.