C# iTextSharp未为PDF创建表单
现在我正在使用iTextSharp创建PDF。我们需要在这个PDF上放几个文本框供用户填写。PDF是动态生成的,因为它取决于用户输入的显示内容,这可以根据所选内容增加或减少页面计数。当我们使用iTextSharp时,adobe会看到这些字段,但会说“目前此PDF中没有表单字段…”。如果我在这个对话框中点击cancel,我会看到字段在PDF上,但有些地方不对劲。我在Aspose.PDF的试用版中加载了PDF,但它也看不到字段。我正在下面的代码示例中添加字段C# iTextSharp未为PDF创建表单,c#,pdf-generation,itextsharp,C#,Pdf Generation,Itextsharp,现在我正在使用iTextSharp创建PDF。我们需要在这个PDF上放几个文本框供用户填写。PDF是动态生成的,因为它取决于用户输入的显示内容,这可以根据所选内容增加或减少页面计数。当我们使用iTextSharp时,adobe会看到这些字段,但会说“目前此PDF中没有表单字段…”。如果我在这个对话框中点击cancel,我会看到字段在PDF上,但有些地方不对劲。我在Aspose.PDF的试用版中加载了PDF,但它也看不到字段。我正在下面的代码示例中添加字段 var txtN
var txtName1 = writer.AcroForm.AddSingleLineTextField("Name1","",_avenirDefault,Font.NORMAL, 72, writer.GetVerticalPosition(false) - 12, 275,writer.GetVerticalPosition(false) + 5);
txtName1.SetFieldFlags(PdfFormField.FF_REQUIRED);
我也试过,
var txtName1 = new TextField(writer,
new Rectangle(72, writer.GetVerticalPosition(false) - 12, 275,
writer.GetVerticalPosition(false) + 5), "Name1") { Options = BaseField.REQUIRED };
writer.AddAnnotation(txtName1 );
这两种方法都不能阻止错误在Adobe中显示或在Aspose库中查找字段。你知道为什么adobe会显示这些字段,但不会将其检测为表单字段吗?后一种方法(使用
新文本字段
和添加注释
)看起来应该有效;但是,所有上下文代码都丢失了,所以我不能确定。因此,请提供一个简单的、自包含的代码和一个PDF示例。Adobe和Aspose有问题。不,它不应该工作!不能将文本字段添加为批注。您需要writer.AddAnnotation(txtName1.GetTextField());若要将TextField实例更改为PdfFormField实例,请执行以下操作。@BrunoLowagie the writer.AcroForm.AddSingleLineTextField会为您执行此操作。我检查了iTextSharp源代码,它使用GetTextField()执行addannotation。我们还尝试将带有.AddKid的两个文本字段添加到另一个文本字段,然后添加该文本字段。它不起作用。奇怪的是它在另一个PDF上工作。每个PDF大约有1500行代码,所以我不能与so分享。当你说“它与另一个PDF一起工作”时,你的意思是你试图向现有PDF添加字段吗?如果你这样做了,那么PdfWriter
对你来说是一个错误的类…@BrunoLowagie我是说另一个PDF是另一个从零开始动态生成的PDF。不是现有的。我们将该代代码复制到此代码,但失败了。