ICEpdfを使用して特定の領域のテキストを抽出する方法はありますか?私は全ページを抽出することができましたが、それは私がしたいことではありません。ICEpdfを使用してPDFページの特定の領域にテキストを抽出する
(私はPDFBoxがうまくページの特定の矩形領域内のテキストを抽出知っている。しかし、画像のレンダリングがICEpdfでかなり良く働くので、私はそのライブラリを使用したいと思います。)
ICEpdfを使用して特定の領域のテキストを抽出する方法はありますか?私は全ページを抽出することができましたが、それは私がしたいことではありません。ICEpdfを使用してPDFページの特定の領域にテキストを抽出する
(私はPDFBoxがうまくページの特定の矩形領域内のテキストを抽出知っている。しかし、画像のレンダリングがICEpdfでかなり良く働くので、私はそのライブラリを使用したいと思います。)
あなたがメソッドを呼び出すことができますページを表しているPageオブジェクトON:
バンドル例./examples/extraction/PageTextExtraction.javaと同様に
PageText pageText = document.getPageText(pagNumber);
PageTextオブジェクトはすべてLINETEXTが含まれています - > WordText-> GlyphTextオブジェクトを開きます。 LineText、WordTextおよびGlyphTextはすべて、getBounds()メソッドを持つAbstractTextを拡張します。これらのオブジェクトの境界は、PDFユーザー空間、第1の幾何四分円にあります。 Java2Dは4番目の幾何四分円にあります。 、
// the currently selected state, ignore highlighted. currentPage.getViewText().clearSelected(); // get page transform, same for all calculations 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) { // check for containment, if so break into words. if (pageLine.getBounds().intersects(pageSpaceSelectRectangle)) { // you have some selected text. } } /** * Converts the rectangle to the space specified by the page tranform. This * is a utility method for converting a selection rectangle to page space * so that an intersection can be calculated to determine a selected state. * * @param mouseRect rectangle to convert space of * @param pageTransform page transform * @return converted rectangle. */ private Rectangle2D convertRectangleToPageSpace(Rectangle mouseRect, AffineTransform pageTransform) { GeneralPath shapePath; try { AffineTransform tranform = pageTransform.createInverse(); shapePath = new GeneralPath(mouseRect); shapePath.transform(tranform); return shapePath.getBounds2D(); } catch (NoninvertibleTransformException e) { logger.log(Level.SEVERE, "Error converting mouse point to page space.", e); } return null; }
あなたを持っていますicepdfフォーラムに投稿されていますか?彼らは通常、そこに質問に答えるのにとても良いですか?
おかげでたくさんご入力のために、私はそれを仕事とここに掲載されます、あなたのソリューションは、(私は正確に動作しますすでにかなりクールです:あなたはすでに次のようにselectionRectangleは、コードは次のようになり持っていると仮定すると、しかしながら) – fabiangebert