質問

ICEPDFを使用して特定の領域のテキストを抽出する方法はありますか?私はページ全体を抽出することができましたが、それは私がやりたいことではありません。

(PDFBOXは、ページの特定の長方形の領域でテキストをうまく抽出していることを知っています。ただし、画像レンダリングはICEPDFでより良く機能するため、そのライブラリを使用したいと思います。)

役に立ちましたか?

解決

ページを表すページオブジェクトでは、メソッドを呼び出すことができます。

PageText pageText = document.getPageText(pagNumber);

バンドルの例と同様。/examples/extraction/pagetextextraction.java

Pagetextオブジェクトには、すべてのLinetext-> wordText->ページのGlyphTextオブジェクトが含まれています。 linetext、wordtext、およびglyphtextはすべて、getbounds()メソッドを備えたAbstractTextを拡張します。これらのオブジェクトの境界は、最初の幾何学的象限であるPDFユーザースペースにあります。 Java2dは4番目の幾何学的象限にあります。既にselection -rectangleがあると仮定すると、コードは次のとおりです。

//  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フォーラムに投稿しましたか?彼らは通常、そこで質問に答えるのが非常に得意ですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top