我对 org.apache.pdfbox.examples.util.printtextlocations 做了一些非常小的调整,但我不知道如何返回 String、List 或 TextPosition 对象。
PDF 的解析是由这个 for 循环启动的:
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 和源代码,但是我对 Java 的熟悉不足以找出解决方案。而且,毫不奇怪,如果我尝试在我的类中更改 processTextPosition 以返回一个值,那么它会产生此错误(“PDF 中的 processTextPosition(TextPosition) 无法覆盖 PDFTextStripper 中的 processTextPosition(TextPosition)”。)