PdfReader reader = new PdfReader("E:\\document\\6imm5562e.pdf");
PdfDocument doc = new PdfDocument(reader);
String textFromPage = PdfTextExtractor.getTextFromPage(doc.getPage(1));
System.out.println(textFromPage);错误消息如下:
请稍候... 如果此消息最终未被文档的适当内容替换,则PDF查看器可能无法显示这种类型的文档。 通过访问下载,您可以升级到最新版本的、Mac或Linux。 有关Adobe的更多帮助,请访问http://www.adobe.com/go/acrreader。 Windows是微软公司在美国和/或其他国家的注册商标或商标。Mac是苹果公司的商标,在美国和其他国家注册。Linux是Linus在美国和其他国家的注册商标。
发布于 2019-12-27 11:33:24
还不完全清楚您想提取哪些数据,因此我将提供两个选择:
1)您希望从PDF中提取静态文本(此解决方案需要pdfXFA,通过使用扁平法):
public void readXFA() throws IOException, InterruptedException {
final XFAFlattener xfaFlattener = new XFAFlattener();
xfaFlattener.flatten(new FileInputStream(INPUT_XFA),
new FileOutputStream(FLATTENED));
final PdfDocument doc = new PdfDocument(new PdfReader(FLATTENED));
String textFromPage = PdfTextExtractor.getTextFromPage(doc.getPage(1));
System.out.println(textFromPage);
}此代码将首先将您的表单扁平,然后在扁平的PDF文件上使用您的代码。
2)您希望提取表单上填充的数据(为此,只需要iText 7 Core和方法getXfaFieldValue):
public void readXFA() throws IOException {
final String INPUT_XFA = "c:\\temp\\imm5562e.pdf";
try (PdfDocument pdf = new PdfDocument(new PdfReader(INPUT_XFA))) {
XfaForm xfaForm = PdfAcroForm.getAcroForm(pdf, false).getXfaForm();
System.out.println(xfaForm.getXfaFieldValue("TextField2"));
}
}我猜从技术上来说,您可以使用第一种方法来提取这两个数据,但是这样就失去了XFA从表单中提取数据的能力。
https://stackoverflow.com/questions/59449727
复制相似问题