0

我正在开发一个从 PDF 文件中提取数据的程序,并且我使用 iText 作为 java 库。当我尝试使用此方法打开文件时:

public static void main(String[] args) {
    try {
        // TODO code application logic here

        PdfReader pr=new FdfReader("C:\\Users\\saviour\\Desktop\\doc308-999.pdf");

        String str=PdfTextExtractor.getTextFromPage(pr, 2); 
        System.out.println(str);

    } catch (IOException ex) {
        Logger.getLogger(PDFTests.class.getName()).log(Level.SEVERE, null, ex);
    }

}

我有这个错误:

com.itextpdf.text.exceptions.InvalidPdfException: FDF header signature not found.
    at com.itextpdf.text.pdf.PRTokeniser.checkFdfHeader(PRTokeniser.java:215)
    at com.itextpdf.text.pdf.FdfReader.readPdf(FdfReader.java:95)
    at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:169)
    at com.itextpdf.text.pdf.PdfReader.<init>(PdfReader.java:158)
    at com.itextpdf.text.pdf.FdfReader.<init>(FdfReader.java:63)
    at pdftests.PDFTests.main(PDFTests.java:39)

所以我在问这个例外的目的:) 谢谢你们。

4

2 回答 2

1

您尝试加载的 pdf 文件有可能不是 pdf 文件。或者它不包含 FDF 表格。请阅读有关InvalidPdfException的 javadoc 。

您可以尝试以下代码更改并获得预期结果。
更改PdfReader pr=new FdfReader("C:\\Users\\saviour\\Desktop\\doc308-999.pdf");
PdfReader pr=new PdfReader("C:\\Users\\saviour\\Desktop\\doc308-999.pdf");

参考:

于 2012-04-09T19:08:10.067 回答
1

尝试更改文件位置。有时操作系统不允许其他应用程序从某些系统驱动器读取文件。放在某处 D: 等。

还要确保 PDF 中有足够的页面。(至少 2 页,因为您正在阅读第 2 页)或尝试使用parser.getTextFromPage(1)etc. 从其他页面获取内容。

你可以多看这里

于 2012-04-11T06:27:29.850 回答