如何更改iText中呈现的PDF文档中的字体大小?

Dav*_*ave 3 pdf itext font-size

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

    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>2.1.7</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

如何在我尝试导出的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);
Run Code Online (Sandbox Code Playgroud)

无论我在"new Float(xxx)"之间放置什么值,字体大小总是呈现相同的.我哪里错了?

Bru*_*gie 6

在使用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());
Run Code Online (Sandbox Code Playgroud)

至于你使用iText 2.1.7,显然这不是一个好主意,但我们想知道为什么你更喜欢使用过时的软件,所以我们聘请了Black Duck Software来帮助我们完成这项调查.