0

我在我的 pdf 中生成的饼图中有一个关于 unicode 支持的非常令人困惑的问题。这是我所拥有的:我正在生成饼图(使用 jfreechart 库),需要在饼图的标题上添加上标。我测试了,我知道 jfreechart 正在生成正确的标题(上标很好),我还测试了 itext unicode 支持。中间有一个 Graphics2D(来自 java awt),将 jfreechart 转换为模板,然后我可以将此模板打印到我的 pdf 中。根据我的测试,我猜问题应该在 graphics2d 和 itext 模板之间。

PdfContentByte canvas = writer.getDirectContent();

PdfTemplate template = canvas.createTemplate(width, height);

FontMapper mapper = new DefaultFontMapper();

template.setFontAndSize(mapper.awtToPdf(new java.awt.Font("Arial Unicode MS", java.awt.Font.PLAIN, 7)) , 7);

Graphics2D graphics2d = template.createGraphics(width, height);

graphics2d.setFont(new java.awt.Font("Arial Unicode MS", java.awt.Font.PLAIN, 7));

JFreeChart chart = getPieChart("", title, value);


我发现了问题。问题是模板(PdfTemplate)不显示 unicode 字符。虽然我嵌入了 unicode 字体并将其设置为模板,但仍然无法正常工作。有任何想法吗?

4

1 回答 1

1

实际上最后我通过从饼图中删除上标并将其直接打印到模板中来解决问题。这也消除了 unicode 字体的使用(这需要额外的钱):

template.beginText();

template.setFontAndSize(arial, 8);

// the fixed position of the xy coordinate that I want to print superscript template.moveText(97, 142);

template.showText(superscript);

template.setTextRise(5f);

template.endText();

于 2013-04-02T15:42:25.513 回答