如何在iTextSharp(PdfStamper)中增加PDF字段的字体大小?

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);

也许你可以在这个帖子中找到一些帮助,它包含了一个类似的问题:https://dev59.com/LlLTa4cB1Zd3GeqPXyui。 - Jonas W
@user960567,您可以添加解决方案或接受一个答案吗? - tvdias
4个回答

14

我使用以下方法解决了问题:

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

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


3
对我来说关键的部分是“它必须在填写字段之前设置”。谢谢! - Noah Ternullo

6
你使用的是哪个版本的iTextSharp?我使用的是5.0.6.0,下面这行代码对我有效:

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

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

然而,我遇到了一个奇怪的问题... 上面的代码仅当该字段的字体大小设置为自动时才能正常工作。当它被设置为固定的字体大小时,我似乎无法通过代码改变它(我尝试了几种不同的方法)。如果您在Acrobat中将该字段设置为自动字体大小,我很想知道您是否有同样的经历。

2
据我所了解,字体大小完全相对于文本字段的水平和垂直宽度。我尝试了几种方法来尝试在运行时“重新调整”文本大小,但都没有产生任何结果。唯一的“误报”是当我手动调整文本字段大小时。很抱歉这并没有更有帮助地解决您的问题,我只是想分享一下我遇到的同样的问题的经验。我会继续关注任何解决方案,如果您找到了解决方案,请发布它,因为这将是非常有价值的知识。

1
我通过创建多个具有不同字体的PDF表单来解决了这个问题。 - Imran Qadir Baksh - Baloch

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();
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接