我有一个奇怪的问题与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,则模板中的文本会变小。 这里有一些图片
(按此顺序排列的图像,字体大小:6f,8f,9f,10f,14f,"" Page 1;是正常文本,""" ;附带模板)
正如您所看到的,9f字体大小的模板文本略小于普通文本,但在10f后,两个文本是相同的。
我搜索了PdfTemplate和Elements之间是否存在关于字体大小调整的规则,但没有找到任何内容。
任何帮助都是有意义的!
谢谢!
答案 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。向模板添加内容时,可以在添加短语时设置字体,该短语允许模板内容具有独立字体。