【问题标题】:iTextSharp AcroField.SetFieldProperty issueiTextSharp AcroField.SetFieldProperty 问题
【发布时间】:2015-09-02 13:53:07
【问题描述】:

我有 AcroField:

AcroFields field = stamper.AcroFields;

我正在使用这些 BaseFont 和字体设置:

string fontName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Fonts), "times.ttf");
BaseFont bf = BaseFont.CreateFont(fontName, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font font = new Font(bf,12);

当我设置 field.SetFieldProperty(fieldName,"12",12.0f,null); 并尝试导出我的 pdf 时,所有用西里尔字母编写的文本都不会显示。我尝试了几种不同的方法来解决这个问题,但没有一个能帮助我。

我不太确定这些字体设置究竟如何应用于 AcroFields

如果有人对此有所了解或可以指导我到某个地方,请告诉我。

【问题讨论】:

    标签: c# itextsharp acrofields


    【解决方案1】:

    如果您正在处理 Acro 字段,那么下面的 sn-p 很有用:

            var memStream = new MemoryStream();
            var stamper = new PdfStamper(reader, memStream);
            AcroFields form = stamper.AcroFields;
            foreach(string key in form.Fields.Keys)
            {
                form.SetFieldProperty(key, "textsize", (float)7, null);
                form.SetFieldProperty(key, "textfont", bfArialUniCode, null);
                form.RegenerateField(key);
            }
    

    【讨论】:

    • 通过添加 form.AddSubstitutionFont(bfArialUniCode);这对我很有用。感谢您的贡献。
    【解决方案2】:

    您正在使用带有错误参数的SetFieldProperty"12" 不是字段属性。我假设您要更改字体和字体大小。这样做是这样的:

    field.setFieldProperty(fieldName, "textfont", bf, null);
    field.SetFieldProperty(fieldName, "textsize", 12f, null);
    

    您可以使用其他替代方案;你可以为完整的表单定义一个替换字体:

    field.AddSubstitutionFont(bf);
    

    现在bf可以用作所有字段的替换字体;您不必为每个单独的字段设置字段属性。

    【讨论】:

    • 它不起作用。字体大小始终相同。我尝试了不同的大小值,如 6f、18f、28f,但没有变化。我也尝试了替代方式 field.AddSubstitutionFont(bf) 但它也不起作用。我觉得做错了什么……
    • 如果嵌入字体会怎样?您确定路径fontname 正确吗?您确定fieldName 的值是PDF 表单中的实际字段吗?
    • 是的,我确定 fieldName 因为我通过 foreach 循环得到它,并且我之前在 pdf 中创建了它们的名称。字体名称及其路径也是正确的,因为它嵌入在项目的模板文件夹中。但经过所有的努力,我想我找到了问题所在。我使用 Nitro Pro 试用版。使用这个软件,我创建了可编辑的 acro 字段。当我检查它时,它有不同的字体大小和不同的字体类型。
    • 所以我想这会有所作为,你是对的。 iTextSharp 工作正常,但是当字节流转到 pdf 时,AcroFields 如何应用它们的值大小和字体类型,就像它应用模板格式,如 \t、\n、矩形大小、边距等。我会尝试,如果你愿意,我会让你知道结果是什么。谢谢你的时间伙伴。我很感激。
    • @BrunoLowagie 我确实设置了 field.AddSubstitutionFont(bf);但由于某种原因我需要为每个字段设置它不起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-06-20
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多