我正在开发一个从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)
所以我问的是这个例外的目的:) 谢谢你们。
答案 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。