jfreechart itextpdf 中文 方块
时间: 2023-08-19 11:05:29 浏览: 168
你可以使用 JFreeChart 和 iTextPDF 来生成包含中文方块的图表。下面是一个基本的示例代码:
```java
import java.awt.Font;
import java.io.FileOutputStream;
import com.itextpdf.text.Document;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfContentByte;
import com.itextpdf.text.pdf.PdfWriter;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
public class ChartExample {
public static void main(String[] args) {
// 创建数据集
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(120, "Series 1", "Category 1");
dataset.addValue(240, "Series 1", "Category 2");
dataset.addValue(180, "Series 1", "Category 3");
dataset.addValue(90, "Series 1", "Category 4");
// 创建图表
JFreeChart chart = ChartFactory.createBarChart(
"中文方块示例",
"分类",
"数值",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false
);
// 设置字体
BaseFont bfChinese = null;
try {
bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
} catch (Exception e) {
e.printStackTrace();
}
Font fontChinese = new Font(bfChinese, 12, Font.NORMAL);
chart.getTitle().setFont(fontChinese);
chart.getCategoryPlot().getDomainAxis().setLabelFont(fontChinese);
chart.getCategoryPlot().getRangeAxis().setLabelFont(fontChinese);
chart.getLegend().setItemFont(fontChinese);
// 生成PDF文件
try {
Document document = new Document(PageSize.A4, 50, 50, 50, 50);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("chart.pdf"));
document.open();
PdfContentByte contentByte = writer.getDirectContent();
contentByte.setFontAndSize(bfChinese, 12);
Paragraph paragraph = new Paragraph("中文方块示例", fontChinese);
document.add(paragraph);
com.itextpdf.text.Image image = com.itextpdf.text.Image.getInstance(chart.createBufferedImage(500, 300));
document.add(image);
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
这段代码将创建一个包含中文方块的柱状图,并将其保存为一个名为 "chart.pdf" 的PDF文件。你需要确保已经安装了中文字体,并将字体文件路径正确地指定在 `BaseFont.createFont` 方法中。
希望这个示例能帮到你!如有其他问题,请随时提问。
阅读全文