BIRTを使用して、データのグラフとデータの表を含むPDFレポートを生成しています。BIRT PDFを作成するTestNG単体テストがあり、作成したPDFをベースラインレポートと比較したいと思います。各レポートはフッターでタイムスタンプが付けられ、タイムスタンプは常に変更されるため、MD5ハッシュを使用できません。PDPageとPDResourcesを使用してPDFからすべての画像を取得しようとしましたが、PDResourcesオブジェクトからgetImagesを呼び出すと0枚の画像が返されるため、グラフは画像ではないようです。PDFBoxを使用して、同等性を検証するために取得してベースラインPDFと比較できるPDFの他の要素は何ですか?PDFの形式は次のとおりです。ページ1には、タイトル、開始日時ラベル、終了日時ラベル、レポートノート、1つ以上のグラフ、1つの表が含まれます。
1 に答える
私が使用した解決策は、PDFBoxを使用してBIRT PDFレポートを解析することでしたが、フッターを含む事前定義されたテキストの文字列を削除し、2つの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レポートと比較します。すべてのデータが均等に解析され、レポートが同じ場合は一致します。生成されたグラフを直接比較する方法を見つけられませんでした。