欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

用Itext把数据导出到Pdf文档

发布时间:2025/6/15 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 用Itext把数据导出到Pdf文档 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

工夫不负有心人!先用POI实现了把数据导出为Excel,现在又实现了用Itext把数据导出为Pdf文档.因为这些技术是以前都没有接触的,而现在又都基本掌握了,所以心里略有一些成就感.现把完整程序代码列在下面,以供对Itext有兴趣的朋友参考. 

ItextPdfDmo.java

package com.javaeye.yongsky;import java.awt.Color; import java.io.FileOutputStream; import java.sql.ResultSet;import com.lowagie.text.Document; import com.lowagie.text.Element; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.BaseFont; import com.lowagie.text.pdf.PdfPTable; import com.lowagie.text.pdf.PdfWriter; /*** * @author yangshoujun* */ public class ItextPdfDmo {//表头public static final String[] tableHeader = { "企业中文名", "所属国家", "企业英文名","2003年排名", "2004年排名", "2005年排名", "2006年排名", "2007年排名", "主要业务","2003年营业额", "2004年营业额", "2005年营业额", "2006年营业额", "2007年营业额", "企业编号","名次升降", "图片", "状况" };//数据表字段数private static final int colNumber = 18;//表格的设置private static final int spacing = 2;//表格的设置private static final int padding = 2;//导出Pdf文挡public static void exportPdfdocument() {// 创建文Pdf文挡Document document = new Document(new Rectangle(1500, 2000), 10, 10, 10,10);try {PdfWriter.getInstance(document, new FileOutputStream("d:\\世界五百强企业名次表.pdf"));document.open();// 中文字体BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);Font fontChinese = new Font(bfChinese, 12, Font.HELVETICA);// 创建有colNumber(18)列的表格PdfPTable datatable = new PdfPTable(colNumber);int[] cellsWidth = { 8, 5, 8, 3, 3, 3, 3, 2, 6, 4, 4, 4, 4, 2, 2,2, 2, 2 };datatable.setWidths(cellsWidth);datatable.setWidthPercentage(100); // 表格的宽度百分比 datatable.getDefaultCell().setPadding(padding);datatable.getDefaultCell().setBorderWidth(spacing);datatable.getDefaultCell().setBackgroundColor(Color.ORANGE);datatable.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);// 添加表头元素for (int i = 0; i < colNumber; i++) {datatable.addCell(new Paragraph(tableHeader[i], fontChinese));}datatable.setHeaderRows(1); // 表头结束datatable.getDefaultCell().setBorderWidth(1);ResultSet rs = SheetDataSource.selectAllDataFromDB();int rowIndex = 1;while (rs.next()) {if (rowIndex % 2 == 1) {datatable.getDefaultCell().setGrayFill(0.9f);}for (int i = 1; i <= colNumber; i++)datatable.addCell(new Paragraph(rs.getString(i),fontChinese));if (rowIndex % 2 == 1) {datatable.getDefaultCell().setGrayFill(1.0f);}rowIndex++;}document.add(datatable);} catch (Exception e) {e.printStackTrace();}document.close();}public static void main(String[] args) {exportPdfdocument();} }

本程序主要功能 : 程序可以把数据库中数据以表格的形式导出到Pdf文档,并对表格做了些简单的设置.本程序引用我的前一篇文章中用到的SheetDataSource.java这个文件,文章附件中有详细代码. 

有关Itext[附]: 

(一)Itext简单介绍 :iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 

(二)Itext入门 
使用Itext主要有五个步骤: 
(1)建立com.lowagie.text.Document对象的实例

Document document = new Document();

(2)建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。

PDFWriter.getInstance(document, new FileOutputStream("D:\\HelloItext.PDF"));

(3)打开文档。

document.open();

(4)向文档中添加内容。

document.add(new Paragraph("Hello Itext"));

(5)关闭文档。

document.close();

通过上面的5个步骤,就能产生一个简单HelloItext.PDF的文件,文件内容为"Hello Itext"。当然用Itext实现这样的功能很简单,但是如果要达到我们实际的要求就没有这么简单了.如果要完全掌握Itext还需要阅读文档和有关资料.Itext包括表格处理,图像处理,报表等复杂的应用. 

简单的完整可运行的代码如下:

package com.javaeye.yongsky;import java.io.FileOutputStream;import com.lowagie.text.Document; import com.lowagie.text.PageSize; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.PdfWriter;public class HelloItext {public static void main(String[] args) {Document document = new Document(PageSize.A4.rotate(), 10, 10, 10, 10);try {PdfWriter.getInstance(document, new FileOutputStream("D:\\HelloItext.pdf"));document.open();document.add(new Paragraph("Hello Itext"));} catch (Exception de) {de.printStackTrace();}document.close();} }

提示: 
    下面附件中有Itext的JAR包可和官方文档供下载.

转:http://yongsky.iteye.com/blog/99406

总结

以上是生活随笔为你收集整理的用Itext把数据导出到Pdf文档的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。