如何使用iText从pdf文件中提取数据

时间:2012-04-09 16:09:22

标签: java itext

我正在开发一个从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)

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

2 个答案:

答案 0 :(得分: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");

参考文献:

答案 1 :(得分:1)

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

还要确保PDF中有足够的页面。 (自您阅读第2页以来至少2页)或尝试使用parser.getTextFromPage(1)等来获取其他页面的内容。

您可以更多地查看here