【问题标题】:How do I change font size in a rendered PDF doc in iText?如何在 iText 中更改呈现的 PDF 文档中的字体大小?
【发布时间】:2014-07-08 22:39:56
【问题描述】:

我正在使用 iText 2.1.7,通过以下依赖项包含...

    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>2.1.7</version>
    </dependency>

如何在我尝试导出的 PDF 中更改 PDF 字段的文本大小?我使用 OpenOffice 4.1.0 创建了一个 PDF 模板,然后尝试使用此代码设置文本大小:

            final PdfReader pdfTemplate = new PdfReader(pdfTemplateFile.toString());
            // Prepare to generate a byte output stream
            ByteArrayOutputStream out = new ByteArrayOutputStream();
            PdfStamper stamper = new PdfStamper(pdfTemplate, out);
            stamper.setFormFlattening(true);
    …
            stamper.getAcroFields().setField(PARTICIPANT_FIELD_NAME, user.getFirstName() + " " + user.getLastName());
            stamper.getAcroFields().setFieldProperty(PARTICIPANT_FIELD_NAME, "textsize", new Float(36), null);
            final BaseFont font = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);
            stamper.getAcroFields().setFieldProperty(PARTICIPANT_FIELD_NAME, "textfont", font, null);

无论我在“new Float(xxx)”之间输入什么值,字体大小总是呈现相同的。我哪里错了?

【问题讨论】:

    标签: pdf itext font-size


    【解决方案1】:

    字段的外观是在您使用setField() 方法设置字段的那一刻生成的。这意味着您正在以错误的顺序做事。像这样更改您的代码:

    AcroFields form = stamper.getAcroFields();
    form.setFieldProperty(PARTICIPANT_FIELD_NAME, "textsize", new Float(36), null);
    final BaseFont font = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.EMBEDDED);
    form.setFieldProperty(PARTICIPANT_FIELD_NAME, "textfont", font, null);
    form.setField(PARTICIPANT_FIELD_NAME, user.getFirstName() + " " + user.getLastName());
    

    至于您使用 iText 2.1.7,显然是 not a good idea,但我们想知道您为什么更喜欢使用过时的软件,因此我们聘请了 Black Duck Software 来帮助我们使用 this survey

    【讨论】:

    • 我想我在某处读到更高版本的 2.1.7 有某种限制性许可协议,但我没有时间阅读许可详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 2011-11-28
    • 2021-01-08
    • 1970-01-01
    相关资源
    最近更新 更多