2011-12-15 5 views
10

座標PDFBox PDFTextStripperByArea領域がどのような寸法及び方向で

PDFTextStripperByAreaの機能addRegion(String regionName, Rectangle2D rect)に矩形です。すなわち

矩形R開始とどのように大きなそれが(原点値の大きさ、矩形の寸法)あるず、どのような方向にそれが行くん(青い矢印の方向第2のパラメータとしてnew Rectangle(10,10,100,100)が与えられている場合は?

PdfBox rectangle

答えて

10
new Rectangle(10,10,100,100) 

ように10単位の左端とPDF文書の先頭から、矩形の位置(10,10)で、その左上隅を有するであろうことを意味します。ここで「単位」は1pt = 1/72インチである。

最初の100は矩形の幅を表し、2番目の高さはその高さを表します。 要約すると、右の画像が最初の画像です。

私は関数の引数として与えられたページの一部の領域を抽出するために、このコードを書いた:だから、

Rectangle2D region = new Rectangle2D.Double(x, y, width, height); 
String regionName = "region"; 
PDFTextStripperByArea stripper; 

stripper = new PDFTextStripperByArea(); 
stripper.addRegion(regionName, region); 
stripper.extractRegions(page); 

xとyは長方形の左上隅の絶対座標であり、そしてあなた幅と高さを指定します。 pageは、この関数の引数として与えられるPDPage変数です。

+2

単位はどれくらいですか? – ipavlic

+1

デフォルトの単位は私が考えるpt(ポイント)です。 –

+2

しかしPDFファイルの 'width' /' height'の合計を決めるには?つまり、PDFファイルの場合、「幅」(「高さ」)の大きさはどれくらいですか? –

1

はこのような何かをやってに探していたので、私は私が一緒に見つけたものを渡ししようと思いました。

ここでは、私の元のpdfをitextで作成するためのコードです。

import com.lowagie.text.Document 
import com.lowagie.text.Paragraph 
import com.lowagie.text.pdf.PdfWriter 

class SimplePdfCreator { 
    void createFrom(String path) { 
     Document d = new Document() 
     try { 
      PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream(path)) 
      d.open() 
      d.add(new Paragraph("This is a test.")) 
      d.close() 
     } catch (Exception e) { 
      e.printStackTrace() 
     } 
    } 
} 

pdfを開くと、左上隅にテキストが表示されます。ここであなたが探しているものを示すテストです。

@Test 
void createFrom_using_pdf_box_to_extract_text_targeted_extraction() { 
    new SimplePdfCreator().createFrom("myFileLocation") 
    def doc = PDDocument.load("myFileLocation") 
    Rectangle2D.Double d = new Rectangle2D.Double(0, 0, 120, 100) 
    def stripper = new PDFTextStripperByArea() 
    def pages = doc.getDocumentCatalog().allPages 
    stripper.addRegion("myRegion", d) 
    stripper.extractRegions(pages[0]) 
    assert stripper.getTextForRegion("myRegion").contains("This is a test.") 
} 

位置(0、0)は、ドキュメントの左上隅です。幅と高さは右下に向かっています。私はその範囲を少し下げて(35,52,120,3)、まだテストをパスすることができました。

すべてのコードはgroovyで書かれています。

関連する問題