我有以下代码:
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文件的字符串的大小。
答案 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。在此级别,您可以使用Phrase
和Chunk
对象构建文本并设置样式,ColumnText
方法创建相应的内容流操作:
PdfContentByte over = ...;
Phrase phrase = new Phrase("Hello World!", new Font(bf, 50));
ColumnText.showTextAligned(over, Element.ALIGN_LEFT, phrase, 110, 384, 0);
OP的代码混合了这些级别的指令,在他的情况下导致他的字体设置调用以后被覆盖,因此被忽略。