You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用IText 7(C#)处理RTL语言AcroForms时扁平化字段值消失问题求助

解决iText 7 C#中RTL字段扁平化后内容消失的问题

我之前处理过iText 7中RTL(如希伯来语)字段扁平化的类似问题,这个坑主要出在RTL文本的外观生成逻辑和LTR不一样,默认的扁平化流程没正确处理它的渲染规则。结合你的代码,我给你几个可行的解决方案:

1. 手动设置RTL字段的对齐属性并强制生成外观

RTL文本需要设置字段的右对齐属性,并且强制重新生成字段外观,确保扁平化前内容已经被正确渲染到PDF中:

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;

if (fields.TryGetValue("CM@SHEM_PRATI@1", out toSet))
{
    // 设置RTL文本内容
    toSet.SetValue("גגג");
    // 配置字段为右对齐(RTL文本必须的属性)
    toSet.SetQuadding(PdfFormField.Q_RIGHT);
    // 强制重新生成字段外观,确保RTL文本被正确渲染
    toSet.RegenerateField();
}

form.PartialFormFlattening("CM@SHEM_PRATI@1");
form.FlattenFields();
pdf.Close();

2. 确保字段使用支持RTL的字体

如果你的PDF模板字段默认字体不支持希伯来语等RTL语言,也会导致外观生成失败。可以手动指定支持RTL的字体:

// 加载支持RTL的字体(比如Arial Unicode MS,确保字体文件路径正确)
PdfFont rtlFont = PdfFontFactory.CreateFont(@"C:\fonts\ARIALUNI.TTF", PdfEncodings.IDENTITY_H);

if (fields.TryGetValue("CM@SHEM_PRATI@1", out toSet))
{
    toSet.SetFont(rtlFont);
    toSet.SetValue("גגג");
    toSet.SetQuadding(PdfFormField.Q_RIGHT);
    toSet.RegenerateField();
}

其他禁用输入字段的方法(无需扁平化)

如果你只是想禁用字段让用户无法编辑,不需要完全扁平化,可以直接设置字段为只读模式,这样RTL文本也能正常保留:

PdfDocument pdf = new PdfDocument(new PdfReader(@"C:\test\test.pdf"), new PdfWriter(@"C:\test\test2.pdf"));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true);
IDictionary<String, PdfFormField> fields = form.GetFormFields();
PdfFormField toSet;

if (fields.TryGetValue("CM@SHEM_PRATI@1", out toSet))
{
    toSet.SetValue("גגג");
    toSet.SetQuadding(PdfFormField.Q_RIGHT);
    // 设置字段为只读,禁用编辑
    toSet.SetReadOnly(true);
}

pdf.Close();

关键原因总结

扁平化字段时,iText会把字段的外观内容转化为普通PDF内容。RTL文本因为排版方向特殊,默认的SetNeedAppearances(true)可能无法正确生成它的外观,所以需要手动指定对齐属性并强制触发外观重建,确保内容在扁平化前已经被正确渲染。

内容的提问来源于stack exchange,提问作者Victor Rodniansky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 12:47:42