使用java比较两个pdf文件(方法)

时间:2013-08-14 07:36:33

标签: java pdfbox apache-tika

我需要编写一个比较两个pdf文件的java类,并指出差异(文本/位置/字体的差异)  使用某种突出显示。 我最初的方法是使用pdfbox使用pdfbox解析文件,并使用一些数据结构存储提取的文本,这将有助于我进行比较。 是否有任何java库可以提取文本,保留格式,帮助我索引和比较。我可以使用tika / google的差异匹配。 tika以xhtml的形式提取文本,但我如何比较两个xhtml文件?

5 个答案:

答案 0 :(得分:6)

我必须在项目中比较大量的pdf文件。我的要求是逐个像素地比较pdf文件。经过大量的谷歌搜索,因为我找不到任何好的东西,我最终为此目的创建了自己的pdf实用程序。

请查看此博客了解更多详情& jar下载。

http://www.testautomationguru.com/introducing-pdfutil-to-compare-pdf-files-extract-resources/

答案 1 :(得分:1)

如您所述,pdfbox提取其内容,然后使用google's diff进行比较。

答案 2 :(得分:0)

在比较PDF文档时检查此post。记下这条线;

  

PDF是一种灵活的文件格式,您可以在其中执行许多操作   不同的方法。因此,您可以创建2个不同的PDF版本   使用Acrobat和Ghostscript的文件(作为示例)。文件会   (希望)是完全相同的。但文件大小不同   每个人的内部结构会有很大差异

答案 3 :(得分:0)

我不知道你是否能解决问题。这是我解决这个问题的方法。

首先,让我们使用Pdf2dom将PDF转换为HTML,然后使用daisydiff生成HTML格式的比较报告。如果需要PDF,则将该HTML报告转换为PDF。但请记住,由于PDF的复杂性,PDF到HTML的转换并非100%准确。您还可以尝试另一种将PDF转换为图像并将像素与像素进行比较并生成PDF报告的方法。您可以尝试使用PDFcompare库。它看起来很有希望。如果有人已经尝试过,请告诉我。

答案 4 :(得分:-1)

请参阅以下给出的pdf比较示例代码。

ZPDFCompare obj = new ZPDFCompare();
obj.pdfcompare("C:\\Users\\Desktop\\expectedFile.pdf", "C:\\Users\\Desktop\\actualFile.pdf", "C:\\Users\\Desktop\\expectedFile_Diff.pdf","C:\\Users\\tarun.kumar\\Desktop\\actualFile_Diff.pdf");

zeonpad提供了用于pdf比较的免费java api。