2012-09-10 84 views
6

是否可以使用PDFBox獲取單詞的位置,類似於「processTextPosition」? 似乎只對單個字符調用processTextPosition,將它們合併爲單詞的代碼是PDFTextStripper(在「normalize」)方法中的一部分,該方法返回文本的位置。 有沒有提取位置的方法/實用程序? (對於那些想知道動機是什麼 - 信息實際上是一個表,我們想檢測空白單元格) 感謝PDFBox - 獲取單詞的位置(不僅是字符')

+0

也許這會有所幫助:http://stackoverflow.com/questions/3203790/parsing-pdf-files-especially-with -tables-with-pdfbox/12545981#12545981 – impeto

+0

感謝您的建議。最終,我們的解決方案是更改writePage,以保留單詞與他們的位置(如您所發送的URL中所述)。然而,在我們的例子中,列的數量(和它們的位置)是未知的,我們需要根據信息的組織來找到它(例如 - 如果有很多行的單詞在位置Y開始= 100,那裏可能有一個表格列)。有沒有可以檢測到這種結構的組件?如果是這樣的話 - 當「Y」不是常量時,它是否也可以處理稍微旋轉的頁面? – user964797

+0

一種可能的方式是通過向PDFTextStripper類的processTextPosition()添加重寫並檢查單詞分隔符來追蹤字符。在單詞start上保留一個標記,並在單詞末尾保留一個標記,並在遇到分隔符。 – programer8

回答

1

將文字和自己的x和y位置在從PDF文件中提取文本你將具有擴展PdfTextStripper類,並使用自定義類從pdf文件例如

public class CustomPDFTextStripper extends PDFTextStripper{ 

    public CustomPDFTextStripper() throws IOException { 

    } 

    /** 
    * Override the default functionality of PDFTextStripper. 
    */ 

    @Override 
    protected void writeString(String text, List<TextPosition> textPositions) throws IOException{ 
     TextPosition firstProsition = textPositions.get(0); 
     writeString(String.format("[%s , %s , %s]", firstProsition.getTextPos().getXPosition(), 
       firstProsition.getTextPos().getYPosition(), text)); 

    } 
} 

提取文本創建此自定義類的一個對象,並提取文本作爲從而

PDFTextStripper pdfStripper = new CustomPDFTextStripper(); 
String text = pdfStripper.getText(*pdf file wrapped as a PDDocument object*); 

結果文本字符串的格式是[xposition,yposition,word],用默認的分隔符分隔

+0

對於PdfBox .net不起作用 –

相關問題