0

BIRTを使用して、データのグラフとデータの表を含むPDFレポートを生成しています。BIRT PDFを作成するTestNG単体テストがあり、作成したPDFをベースラインレポートと比較したいと思います。各レポートはフッターでタイムスタンプが付けられ、タイムスタンプは常に変更されるため、MD5ハッシュを使用できません。PDPageとPDResourcesを使用してPDFからすべての画像を取得しようとしましたが、PDResourcesオブジェクトからgetImagesを呼び出すと0枚の画像が返されるため、グラフは画像ではないようです。PDFBoxを使用して、同等性を検証するために取得してベースラインPDFと比較できるPDFの他の要素は何ですか?PDFの形式は次のとおりです。ページ1には、タイトル、開始日時ラベル、終了日時ラベル、レポートノート、1つ以上のグラフ、1つの表が含まれます。

4

1 に答える 1

0

私が使用した解決策は、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レポートと比較します。すべてのデータが均等に解析され、レポートが同じ場合は一致します。生成されたグラフを直接比較する方法を見つけられませんでした。

于 2013-02-04T21:14:54.737 に答える