如何以编程方式比较两个基于视觉差异的PDF?

时间:2014-01-23 14:59:42

标签: java apache pdf pdfbox apache-tika

我需要比较并获取两个PDF文件中的所有视觉差异。我知道在堆栈溢出方面存在一些与此相关的问题,但它们无法满足我的需求。

我目前正在使用PDFBox为PDF中的页面生成图像并比较图像的字节。

通过这种方法,我能够知道特定的页面有所不同。

但我需要找到一些更精细的细节,例如某些文字的字体大小,比如说 - “文字”的页码不同,比如说PDF中的6。

不仅仅是文字,我需要处理所有视觉差异,如图像,图表中的文字等。

请为此建议我。

PS:我尝试过使用Apache Tika,但我感觉它可以用来获取XHTML和元数据中的结构化文本。但我看到字体大小,字体八等细节没有出现在结构化文本中。如果我弄错了,请纠正我。

2 个答案:

答案 0 :(得分:2)

PDF to image using Java

Convert PDF to thumbnail image in Java(这里有一个pdf-renderer的例子)

https://www.google.com.br/search?q=PixelGraber&ie=utf-8&oe=utf-8&rls=org.mozilla:pt-BR:official&client=firefox-a&gws_rd=cr&ei=K1PhUqD2Jei0sQTQs4DoAw

A good library for converting PDF to TIFF?

Convert jpeg/png to an array of pixels in java

int pixels array to bmp in java

Finding pixel position

Get Pixel Color around an image

使用PDFBox提取文本:Extracting text from PDF file using pdfbox

PDFBox中有类用于检测字体位置,类型,大小以及可能(不深入搜索)其他设置。 (下面的链接)然后,您可以从两个PDF中提取文本,比较它们以检查文本是否相等,然后 - 如果它们相等 - 比较它们的格式。如果有不同的东西,请将其显示为另一个文本,图像或PDF。

http://pdfbox.apache.org/docs/1.8.3/javadocs/org/apache/pdfbox/util/TextPosition.html

http://pdfbox.apache.org/docs/1.8.2/javadocs/org/apache/pdfbox/pdmodel/graphics/PDFontSetting.html

答案 1 :(得分:0)

查看此Java包:https://java.net/projects/pdf-renderer

您可以将pdf转换为图像,然后将图像作为2D数组遍历,并比较这样的差异。