我有一个奇怪的问题与iText & PdfTemplate。iText PdfTemplate字体大小问题
我正在使用PdfTemplate &图像将总页码打印到页脚。 我创建一个PdfTemplate,从模板创建一个图像并将图像放入一个块中,然后将块添加到表/短语/段落中,无论父组件是什么。
PdfTemplate tmp = PdfTemplate.createTemplate(writer, 20, 10);
Image img = null;
try
{
img = Image.getInstance(tmp);
}
catch (BadElementException e)
{
}
return new Chunk(img, 0, 0);
这个返回的块然后被添加到页面(例如一个短语)。创建的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,则模板中的文本会变小。 这里一些图像
(在该顺序的图像,字体大小:1207米,8F,9F,10F, 14f,“第1页”是否rmal文本以及“of”后的数字随模板而变)
正如您可以看到9f字体大小的模板文本略小于普通文本,但在10f后两个文本相同。
我搜索了PdfTemplate和Elements之间是否存在一些关于字体大小的规则,但没有发现任何内容。
任何帮助是appretiated!
谢谢!
不幸的是,您的代码不容易重现问题,因为您使用了许多未知的方法,并且您不明白如何将内容添加到页面。我会假设你的问题的原因是由于这些不知名的代码段的一些怪癖。 – mkl
虽然是一个很大的变化,难道你不能只是转向在你的PDF上做两遍?第一遍打印PDF,第二遍打印页码?它真的简化了一些事情。参见[第三代码块](http://stackoverflow.com/a/9845722/231316) –
嗨!我无法通过两遍,因为我不知道总页数到底在哪里。 PDF是从模板(XML)生成的,并且totalPages可以在任何地方(甚至在文档正文中)。 @mkl:我无法粘贴整个生成器代码,因为它大约有2000行,但这些“未知”方法没有什么特别之处,可能是这样的吗? CreatorHelper.getCurrentFont(rec.getFontContext()); – user1536873