itext生成pdf报表 (解决中文问题)
上一篇说到生成的pdf文档中的中文没有显示出来,要想要将它显示出来有几种方法,可以看下我另外一篇,这里只介绍我认为最简单的例子,首先得下个jar包,iTextAsian.jar
可以直接在我的资源里下。这个jar包是支持中文的。
这种方法只要在程序中加个设置即可,如下
BaseFont bfChinese = BaseFont.createFont( "STSongStd-Light" ,"UniGB-UCS2-H",false );
Font font = new Font(bfChinese,12,Font.NORMAL, Color.black);
用的时候调用font即可。如下例子
//itext生成pdf格式
public String gettoPDFAction()
{
try {
String projectapproid = request.getParameter("projectapproid");
if(projectapproid!=null && !"".equals(projectapproid))
{
projectappro = projectApprovalService.getProjectapproId(projectapproid);
//中文问题
BaseFont bfChinese = BaseFont.createFont( "STSongStd-Light" ,"UniGB-UCS2-H",false );
Font font = new Font(bfChinese,12,Font.NORMAL, Color.black);
// 步骤 1: 创建一个document对象
Document document = new Document();
// 步骤 2:
// 我们为document创建一个监听,并把PDF流写到文件中
PdfWriter.getInstance(document, new FileOutputStream("D:\\MyFirstTable.pdf"));
// 步骤 3:打开文档
document.open();
//创建一个有4列的表格
PdfPTable table = new PdfPTable(4);
//定义一个表格单元
PdfPCell cell = new PdfPCell(new Paragraph("项目立项详情",font));
//定义一个表格单元的跨度
cell.setColspan(4);
cell.setHorizontalAlignment(1);
//把单元加到表格中
table.addCell(cell);
//把下面这4顺次的加入到表格中,当一行充满时候自动折行到下一行
cell = new PdfPCell(new Paragraph("建设单位:",font));
table.addCell(cell);
cell = new PdfPCell(new Paragraph(projectappro.getConstructunit(),font));
table.addCell(cell);
cell = new PdfPCell(new Paragraph("联系人:",font));
table.addCell(cell);
cell = new PdfPCell(new Paragraph(projectappro.getContactperson(),font));
table.addCell(cell);
cell = new PdfPCell(new Paragraph("联系方式:",font));
table.addCell(cell);
cell = new PdfPCell(new Paragraph(projectappro.getContactinfo(),font));
table.addCell(cell);
cell = new PdfPCell(new Paragraph("联系地址:",font));
table.addCell(cell);
//重新定义单元格
cell = new PdfPCell(new Paragraph("备注:",font));
table.addCell(cell);
//重新定义单元格
cell = new PdfPCell(new Paragraph(projectappro.getRemark(),font));
//定义单元格的跨度
cell.setColspan(3);
//增加到表格上
table.addCell(cell);
//增加到文档中
document.add(table);
System.out.println("中文好了!");
// 步骤 5:关闭文档
document.close();
}
} catch (Exception e) {
// TODO: handle exception
System.out.println("项目立项生成PDF出错!");
e.printStackTrace();
}
return null;
}
解决中文也不难吧。我也只是初学者,不对的地方大家可以提出!