0

我有以下代码:

PdfReader reader = new PdfReader("doc.pdf");
PdfStamper stamper = new PdfStamper(reader,
new FileOutputStream("AttestationTemp.pdf"));
PdfContentByte over = stamper.getOverContent(1);
BaseFont bf = BaseFont.createFont(BaseFont.TIMES_ROMAN, BaseFont.CP1257, false);
over.setFontAndSize(bf, 50);
over.beginText();
ColumnText.showTextAligned(over, Element.ALIGN_LEFT, new Phrase("String"), 110, 384, 0);
over.endText();

try
{
    if (Desktop.isDesktopSupported())
    {
        File myPDF = new File("doc.pdf");
        Desktop.getDesktop().open(myPDF);
    }
}
catch (Exception e)
{
    e.printStackTrace();
}

问题是当我使用 setFontAndSize 方法更改我的字符串的大小时,我得到相同的结果(相同的小尺寸),所以我想知道如何设置添加到 pdf 文件的字符串的大小。

4

1 回答 1

1

iText 为不同级别的 PDF 内容生成提供 API。

有一个非常低级的PdfContentByte方法 API。在此级别,您可以逐个手动添加单个内容流操作,例如:

PdfContentByte over = ...;
over.setFontAndSize(bf, 50);
over.beginText();
over.setTextMatrix(110, 384);
over.showText("Hello World!");
over.endText();

然后是更高级别的ColumnText方法 API。在这个级别,您可以使用PhraseChunk对象来构造和设置文本样式,并且这些ColumnText方法会创建相应的内容流操作:

PdfContentByte over = ...;
Phrase phrase = new Phrase("Hello World!", new Font(bf, 50));
ColumnText.showTextAligned(over, Element.ALIGN_LEFT, phrase, 110, 384, 0);

OP 的代码混合了这些级别的指令,在他的情况下,这导致他的字体设置调用稍后被覆盖,因此被忽略。

于 2014-05-19T07:56:23.853 回答