我正在嘗試使用PDFBox 2.0進行文本提取。我想獲得有關特定字符的字體大小和頁面上該字符的位置矩形的信息。 我使用PDFTextStripper在PDFBox的1.6實現了這個:使用PDFBox 2.0從PDF中提取文本
PDFParser parser = new PDFParser(is);
try{
parser.parse();
}catch(IOException e){
}
COSDocument cosDoc = parser.getDocument();
PDDocument pdd = new PDDocument(cosDoc);
final StringBuffer extractedText = new StringBuffer();
PDFTextStripper textStripper = new PDFTextStripper(){
@Override
protected void processTextPosition(TextPosition text) {
extractedText.append(text.getCharacter());
logger.debug("text position: "+text.toString());
}
};
textStripper.setSuppressDuplicateOverlappingText(false);
for(int pageNum = 0;pageNum<pdd.getNumberOfPages();pageNum++){
PDPage page = (PDPage) pdd.getDocumentCatalog().getAllPages().get(pageNum);
textStripper.processStream(page, page.findResources(), page.getContents().getStream());
}
pdd.close();
但是在2.0版本PDFBox的中,processStream
方法已被刪除。 我怎樣才能達到與PDFBox 2.0相同?
我已經試過如下:
PDDocument pdd = PDDocument.load(inputStream);
PDFTextStripper textStripper = new PDFTextStripper(){
@Override
protected void processTextPosition(TextPosition text){
int pos = PDFdocument.length();
String textadded = text.getUnicode();
Range range = new Range(pos,pos+textadded.length());
int pagenr = this.getCurrentPageNo();
Rectangle2D rect = new Rectangle2D.Float(text.getX(),text.getY(),text.getWidth(),text.getHeight());
}
};
textStripper.setSuppressDuplicateOverlappingText(false);
for(int pageNum = 0;pageNum<pdd.getNumberOfPages();pageNum++){
PDPage page = (PDPage) pdd.getDocumentCatalog().getPages().get(pageNum);
textStripper.processPage(page);
}
pdd.close();
的processTextPosition(TextPosition text)
方法不會被調用。 任何建議將非常受歡迎。
P請看源代碼中的DrawPrintTextLocations示例,這就是您顯然想要做的。它使用writeString()調用。 –
謝謝,那個例子完全是我在找的東西。 –