ICEpdfを使用して特定の地域のテキストを抽出する方法はありますか?ページ全体を抽出することはできましたが、それは私がやりたいことではありません。
(PDFBoxは、ページの特定の長方形の領域のテキストをうまく抽出することを知っています。ただし、画像のレンダリングはICEpdfではるかにうまく機能するため、そのライブラリを使用したいと思います。)
ICEpdfを使用して特定の地域のテキストを抽出する方法はありますか?ページ全体を抽出することはできましたが、それは私がやりたいことではありません。
(PDFBoxは、ページの特定の長方形の領域のテキストをうまく抽出することを知っています。ただし、画像のレンダリングはICEpdfではるかにうまく機能するため、そのライブラリを使用したいと思います。)
ページを表すPageオブジェクトでは、次のメソッドを呼び出すことができます。
PageText pageText = document.getPageText(pagNumber);
バンドルの例と同様です。/examples/extraction/PageTextExtraction.java
PageTextオブジェクトには、ページのすべてのLineText->WordText->GlyphTextオブジェクトが含まれています。LineText、WordText、およびGlyphTextはすべて、getBounds()メソッドを持つAbstractTextを拡張します。これらのオブジェクトの境界は、第1の幾何学的象限であるPDFユーザースペースにあります。Java2Dは第4幾何学的象限にあります。すでにselectionRectangleがあるとすると、コードは次のようになります。
//現在選択されている状態、強調表示は無視します。
currentPage.getViewText()。clearSelected();
//ページ変換を取得します。すべての計算で同じです
AffineTransform pageTransform = currentPage.getPageTransform(
Page.BOUNDARY_CROPBOX、
documentViewModel.getViewRotation()、
documentViewModel.getViewZoom());
Rectangle2D.Float pageSpaceSelectRectangle =
convertRectangleToPageSpace(selectionRectangle、pageTransform);
ArrayList pageLines = pageText.getPageLines();
for(LineText pageLine:pageLines){
//封じ込めを確認します。封じ込めがある場合は、単語に分割します。
if(pageLine.getBounds()。intersects(pageSpaceSelectRectangle)){
//選択したテキストがあります。
}
}
/ **
*長方形をページ変換で指定されたスペースに変換します。これ
*は、選択長方形をページスペースに変換するためのユーティリティメソッドです。
*交差点を計算して、選択した状態を判別できるようにします。
*
*のスペースを変換する@parammouseRect長方形
*@parampageTransformページ変換
*@return変換された長方形。
* /
private Rectangle2D convertRectangleToPageSpace(Rectangle mouseRect、
AffineTransform pageTransform){
GeneralPath shapePath;
試す {
AffineTransform tranform = pageTransform.createInverse();
shapePath = new GeneralPath(mouseRect);
shapePath.transform(tranform);
shapePath.getBounds2D();を返します。
} catch(NoninvertibleTransformException e){
logger.log(Level.SEVERE、
"マウスポイントをページスペースに変換中にエラーが発生しました。"、e);
}
nullを返します。
}
icepdfフォーラムに投稿しましたか?彼らは通常そこで質問に答えるのがとても上手ですか?