gpt4 book ai didi

forms - 如何在不展平的情况下使用 itext 7 和 itextsharp 5.5.9 填写现有的 pdf 表单?

转载 作者:行者123 更新时间:2023-12-05 03:10:29 28 4
gpt4 key购买 nike

我正在尝试填写 USCIS 表格,填写后将其设置为只读(将其展平)。我不确定为什么要这样做。即使我没有任何代码来展平它。我搜索了堆栈溢出并尝试了许多不同的方法(使用 itextsharp 5.5.9 和 itext 7),但仍然不起作用。

这是我使用的示例代码

string src = @"https://www.uscis.gov/sites/default/files/files/form/i-90.pdf";
string dest = @"C:\temp\i-90Filled.pdf";

var reader = new PdfReader(src);
reader.SetUnethicalReading(true);
var writer = new PdfWriter(dest);

PdfDocument pdfDoc = new PdfDocument(reader, writer);


// add content
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdfDoc, true);

IDictionary<String, PdfFormField> fields = form.GetFormFields();

PdfFormField toSet;

fields.TryGetValue("form1[0].#subform[0].P1_Line3b_GivenName[0]", out toSet);
toSet.SetValue("John");

pdfDoc.Close();

最佳答案

使用 iTextSharp 5 可以像这样填充表单:

string src = @"https://www.uscis.gov/sites/default/files/files/form/i-90.pdf";
string dest = @"C:\temp\i-90Filled.pdf";

PdfReader pdfReader = new PdfReader(src);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(
dest, FileMode.Create));
AcroFields form = pdfStamper.AcroFields;
form.SetField("form1[0].#subform[0].P1_Line3b_GivenName[0]", "John");

请注意,您要填写的表格是混合表格。它包含两次形式的描述:一次作为 AcroForm;另一次作为 AcroForm;一次作为 XFA 表格。您可能希望通过添加以下行来删除 XFA 表单:

form.RemoveXfa();

有关更多信息,请阅读文档:

您的代码使用的是适用于 C# 的 iText 7。如果您希望该代码正常工作,您肯定需要删除 XFA 部分,因为 iText 7 不支持 XFA。 iText 7 是在考虑 PDF 2.0 的情况下开发的(该规范将于 2017 年发布)。 XFA 将在 PDF 2.0 中弃用。不允许有效的 PDF 2.0 文件包含 XFA 流。

关于forms - 如何在不展平的情况下使用 itext 7 和 itextsharp 5.5.9 填写现有的 pdf 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39648275/

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