使用itext调整添加到pdf文件的String的大小

时间:2014-05-19 06:51:34

标签: java pdf itext pdf-reader

我有以下代码:

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方法更改String的大小时,我得到相同的结果(相同的小尺寸),所以我想知道如何设置添加到pdf文件的字符串的大小。

1 个答案:

答案 0 :(得分: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的代码混合了这些级别的指令,在他的情况下导致他的字体设置调用以后被覆盖,因此被忽略。