Java - 从PDF中提取数据的问题(PDFBox - 2.02)

时间:2016-07-21 11:50:22

标签: java pdf pdfbox

我正在尝试从PDF文件中提取数据,该文件包含单独表格中的数据。转换为excel。基于此link因为我的需要或多或少相同,我使用PDFBOX jar进行提取。

要测试我是否可以首先从pdf中的不同表中提取数据,请尝试使用下面指定的代码。但它没有提取和给出一个错误陈述腐败对象引用,不知道它意味着什么。

为了查看pdf本身是否存在任何问题,我查看了https://online2pdf.com&它成功地将pdf文件转换为excel,因此我认为pdf文件没有问题。

希望我面临的问题很清楚&等待从pdf中提取数据需要做什么的输入

错误讯息:

2016-07-21 13:49:11 WARN  BaseParser:682 - Corrupt object reference at offset 6371
2016-07-21 13:49:11 WARN  BaseParser:682 - Corrupt object reference at offset 6373

java.io.IOException: Expected string 'null' but missed at character 'u' at offset 6376
    at org.apache.pdfbox.pdfparser.BaseParser.readExpectedString(BaseParser.java:1017)
    at org.apache.pdfbox.pdfparser.BaseParser.readExpectedString(BaseParser.java:1000)
    at org.apache.pdfbox.pdfparser.BaseParser.parseDirObject(BaseParser.java:879)
    at org.apache.pdfbox.pdfparser.BaseParser.parseCOSArray(BaseParser.java:651)
    at org.apache.pdfbox.pdfparser.PDFStreamParser.parseNextToken(PDFStreamParser.java:175)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStreamOperators(PDFStreamEngine.java:479)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processStream(PDFStreamEngine.java:446)
    at org.apache.pdfbox.contentstream.PDFStreamEngine.processPage(PDFStreamEngine.java:149)
    at org.apache.pdfbox.text.PDFTextStreamEngine.processPage(PDFTextStreamEngine.java:136)
    at org.apache.pdfbox.text.PDFTextStripper.processPage(PDFTextStripper.java:391)
    at org.apache.pdfbox.text.PDFTextStripper.processPages(PDFTextStripper.java:319)
    at org.apache.pdfbox.text.PDFTextStripper.writeText(PDFTextStripper.java:266)
    at org.apache.pdfbox.text.PDFTextStripper.getText(PDFTextStripper.java:227)
    at main.Test.readPDF(Test.java:170)
    at main.Test.main(Test.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

代码:

public static void main(String[] args){
try {
        File filePDF = new File("C:\\test.pdf");
        PDDocument document = PDDocument.load(filePDF);
        PDFTextStripper s = new PDFTextStripper();
        String content = s.getText(document);
        System.out.println(content);
    } catch (IOException e) {
            e.printStackTrace();
    }
}

1 个答案:

答案 0 :(得分:0)

最后找到一个jar(PDFxStream)文件,在这种情况下从PDF中提取所有数据。虽然它是付费版本,但它能够提取其他付费版本无法提取的完整信息。

唯一的是,它提取为String&我需要解析这个String&从中提取特定信息。