Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iTextSharp未为PDF创建表单_C#_Pdf Generation_Itextsharp - Fatal编程技术网

C# iTextSharp未为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

现在我正在使用iTextSharp创建PDF。我们需要在这个PDF上放几个文本框供用户填写。PDF是动态生成的,因为它取决于用户输入的显示内容,这可以根据所选内容增加或减少页面计数。当我们使用iTextSharp时,adobe会看到这些字段,但会说“目前此PDF中没有表单字段…”。如果我在这个对话框中点击cancel,我会看到字段在PDF上,但有些地方不对劲。我在Aspose.PDF的试用版中加载了PDF,但它也看不到字段。我正在下面的代码示例中添加字段

            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。不是现有的。我们将该代代码复制到此代码,但失败了。