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 クラスの Javadoc とソースをスキャンしましたが、Java に精通しているだけでは解決策を見つけることができません。そして、当然のことながら、値を返すようにクラスの processTextPosition を変更しようとすると、このエラーが発生します (「PDF の processTextPosition(TextPosition) は、PDFTextStripper の processTextPosition(TextPosition) をオーバーライドできません」)。