我们已经通过模板创建了PDF文件,并使用数据库中的值填充字段。 "Name field" = "value".
现在我们想要读取我们之前创建的PDF文件中某个字段的值。
CODE
reader = new PdfReader("C:\\temp\\letter.pdf");
baos = new ByteArrayOutputStream();
stamper = new PdfStamper(reader, baos);
form = stamper.getAcroFields();
System.out.println(form.getField("CUSTOMER-NAME"));
但是当我这样做时返回“null”并且它不识别任何字段。就好像字段不存在一样。
任何帮助都会受到赞赏。感谢。
您好, 我有2种文件类型。一个被夷为平地:-(另一个没有。 对于最后一个文件,我正在使用此代码并且它可以工作:
PdfReader reader = new PdfReader(FILE);
PdfDictionary root = reader.getCatalog();
PdfDictionary form1 = root.getAsDict(PdfName.ACROFORM);
PdfArray fields = form1.getAsArray(PdfName.FIELDS);
PdfDictionary page;
PdfArray annots;
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
page = reader.getPageN(i);
annots = page.getAsArray(PdfName.ANNOTS);
for (int j = 0; j < annots.size(); j++) {
fields.add(annots.getAsIndirectObject(j));
}
}
AcroFields form2 = reader.getAcroFields();
非常感谢!!! 问候, 穆尼
答案 0 :(得分:0)
正如布鲁诺所说 - 如果你只想阅读,只能使用PdfReader ......
尝试以下代码,看看是否打印出来的东西:
PdfReader reader = new PdfReader("C:\\temp\\letter.pdf");
AcroFields acroFields = reader.getAcroFields();
Map<String, AcroFields.Item> fields = acroFields.getFields();
Iterator<Entry<String, Item>> it = fields.entrySet().iterator();
while (it.hasNext()) {
Entry<String, Item> entry = it.next();
String value = acroFields.getField(entry.getKey());
System.out.println(entry.getKey()+":"+value);
}
找不到您的字段可能有很多原因:
你能看到例如中的字段吗? adobe reader?