我正在使用BIRT生成包含数据图表和数据表格的PDF报告。我有创建BIRT PDF的TestNG单元测试,然后我想将创建的PDF与基线报告进行比较。我无法使用MD5哈希,因为每个报表都在页脚中加上时间戳,并且时间戳总是会更改。我尝试使用PDPage和PDResources从PDF获取所有图像,但图形似乎不是图像b / c从PDResources对象调用getImages返回0图像。使用PDFBox我可以抓取哪些PDF的其他元素并与基线PDF进行比较以验证相等性? PDF格式如下,第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报告进行比较。所有数据都将被平均解析,并且报告在相同时匹配。我从未找到直接比较生成的图形的方法。