java - 使用itext调整添加到pdf文件中的字符串的大小

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

最佳答案

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 的代码混合了这些级别的指令,在他的例子中,这会导致他的字体设置调用稍后被覆盖,因此被忽略。

关于java - 使用itext调整添加到pdf文件中的字符串的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23731387/

相关文章:

java - Flying Saucer - HTML 到 PDF 和许可 (iText)

java - iText 列宽错误

java - Apache项目与大数据世界

java - MIP 中如何建立来回通信?

java - ActiveMq 和 Spring Boot

PDF和文本层

objective-c - 如何在 iPhone 上将二进制文件转换为 pdf 文件?

java - 检查 PDF 文件是否为扫描文件

java - 如何使任何 pdf 文件中的水印文本不可选择?

java - 使用仅适用于第一次测试的流进行单元测试日志