【发布时间】:2015-02-18 16:17:51
【问题描述】:
我们通过模板创建了 PDF 文件,并使用数据库中的值填充字段。 "Name field" = "value".
现在我们要读取我们之前创建的 PDF 文件中某个字段的值。
代码
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();
非常感谢!!! 问候, 市政
【问题讨论】:
-
从来没有 iText 版本 2.7.1。假设您使用的是 iText 2.1.7,您应该阅读 stackoverflow.com/questions/25696851/… 如果您想要回答您的问题,您必须提供
letter.pdf以供检查。最后:如果您只想读取字段值:您到底为什么要创建PdfStamper实例? -
好像这些领域不存在 - 你可能把公司弄平了吗?
-
感谢 Pankajparkar。我很抱歉我的错误...我怎样才能附加 PDF 文件?
标签: java pdf-generation itext