2011-05-02 21 views
1

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

(私はPDFBoxがうまくページの特定の矩形領域内のテキストを抽出知っている。しかし、画像のレンダリングがICEpdfでかなり良く働くので、私はそのライブラリを使用したいと思います。)

答えて

3

あなたがメソッドを呼び出すことができますページを表している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; 
    } 
+0

おかげでたくさんご入力のために、私はそれを仕事とここに掲載されます、あなたのソリューションは、(私は正確に動作しますすでにかなりクールです:あなたはすでに次のようにselectionRectangleは、コードは次のようになり持っていると仮定すると、しかしながら) – fabiangebert

2

あなたを持っていますicepdfフォーラムに投稿されていますか?彼らは通常、そこに質問に答えるのにとても良いですか?

関連する問題