我使用带有C#的IText 7来填充";acroForms";程序化。在处理RTL语言时,我发现了如何做到这一点。
当我需要禁用(展平(输入字段时,该值就会消失。
当我使用LTR(英语(时,值被禁用-扁平化,一切都很好。
代码:
PdfDocument pdf = new PdfDocument(new PdfReader(@"C:testtest.pdf"), new PdfWriter(@"C:testtest2.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();
我是否错过了用于展平RTL插入字段的配置?有没有其他方法可以用C#Itext 7禁用输入字段?
问题已经解决。我添加了itext7.pdfcalligraph插件。然后在上面的代码中添加了一个rtl字体:
PdfFont heb = PdfFontFactory.CreateFont(@"/path/to/font.ttf", "Identity-H", true);
toSet.SetFont(heb);
输入字段变平,仍然可以看到该值。