我对org.apache.pdfbox.examples.util.printtextlocations进行了一些非常小的调整,但我无法弄清楚如何返回String,List或TextPosition对象。
通过此for循环设置PDF的解析:
for (int i=0; i<allPages.size(); i++ ) {
PDPage page = (PDPage)allPages.get( i );
System.out.println( "Processing page: " + i );
PDStream contents = page.getContents();
if( contents != null )
{
printer.processStream(page, page.findResources(),
page.getContents().getStream() );
}
}
以下是相关方法:
public void processTextPosition( TextPosition text ) {
System.out.println( "String[" + text.getXDirAdj() + "," +
text.getYDirAdj() + " fs=" + text.getFontSize() + " xscale=" +
text.getXScale() + " height=" + text.getHeightDir() + " space=" +
text.getWidthOfSpace() + " width=" +
text.getWidthDirAdj() + "]" + text.getCharacter() ); */
}
它将我想要的信息打印到控制台,但我希望能够返回TextPosition对象。
我已经浏览了org.apache.pdfbox.util.PDFTextStripper类的Javadocs和source,但是我对Java的熟悉程度还不足以找出解决方案。并且,毫不奇怪,如果我尝试在我的类中更改processTextPosition以返回值,那么它会产生此错误(PDF中的“processTextPosition(TextPosition)”不能覆盖PDFTextStripper中的processTextPosition(TextPosition)。)