Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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# iText7在Adobe Acrobat中不显示填充表单字段和条形码_C#_Itext_Itext7 - Fatal编程技术网

C# iText7在Adobe Acrobat中不显示填充表单字段和条形码

C# iText7在Adobe Acrobat中不显示填充表单字段和条形码,c#,itext,itext7,C#,Itext,Itext7,我试图使用itext7在pdf表单上进行邮件合并,但是当我在Adobe中打开表单时,字段没有填写 在Chrome中打开同一表单将显示填充的字段 此外,表单上还有一个计算过的条形码,在Adobe中通过itext7后再次中断,但不是Chrome,即使我没有更新条形码表单字段 是否有人知道我要设置的标志,或者这是itext7的已知问题 我试图合并的表单是 由于某些原因,当前版本的条形码目前缺失,但在其他情况下是相同的形式 我试图确定这是itext7的问题,还是我的代码的问题,所以我知道我是否应该评估另

我试图使用itext7在pdf表单上进行邮件合并,但是当我在Adobe中打开表单时,字段没有填写

在Chrome中打开同一表单将显示填充的字段

此外,表单上还有一个计算过的条形码,在Adobe中通过itext7后再次中断,但不是Chrome,即使我没有更新条形码表单字段

是否有人知道我要设置的标志,或者这是itext7的已知问题

我试图合并的表单是

由于某些原因,当前版本的条形码目前缺失,但在其他情况下是相同的形式

我试图确定这是itext7的问题,还是我的代码的问题,所以我知道我是否应该评估另一个PDF库

使用iText.Forms;
使用iText.Kernel.Pdf;
使用制度;
使用系统数据;
使用System.IO;
使用System.Linq;
名称空间PDF\u合并
{
公共类pdf\u合并\u txt
{
静态void Main(字符串[]参数)
{
//args=new[]{“form.pdf”,“data.txt”}
var filePath=Path.GetDirectoryName(args[0]);
var fileName=Path.GetFileNameWithoutExtension(args[0]);
var extension=Path.GetExtension(args[0]);
如果(args.Length==2)
{
使用(FileStream stream=newfilestream(args[1],FileMode.Open,FileAccess.Read))
{
var outfile=Path.ChangeExtension(args[1],“pdf”);
var pdfDoc=new PdfDocument(new PdfReader(args[0])。SetUnethicalReading(true),new PdfWriter(outfile));
var form=PdfAcroForm.GetAcroForm(pdfDoc,true);
form.SetGenerateAppearance(true);
var fields=form.GetFormFields();
foreach(文件.ReadAllLines(args[1])中的var行)
{
var parts=line.Trim();
var field=fields.Where(f=>f.Key.EndsWith(parts[0])).OrderBy(f=>f.Key.Length)。选择(f=>f.Value.FirstOrDefault();
如果(字段!=null)
{
field.SetValue(部分[1].Trim());
}
}
pdfDoc.Close();
}
}
}
}
}
data.txt如下所示:

form1[0].#subform[0].Line6_EMail[0]:=email@address.com
form1[0].#subform[0].Line4_DaytimeTelephoneNumber[0]:=123456789
form1[0].#subform[0].Line7_MobileTelephoneNumber[0]:=0987654321
form1[0].#subform[0].Line2c_MiddleName[0]:=Anon
form1[0].#subform[0].Line2b_GivenName[0]:=John
form1[0].#subform[0].Line2a_FamilyName[0]:=Doe

很可能您有一个混合表单(AcroForm和XFA)。删除xfa部件应该可以。@mkl我在发布这篇文章后尝试过,但没有成功。我只是测试了一下。对于您的文档副本,a
form.RemoveXfaForm()
就足够了,对于来自政府网站的文档,还需要a
pdfDoc.GetCatalog().Remove(PdfName.Perms)