IText 7与C#acroforms在使用RTL时出现扁平化问题

IText 7与C#acroforms在使用RTL时出现扁平化问题,c#,pdf,itext,itext7,C#,Pdf,Itext,Itext7,我使用IText 7和C#以编程方式填充“acroForms”。 在处理RTL语言时,我发现了如何做到这一点 问题发生在我需要禁用(展平)输入字段时,该值消失 当我使用LTR(英语)时,这些值被禁用-变平,并且一切正常 守则: PdfDocument pdf = new PdfDocument(new PdfReader(@"C:\test\test.pdf"), new PdfWriter(@"C:\test\test2.pdf")); PdfAcroF

我使用IText 7和C#以编程方式填充“acroForms”。 在处理RTL语言时,我发现了如何做到这一点

问题发生在我需要禁用(展平)输入字段时,该值消失

当我使用LTR(英语)时,这些值被禁用-变平,并且一切正常

守则:

PdfDocument pdf = new PdfDocument(new PdfReader(@"C:\test\test.pdf"), new PdfWriter(@"C:\test\test2.pdf"));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true);
form.SetNeedAppearances(true);
IDictionary<String, PdfFormField> fields = form.GetFormFields();
PdfFormField toSet;
fields.TryGetValue("CM@SHEM_PRATI@1", out toSet);
toSet.SetValue("גגג");
form.PartialFormFlattening("CM@SHEM_PRATI@1");
form.FlattenFields();
pdf.Close();
PdfDocument pdf=新的PdfDocument(新的PdfReader(@“C:\test\test.pdf”)、新的PdfWriter(@“C:\test\test2.pdf”);
PdfAcroForm form=PdfAcroForm.GetAcroForm(pdf,true);
form.SetNeedAppearances(真);
IDictionary fields=form.GetFormFields();
PdfFormField-toSet;
字段。TryGetValue(“CM@SHEM_PRATI@1“,外接至设置);
设置设定值(“设定值”);
格式.部分模板(“CM@SHEM_PRATI@1");
form.flattfields();
pdf.Close();
我是否错过了平坦RTL插入字段的配置? 是否有其他方法可以使用C#Itext 7禁用输入字段?

问题已经解决。 我添加了itext7.pdfcalligraph附加组件。 然后将rtl字体添加到上述代码中:

PdfFont heb = PdfFontFactory.CreateFont(@"/path/to/font.ttf", "Identity-H", true);
toSet.SetFont(heb);
输入字段变平,仍然可以看到值。

问题解决了。 我添加了itext7.pdfcalligraph附加组件。 然后将rtl字体添加到上述代码中:

PdfFont heb = PdfFontFactory.CreateFont(@"/path/to/font.ttf", "Identity-H", true);
toSet.SetFont(heb);

输入字段变平,仍然可以看到值。

您是否检查了pdf中表单字段定义中的字体是否支持这些RTL图示符?Pdf查看器在填写时可以使用自己的替换字体,但并非所有Pdf处理器都必须这样做。此外,根据所讨论的脚本,可能需要书法附加组件。是的。我明白为了使用PdfCalligraph,我需要排版模块。没有官方许可证密钥,此模块无法工作。我使用的是ARTIAL版本,因为我还不知道IText是否适合我们的需要。您是否检查了pdf中表单字段定义中的字体是否支持这些RTL字形?Pdf查看器在填写时可以使用自己的替换字体,但并非所有Pdf处理器都必须这样做。此外,根据所讨论的脚本,可能需要书法附加组件。是的。我明白为了使用PdfCalligraph,我需要排版模块。没有官方许可证密钥,此模块无法工作。我使用心房版本,因为我还不知道IText是否适合我们的需要