如何从PDF文件中提取数据使用iText的文件
问题描述:
我正在从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)
所以我问这个例外的目的:) 谢谢你们。
答
您尝试加载的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");
参考文献:
答
尝试更改文件位置。有时OS不允许其他应用程序从某些系统驱动器读取文件。放在D的某个地方:等等。
还要确保在PDF中有足够的页面。 (至少2页,因为你正在阅读第2页)或尝试与parser.getTextFromPage(1)
等从其他页面获取内容。
您可以看更多外观here。