2012-04-09 82 views
0

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

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) 

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

回答

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

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

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

您可以看更多外观here