win7系统下JFreeChart1.0.1和iText集成时,中文字符出现乱码的解决方法

环境:JFreeChart 1.0.1、iText1.3JFreeChart1.0.1中的Plot接口没有提供SetValueLabelFont的方法,无法直接设置label的字体!不过还好试了一下午总算弄出来了,具体代码如下:PdfWriter writer;
writer = PdfWriter.getInstance(document,newFileOutputStream(
filename));
document.open();
PdfContentByte cb = writer.getDirectContent();
PdfTemplate tp = cb.createTemplate(width, height);

// 关键是使用AsianFontMapper替代DefaultFontMapper
AsianFontMapper mapper =newAsianFontMapper(;STSong-Light;,;UniGB-UCS2-H;);
Graphics2D g2d = tp.createGraphics(width, height,
mapper);
Rectangle2D r2d =newRectangle2D.Double(0,0, width, height);
chart.draw(g2d, r2d);
g2d.dispose();
cb.addTemplate(tp,0,0);

记住别忘了添加iTextAisan.jar不然会报如下错误:下载地址:iTextAsian.jar下载(32&64位)

com.lowagie.text.DocumentException: Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.
at com.lowagie.text.pdf.BaseFont.createFont(Unknown Source)
at com.lowagie.text.pdf.BaseFont.createFont(Unknown Source)
at com.lowagie.text.pdf.AsianFontMapper.awtToPdf(Unknown Source)
at com.lowagie.text.pdf.PdfGraphics2D.getCachedBaseFont(Unknown Source)
at com.lowagie.text.pdf.PdfGraphics2D.setFont(Unknown Source)
at com.lowagie.text.pdf.PdfGraphics2D.(Unknown Source)
at com.lowagie.text.pdf.PdfContentByte.createGraphics(Unknown Source)
at JFreeChartExample.convertToPdf(JFreeChartExample.Java:94)
at JFreeChartExample.main(JFreeChartExample.java:63)
com.lowagie.text.DocumentException: Font 'STSong-Light' with 'UniGB-UCS2-H' is not recognized.
at com.lowagie.text.pdf.BaseFont.createFont(Unknown Source)
at com.lowagie.text.pdf.BaseFont.createFont(Unknown Source)
at com.lowagie.text.pdf.AsianFontMapper.awtToPdf(Unknown Source)
at com.lowagie.text.pdf.PdfGraphics2D.getCachedBaseFont(Unknown Source)
at com.lowagie.text.pdf.PdfGraphics2D.setFont(Unknown Source)
at org.jfree.chart.title.TextTitle.arrangeRR(TextTitle.java:488)
at org.jfree.chart.title.TextTitle.arrange(TextTitle.java:450)
at org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1125)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:1015)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:925)
at JFreeChartExample.convertToPdf(JFreeChartExample.java:97)
at JFreeChartExample.main(JFreeChartExample.java:63)
Exception in thread ;main; java.lang.NullPointerException
at com.lowagie.text.pdf.PdfWriter.addSimple(Unknown Source)
at com.lowagie.text.pdf.PdfContentByte.setFontAndSize(Unknown Source)
at com.lowagie.text.pdf.PdfGraphics2D.drawString(Unknown Source)
at org.jfree.text.TextUtilities.drawRotatedString(TextUtilities.java:566)
at org.jfree.text.TextUtilities.drawRotatedString(TextUtilities.java:600)
at org.jfree.text.TextFragment.draw(TextFragment.java:212)
at org.jfree.text.TextLine.draw(TextLine.java:174)
at org.jfree.text.TextBlock.draw(TextBlock.java:269)
at org.jfree.text.TextBlock.draw(TextBlock.java:231)
at org.jfree.chart.title.TextTitle.drawHorizontal(TextTitle.java:628)
at org.jfree.chart.title.TextTitle.draw(TextTitle.java:569)
at org.jfree.chart.JFreeChart.drawTitle(JFreeChart.java:1128)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:1015)
at org.jfree.chart.JFreeChart.draw(JFreeChart.java:925)
at JFreeChartExample.convertToPdf(JFreeChartExample.java:97)
at JFreeChartExample.main(JFreeChartExample.java:63)

本文来自互联网或AI生成,不代表系统内阁立场。本站不负任何法律责任。

如若转载请注明出处:https://www.system.cab/tutorials/16726.html

热心网友的头像热心网友
上一篇 2025-04-09 12:08
下一篇 2025-04-09 12:08

相关推荐

无论是个人用户还是专业人士,都能在这里找到适合自己的系统版本。
本站[系统内阁]所有内容来自互联网投稿或AI智能生成,并不代表[系统内阁]的立场。