使用pdfbox从pdf中提取字符坐标

时间:2017-12-04 12:02:03

标签: java pdf pdfbox

我正在尝试使用pdfbox库从PDF文件中提取所有字符的坐标。我使用了tutorialkart中的代码。但是当我执行代码时,坐标的提取从第2页开始,有时从第一页的中心开始。

我无法理解在pdfbox库中提取坐标的逻辑。 如果有人知道如何从所有页面中提取坐标,请帮助我。

以下是使用的代码..和输出快照...使用的PDF链接 - drive.google.com/open?id=1jPVcag8v8KDgWg_ziVO98sSb9qZV777p

snapshot

public class Coordinates extends PDFTextStripper {

    public Coordinates() throws IOException {
    }

    /**
     * @throws IOException If there is an error parsing the document.
     */
    public static void main( String[] args ) throws IOException    {
        PDDocument document = null;
        String fileName = "C:\\Users\\Amul123\\Desktop\\Axis\\Axis\\A.pdf";
        try {
            document = PDDocument.load( new File(fileName) );
            PDFTextStripper stripper = new Coordinates();
            stripper.setSortByPosition( true );

            stripper.setStartPage( 0 );
            stripper.setEndPage( document.getNumberOfPages() );

            Writer dummy = new OutputStreamWriter(new ByteArrayOutputStream());
            stripper.writeText(document, dummy);
        }
        finally {
            if( document != null ) {
                document.close();
            }
        }
    }

    /**
     * Override the default functionality of PDFTextStripper.writeString()
     */
    @Override
    protected void writeString(String string, List<TextPosition> textPositions) throws IOException {
        for (TextPosition text : textPositions) {
            System.out.println(text.getUnicode()+ " [(X=" + text.getXDirAdj() + ",Y=" +
                    text.getYDirAdj() + ") height=" + text.getHeightDir() + " width=" +
                    text.getWidthDirAdj() + "]");
        }
    }
}

0 个答案:

没有答案