用itext生成pdf报表下篇(解决中文问题)



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;
 }

解决中文也不难吧。我也只是初学者,不对的地方大家可以提出!


你可能感兴趣的:(用itext生成pdf报表下篇(解决中文问题))