3

我正在使用 PdfStamper 在运行时创建 PDF。我的问题是我无法增加 PDF 字段的字体大小。我试过这个,但没有运气,

stamper.AcroFields.SetFieldProperty("names", "textsize", 4f, null);
Font font = FontFactory.GetFont(FontFactory.COURIER, 2f, iTextSharp.text.Font.BOLD);    
stamper.AcroFields.AddSubstitutionFont(font.BaseFont);
4

4 回答 4

13

我让它工作了

stamper.AcroFields.SetFieldProperty("names", "textsize", 4f, null);

但必须在填写字段之前设置

于 2014-02-25T15:50:48.777 回答
6

您使用的是哪个版本的 iTextSharp?我有 5.0.6.0,以下代码行对我有用:

stamper.AcroFields.SetFieldProperty("SomeDateField", "textsize", 8f, null);

但是,我遇到了一个奇怪的问题......只有当该字段的字体大小设置为Auto. 当它设置为固定字体大小时,我似乎无法通过代码更改它(我尝试了几种不同的方法)。

如果您在 Acrobat 中将该字段设置为 Auto font-size,您是否会遇到同样的情况,我会很好奇。

于 2012-10-05T22:53:02.683 回答
2

据我所知,字体大小似乎完全与文本字段的水平和垂直宽度相关。我已经尝试了一些过程来尝试在运行时“重新调整”文本的大小,但没有一个产生任何结果。我能够产生的唯一“误报”是当我手动调整文本字段的大小时。抱歉,这对解决您的问题没有多大帮助,我只是想我会分享我遇到同样问题的经验。不过,我会留意任何解决方案,如果您设法为此提出解决方案,请发布它,因为这将是非常有价值的知识。

于 2012-08-03T20:45:32.453 回答
0

要更改每个表单字段的字体大小,您可以这样做:

using (PdfReader pdfReader = new PdfReader(fileInfo.FullName))
{
    using (var ms = new MemoryStream())
    {
        using (var pdfStamper = new PdfStamper(pdfReader, ms))
        {
            SetAcroFields(pdfStamper, myModel);

            // flatten the form to remove editting options, set it to false
            // to leave the form open to subsequent manual edits
            pdfStamper.FormFlattening = true;
            var pdfFormFields = pdfStamper.AcroFields;

            foreach (var f in pdfReader.AcroFields.Fields)
            {
                //Change font size here if auto should not be used
                pdfFormFields.SetFieldProperty(f.Key.ToString(), "textsize", (float)8.0, null);
            }
        }
        return ms.ToArray();
    }
}
于 2020-04-19T10:39:44.150 回答