java操作pdf(解决中文导出问题)

 

 

java操作pdf(解决中文导出问题)

iText是一个开发源代码的项目,你可以使用iText方便的实现PDF的输出。
 
 
一、iText的下载:

    你可以在 http://www.lowagie.com/iText/ 查看关于iText的相关信息,包括源代码,文档..

    1. itext-src-1.4.zip(源代码)

         
http://jaist.dl.sourceforge.net/sourceforge/itext/itext-src-1.4.zip

    2.  itext-1.4.jar(可以直接导入的jar文件)

         http://jaist.dl.sourceforge.net/sourceforge/itext/itext-1.4.jar

    3.  亚洲语言包

         http://itextdocs.lowagie.com/downloads/iTextAsian.jar          (或者)

        http://itextdocs.lowagie.com/downloads/iTextAsianCmaps.jar

二、示例程序:

        首先把上面的这几个jar包的完整路径添加到环境变量 classpath 中,然后再下面的程序
        中导入相应的包

 

[java]  view plaincopy
  1. /** 
  2.   * HelloWorld.java 
  3.  */  
  4.   
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7.   
  8. import com.lowagie.text.*;  
  9. import com.lowagie.text.pdf.PdfWriter;  
  10.   
  11. public class HelloWorld {  
  12.   
  13.   public static void main(String[] args) {  
  14.   
  15.     System.out.println("Hello World");  
  16.   
  17.     // 创建一个Document对象  
  18.     Document document = new Document();  
  19.   
  20.     try   
  21.     {  
  22.   
  23.       // 生成名为 HelloWorld.pdf 的文档  
  24.       PdfWriter.getInstance(document, new FileOutputStream("HelloWorld.pdf"));  
  25.   
  26.       // 添加PDF文档的一些信息  
  27.       document.addTitle("Hello World example");  
  28.       document.addAuthor("Bruno Lowagie");  
  29.       document.addSubject("This example explains how to add metadata.");  
  30.       document.addKeywords("iText, Hello World, step 3, metadata");  
  31.       document.addCreator("My program using iText");  
  32.   
  33.       // 打开文档,将要写入内容  
  34.       document.open();  
  35.   
  36.       // 插入一个段落  
  37.       document.add(new Paragraph("Hello World!"));  
  38.   
  39.     }   
  40.     catch (DocumentException de)   
  41.     {  
  42.       System.err.println(de.getMessage());  
  43.     }  
  44.     catch (IOException ioe)   
  45.     {  
  46.       System.err.println(ioe.getMessage());  
  47.     }  
  48.   
  49.     // 关闭打开的文档  
  50.     document.close();  
  51.   }  
  52. }   

 

编译运行以后,我们可以在运行的目录发现生成的HelloWorld.pdf,打开可以看到我们写的文字:

 

三、中文问题:

        由于iText不支持东亚语言,我们下载了iTextAsian.jar 以后,就可以在PDF里面写中文:

 

[java]  view plaincopy
  1. /** 
  2.   * AsianTest.java 
  3.  */  
  4.   
  5. import java.io.FileOutputStream;  
  6. import java.io.IOException;  
  7.   
  8. import com.lowagie.text.*;  
  9. import com.lowagie.text.pdf.PdfWriter;  
  10. import com.lowagie.text.pdf.BaseFont;  
  11. import com.lowagie.text.Font;  
  12. import java.awt.Color;  
  13.   
  14. public class AsianTest{  
  15.   
  16.   public static void main(String[] args) {  
  17.   
  18.     // 创建一个Document对象  
  19.     Document document = new Document();  
  20.   
  21.     try   
  22.     {  
  23.   
  24.       // 生成名为 AsianTest.pdf 的文档  
  25.       PdfWriter.getInstance(document, new FileOutputStream("AsianTest.pdf"));  
  26.   
  27.      /**  新建一个字体,iText的方法 
  28.        *  STSongStd-Light 是字体,在iTextAsian.jar 中以property为后缀 
  29.        *  UniGB-UCS2-H   是编码,在iTextAsian.jar 中以cmap为后缀 
  30.        *  H 代表文字版式是 横版, 相应的 V 代表 竖版 
  31.       */  
  32. //下面的那两句要有,不然的话,中文就出不来  
  33.       BaseFont bfChinese = BaseFont.createFont("STSongStd-Light""UniGB-UCS2-H"false);  
  34.   
  35.         Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);   
  36.   
  37.       // 打开文档,将要写入内容  
  38.       document.open();  
  39.   
  40.       // 插入一个段落  
  41.       Paragraph par = new Paragraph("我们",fontChinese);  
  42.   
  43.       document.add(par);  
  44.   
  45.     }   
  46.     catch (DocumentException de)   
  47.     {  
  48.       System.err.println(de.getMessage());  
  49.     }  
  50.     catch (IOException ioe)   
  51.     {  
  52.       System.err.println(ioe.getMessage());  
  53.     }  
  54.   
  55.     // 关闭打开的文档  
  56.     document.close();  
  57.   }  
  58. }  

 

就可以显示中文了。

四、其他问题:(应导入相应的包)

       1. 换页:

document.newPage();

       2. 表格:

 

[java]  view plaincopy
  1. // 设置 Table  
  2. Table aTable = new Table(3);  
  3. int width[] = {25,25,50};  
  4. aTable.setWidths(width);  
  5. aTable.setWidth(80); // 占页面宽度 80%  
  6.   
  7. aTable.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);  
  8. aTable.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);  
  9. aTable.setAutoFillEmptyCells(true); //自动填满  
  10. aTable.setPadding(1);  
  11. aTable.setSpacing(1);  
  12. aTable.setDefaultCellBorder(0);  
  13. aTable.setBorder(0);  
  14.   
  15. Cell cell = new Cell(new Phrase("这是一个测试的 3*3 Table 数据", fontChinese ));  
  16. cell.setVerticalAlignment(Element.ALIGN_TOP);  
  17. cell.setRowspan(3);  
  18. aTable.addCell(cell);  
  19.   
  20. aTable.addCell(new Cell("#1"));  
  21. aTable.addCell(new Cell("#2"));  
  22. aTable.addCell(new Cell("#3"));  
  23.   
  24. aTable.addCell(new Cell("#4"));  
  25. aTable.addCell(new Cell("#5"));  
  26. aTable.addCell(new Cell("#6"));  
  27.   
  28. document.add(aTable);  

 

3. 图片:

// 可以是绝对路径,也可以是URL
Image img = Image.getInstance("logo.gif");

// Image image = Image.getInstance(new URL(http://xxx.com/logo.jpg));

img.setAbsolutePosition(0, 0);

document.add(img);

五、参考文档:

  • iText
    http://www.lowagie.com/iText/ 
  • iText API: 
    http://itext.sourceforge.net/docs/ 

    http://www.sentom.net/list.asp?id=42

转自:

http://dev.csdn.net/author/comstep/f4b87d7c83d34323bdb28025c14c4316.html

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值