iText PdfTemplate字体大小问题

时间:2016-07-07 11:18:02

标签: fonts size itext

我有一个奇怪的问题与iText& PdfTemplate。

我正在使用PdfTemplate&用于将页面总页数打印到页脚的图像。 我创建一个PdfTemplate,从模板创建一个Image并将图像放入一个块,然后将块添加到表/短语/段落,无论父组件是什么组件。

PdfTemplate tmp = PdfTemplate.createTemplate(writer, 20, 10);

Image img = null;
try
{
    img = Image.getInstance(tmp);
}
catch (BadElementException e)
{
}

return new Chunk(img, 0, 0);

然后将返回的Chunk添加到页面中(例如,添加到短语中)。创建的PdfTemplate将保存到列表中以便以后获取。

然后在pageEventHelper(onCloseDocument)中,我在ColumnText的帮助下用总页数填充模板,如下所示:

PdfTemplateRecord rec = pagenums.get(i);
PdfTemplate tmp = rec.getTemplate();
Font font = CreatorHelper.getCurrentFont(rec.getFontContext());
if (font == null)
{
    font = new Font(defaultFont, 8f);
}

ColumnText columnText = new ColumnText(tmp);
columnText.setSimpleColumn(new Phrase(Integer.toString(pagenum), font), 0, -tmp.getHeight(), tmp.getWidth(), 0, 0, Element.ALIGN_LEFT);
columnText.setUseAscender(false);
try
{
    columnText.go();
}
catch (DocumentException e)
{
    log.error("Failed to render total page number", e);
}

除了两件事之外,一切都很好:

1。)如果仔细检查setSimpleColumn,我必须将Y位置设置为-tmp.getHeight()(例如-10)而不是0.如果我将Y设置为0,则只绘制文本在线以上...可能我添加了一些图像,但是不知道

2.)我的字体大小有问题。奇怪,但如果字体大小如果大于10f,正常文本和模板中的文本是相同的。但是,如果字体大小低于10f,则模板中的文本会变小。 这里有一些图片

when font size is 6f

when font size is 8f

when font size is 9f

when font size if 10f

when font size if 14f

(按此顺序排列的图像,字体大小:6f,8f,9f,10f,14f,"" Page 1;是正常文本,""" ;附带模板)

正如您所看到的,9f字体大小的模板文本略小于普通文本,但在10f后,两个文本是相同的。

我搜索了PdfTemplate和Elements之间是否存在关于字体大小调整的规则,但没有找到任何内容。

任何帮助都是有意义的!

谢谢!

1 个答案:

答案 0 :(得分:0)

抱歉复活旧帖子: 这与页码[第1页的第1页]

的字体大小不一致有关 OP删除Paragraph以获得相同字体大小的评论对我不起作用(在类似的图像缩放问题上)。

参考this post here显示可能出现的问题。

  

BUT:   第一个PDF(没有模板)包含"嵌入子集"的   字体"格鲁吉亚" (安西编码)。这是使用字体的正确方法。   然而,第二个PDF包含:    - 佐治亚州的嵌入式子集(Ansi)    - 佐治亚州的嵌入式子集(CID / Identity-H)    - 格鲁吉亚没有嵌入(安西)    - Georgia-Bold NOT EMBEDDED(安西)

两种第一种字体都可以,但由于以下两种字体不是 嵌入式,我的Adobe Reader必须在我的上面查找字体Georgia 操作系统。

希望这会有所帮助:)

P.S。向模板添加内容时,可以在添加短语时设置字体,该短语允许模板内容具有独立字体。