使用Apache PDFBox将PDF与页脚中的不同时间戳进行比较以确保相等性

时间:2013-01-21 14:55:29

标签: testng pdfbox birt

我正在使用BIRT生成包含数据图表和数据表格的PDF报告。我有创建BIRT PDF的TestNG单元测试,然后我想将创建的PDF与基线报告进行比较。我无法使用MD5哈希,因为每个报表都在页脚中加上时间戳,并且时间戳总是会更改。我尝试使用PDPage和PDResources从PDF获取所有图像,但图形似乎不是图像b / c从PDResources对象调用getImages返回0图像。使用PDFBox我可以抓取哪些PDF的其他元素并与基线PDF进行比较以验证相等性? PDF格式如下,第1页将包含标题,开始日期/时间标签,结束日期/时间标签,报告说明,后跟一个或多个图表,后跟1个表格。

1 个答案:

答案 0 :(得分:0)

我使用的解决方案是使用PDFBox解析BIRT PDF报告,但删除包含页脚的一串预定义文本并比较两个ArrayList。 pdfDoc = PDDocument.load(docname); List pages = pdfDoc.getDocumentCatalog().getAllPages(); Iterator iter = pages.iterator(); while(iter.hasNext()) { PDPage page = (PDPage) iter.next(); String unparsedLine = page.getContents().getInputStreamAsString(); documentStreamList.add(unparsedLine.replaceAll(DATE_FOOTER_FORMAT, "")); } 此代码将返回PDF包含的字符串列表,并将其与基线BIRT报告进行比较。所有数据都将被平均解析,并且报告在相同时匹配。我从未找到直接比较生成的图形的方法。