`
freesea
  • 浏览: 127497 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Java iText 动态 生成 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

       http://prdownloads.sourceforge.net/itext/iTextAsian.jar

二、示例程序:

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

java 代码
  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. }    
  53.   

 

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

Hello World



三、中文问题:

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

java 代码
  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.       BaseFont bfChinese = BaseFont.createFont("STSongStd-Light""UniGB-UCS2-H"false);   
  33.   
  34.         Font fontChinese = new Font(bfChinese, 12, Font.NORMAL, Color.GREEN);   
  35.   
  36.       // 打开文档,将要写入内容   
  37.       document.open();   
  38.   
  39.       // 插入一个段落   
  40.       Paragraph par = new Paragraph("我们",fontChinese);   
  41.   
  42.       document.add(par);   
  43.   
  44.     }    
  45.     catch (DocumentException de)   
  46.     {   
  47.       System.err.println(de.getMessage());   
  48.     }   
  49.     catch (IOException ioe)   
  50.     {   
  51.       System.err.println(ioe.getMessage());   
  52.     }   
  53.   
  54.     // 关闭打开的文档   
  55.     document.close();   
  56.   }   
  57. }   
  58.   

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

java 代码
  1.  1. 换页:   
  2.   
  3. document.newPage();   
  4.   
  5.        2. 表格:   
  6.   
  7. // 设置 Table   
  8. Table aTable = new Table(3);   
  9. int width[] = {25,25,50};   
  10. aTable.setWidths(width);   
  11. aTable.setWidth(80); // 占页面宽度 80%   
  12.   
  13. aTable.setDefaultHorizontalAlignment(Element.ALIGN_LEFT);   
  14. aTable.setDefaultVerticalAlignment(Element.ALIGN_MIDDLE);   
  15. aTable.setAutoFillEmptyCells(true); //自动填满   
  16. aTable.setPadding(1);   
  17. aTable.setSpacing(1);   
  18. aTable.setDefaultCellBorder(0);   
  19. aTable.setBorder(0);   
  20.   
  21. Cell cell = new Cell(new Phrase("这是一个测试的 3*3 Table 数据", fontChinese ));   
  22. cell.setVerticalAlignment(Element.ALIGN_TOP);   
  23. cell.setRowspan(3);   
  24. aTable.addCell(cell);   
  25.   
  26. aTable.addCell(new Cell("#1"));   
  27. aTable.addCell(new Cell("#2"));   
  28. aTable.addCell(new Cell("#3"));   
  29.   
  30. aTable.addCell(new Cell("#4"));   
  31. aTable.addCell(new Cell("#5"));   
  32. aTable.addCell(new Cell("#6"));   
  33.   
  34. document.add(aTable);   
  35.   
  36.        3. 图片:   
  37.   
  38. // 可以是绝对路径,也可以是URL   
  39. Image img = Image.getInstance("logo.gif");   
  40.   
  41. // Image image = Image.getInstance(new URL(http://xxx.com/logo.jpg));   
  42.   
  43. img.setAbsolutePosition(00);   
  44.   
  45. document.add(img);   
  46.   

 

五、参考文档:

评论
2 楼 haiyangyiba 2012-05-31  
谢谢博主无私奉献
1 楼 shenger 2008-11-21  
对我帮助很大,谢谢!

相关推荐

    Java iText 生成pdf文档

    Java iText 生成pdf文档源代码(包括插入文本、表格、图像)

    itext 生成pdf文档

    用itext生成pdf文档,生成的内容有表格形式,文本形式,设置字体样式,文档页边距。

    java itext生成PDF文件

    itextpdf-5.5.10.jar、itext-asian-5.2.0.jar、iText中文帮助、iText英文帮助文档 以及生成PDF文件时生成表格时单元格合并处理方法

    Itext word转pdf

    文档POI只支持往生成的中填入文本,对于图片根本就不支持。使用itext 生成rtf格式的直接保存为word

    使用Java组件itext生成pdf介绍.docx

    iText是一个能够快速产生PDF文件的java类库。iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。

    从Java应用程序动态生成PDF文件

    如果应用程序需要动态生成PDF文档,则需要iText库。开放源码的iText库使PDF文档的创建能够在瞬间完成。本文介绍了iText并提供了使用它从Java™技术应用程序生成PDF文档的由浅入深的指南。

    Javaweb开发中用itext实现pdf导出表格数据及水印操作的项目和jar包和说明文件

    1、生成PDF文件 2、支持中文字体 3、PDF文件内容为表格,表格有表头 4、PDF文件内容支持中文,表格内容上下居中,左右居中或左对齐/右对齐 5、PDF列信息多寡不同,PDF采用页面宽度也能根据列信息按比例调整 6、PDF行...

    java使用itext生成pdfdemo,直接执行main方法可用!代码文档中有配置文件的详细介绍

    java使用itext导出pdf,可以生成表格、文字、图片等,demo中详细介绍了使用的版本,可能出现的问题,以及生成模板的方法。全网最全!!

    动态创建PDF(Java)

    iText的java类对于那些要产生包含文本,表格,图形的只读文档是很有用的。它的类库尤其与java Servlet有很好的给合。使用iText与PDF能够使你正确的控制Servlet的输出。 <br>包内包含两个测试类,相关的包和英文的...

    itext5pdf表格行变色实现过程源码+doc文档

    1.先创建PdfPTable对象,生成PDF表格cell之后,添加隔行换色的事件,将此事件在PdfPTable加入Document对象之前,插入进去。 2.隔行换色的事件需要自己写一个java类,里面去定义背景颜色和长宽高,实质就是在pdf表格...

    java根据模板导出PDF详细教程(包含统计图)

    根据业务需要,需要在服务器端生成可动态配置的PDF文档,方便数据可视化查看。此文的测试是在客户端通过java程序的测试,直接运行java类获得成功!

    java向pdf模板写入数据

    主要使用itextpdf包,通过Adobe Acrobat DC生成pdf模板,并向模板中写入数据,生成新的pdf文档

    PDF文件JAVA去水印源码-Itextsharp:iTextSharp,.NETPDF库

    PDF文件JAVA去水印源码锐化 iText 是一个 PDF 库,允许您以可移植文档格式 (PDF) 创建、改编、检查和维护文档: 根据 XML 文件或数据库中的数据生成文档和报告 创建地图和书籍,利用 PDF 中提供的众多交互功能 向...

    PdfTools:java中使用iText创建PDF格式文档的基本示例

    java中使用iText创建PDF格式文档的基本示例。 第一个 PDF 生成具有不同属性的基本 PDF,如标题、副标题、列表、表格和不同类型的字体。 PositionPDF 只是举例说明了文本对齐的处理,无论是右对齐、左对齐还是居中...

    java源码包---java 源码 大量 实例

     [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] 限定选择控件  [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件...

    JAVA上百实例源码以及开源项目

     [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] 限定选择控件  [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件...

    java源码包4

     [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] 限定选择控件  [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源...

    java源码包3

     [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] 限定选择控件  [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源...

    JAVA上百实例源码以及开源项目源代码

     [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] 限定选择控件  [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件...

    java源码包2

     [TablePanel.java] 日历表格面板  [ConfigLine.java] 控制条类  [RoundBox.java] 限定选择控件  [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源...

Global site tag (gtag.js) - Google Analytics