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

时间:2010-09-02 20:50:11

标签: pdf pdf-generation itextsharp ghostscript

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

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

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

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

2 个答案:

答案 0 :(得分:18)

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

 gswin32c.exe ^
       -o nul
       -sDEVICE=nullpage ^
        d:/path/to/file.pdf

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

 gs \
       -o /dev/null \
       -sDEVICE=nullpage \
        /path/to/file.pdf

(使用echo $?检查返回值是否为“无问题”的0值。)

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

答案 1 :(得分:13)

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

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

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

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

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

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