gpt4 book ai didi

ItextSharp - Acrofields 是空的

转载 作者:行者123 更新时间:2023-12-03 20:21:50 38 4
gpt4 key购买 nike

我有一个已填写字段的 PDF 表单。如果我尝试阅读 acrofields,它们是空的。但在 PDF 中,我可以更改值并保存它们。

private static string GetFormFieldNamesWithValues(PdfReader pdfReader)
{
return string.Join("\r\n", pdfReader.AcroFields.Fields
.Select(x => x.Key + "=" +
pdfReader.AcroFields.GetField(x.Key))
.ToArray());
}

var reader = new PdfReader((DataContext as PDFContext).Datei);
AcroFields form = reader.AcroFields;
txt.Text = GetFormFieldNamesWithValues(reader);

如何读取字段?

最佳答案

很明显,您的 PDF 已损坏。这些字段在页面级别定义为 widget annotations,但在 文档根级别上设置的 /AcroForm 字段中没有引用它们 .

您可以使用 FixBrokenForm 修复您的 PDF。代码示例:

PdfReader reader = new PdfReader(src);
PdfDictionary root = reader.getCatalog();
PdfDictionary form = root.getAsDict(PdfName.ACROFORM);
PdfArray fields = form.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));
}
}
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
stamper.close();
reader.close();

您应该通知用于生成表单的工具的创建者,他们的 PDF 不符合 PDF 引用。

关于ItextSharp - Acrofields 是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22909979/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com