一、iText简介

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

使用iText非常方便,引入jar包,程序中就可以使用iText类库了。iText.jar包下载地址:http://www.itextpdf.com/download.php

如果生成的PDF文件中需要出现中文、日文、韩文字符,则同样的地址,下载extrajars-2.3.zip扩展包,里面包括itext-asian.jar等扩展工具包。

二、功能介绍

在企业的信息系统中,报表处理一直占比较重要的作用,iText组件通过在服务器端使用Jsp 或JavaBean生成PDF报表,客户端采用超级连接显示或下载得到生成的报表,这样就很好的解决了B/S系统的报表处理问题。

适合使用IText的需求:

Typically, iText is used in projects that have one ofthe following requirements:

The content isn't available in advance: it'scalculated based on user input or real-time database information.

The PDF files can't be produced manually due to the massivevolume of content: a large number of pages or documents.

Documents need to be created in unattended mode, in abatch process.

The content needs to be customized or personalized;for instance, the name of the end user has to be stamped on a number of pages.

Often you'll encounter these requirements in webapplications, where content needs to be served dynamically to a browser.Normally, you'd serve this information in the form of HTML, but for somedocuments, PDF is preferred over HTML for better printing quality, foridentical presentation on a variety of platforms, for security reasons, or toreduce the file size.

通常,iText用于具有下列条件之一的项目:

内容不固定,它是基于用户输入或实时数据库信息计算。

由于页数多或者文件较大而造成的内容过多而使得PDF文件不能手动生成,。

文件需要在无人值守模式下创建的,使用批处理过程。

内容需要自定义或个性化;例如,最终用户的名字需要被印在某一页中。

通常你会在Web应用程序中遇到的这些要求,其中的内容对于浏览者来说必须是动态。通常,你会以HTML的形式提供这些信息,但对于一些文档,PDF格式在印刷质量上是优于HTML的,同样,在各种平台上,出于安全原因,或减少文件大小的考虑,PDF都优于HTML。

三、demo演示,一个最简单的使用IText转化为PDF的例子

用iText生成PDF文档需要5个步骤:

  ①建立com.itextpdf.text.Document对象的实例。

Document document= new Document();

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

PDFWriter.getInstance(document,new FileOutputStream("ITextTest.pdf"));

  ③打开文档。

document.open();

  ④向文档中添加内容。

document.add(newParagraph("IText  Test"));

  ⑤关闭文档。

document.close();

  通过上面的5个步骤,就能产生一个ITextTest.PDF的文件,文件内容为"ITextTest"。

具体代码如下:

package com.wh;  

importjava.io.FileOutputStream;
importcom.itextpdf.text.BaseColor;
importcom.itextpdf.text.Document;
importcom.itextpdf.text.Element;
importcom.itextpdf.text.Font;
importcom.itextpdf.text.Paragraph;
importcom.itextpdf.text.Rectangle;
importcom.itextpdf.text.pdf.BaseFont;
importcom.itextpdf.text.pdf.PdfPTable;
importcom.itextpdf.text.pdf.PdfWriter; public class ToPDF{
// 表头
public static final String[] tableHeader= { "姓名", "性别", "年龄",
"学院", "专业", "年级"}; // 数据表字段数
private static final int colNumber = 6; // 表格的设置
private static final int spacing = 2; // 表格的设置
private static final int padding = 2; // 导出Pdf文挡
public static void exportPdfDocument() {
// 创建文Pdf文挡50, 50, 50,50左右上下距离
Document document = newDocument(new Rectangle(1500, 2000), 50, 50, 50,
50);
try {
//使用PDFWriter进行写文件操作
PdfWriter.getInstance(document,new FileOutputStream(
"d:\\学生信息.pdf"));
document.open();
// 中文字体
BaseFont bfChinese =BaseFont.createFont("STSong-Light",
"UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
Font fontChinese = newFont(bfChinese, 12, Font.NORMAL);
// 创建有colNumber(6)列的表格
PdfPTable datatable = newPdfPTable(colNumber);
//定义表格的宽度
int[] cellsWidth = { 8, 2,2, 8, 5, 3 };
datatable.setWidths(cellsWidth);
// 表格的宽度百分比
datatable.setWidthPercentage(100);
datatable.getDefaultCell().setPadding(padding);
datatable.getDefaultCell().setBorderWidth(spacing);
//设置表格的底色
datatable.getDefaultCell().setBackgroundColor(BaseColor.GREEN);
datatable.getDefaultCell().setHorizontalAlignment(
Element.ALIGN_CENTER);
// 添加表头元素
for (int i = 0; i <colNumber; i++) {
datatable.addCell(newParagraph(tableHeader[i], fontChinese));
}
// 添加子元素
for (int i = 0; i <colNumber; i++) {
datatable.addCell(newParagraph(tableHeader[i], fontChinese));
}
document.add(datatable);
} catch (Exception e) {
e.printStackTrace();
}
document.close();
} public static void main(String[] args)throws Exception {
exportPdfDocument();
} }

(转)关于使用iText导出pdf的更多相关文章

  1. Itext导出PDF,word,图片案例

    iText导出pdf.word.图片 一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生 ...

  2. iText导出pdf、word、图片

    一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...

  3. java利用itext导出pdf

    项目中有一功能是导出历史记录,可以导出pdf和excel,这里先说导出pdf.在网上查可以用那些方式导出pdf,用itext比较多广泛. 导出pdf可以使用两种方式,一是可以根据已有的pdf模板,进行 ...

  4. iText导出PDF(图片,水印,页眉,页脚)

    项目需要导出PDF,导出的内容包含图片和文本,而且图片的数量不确定,在网上百度发现大家都在用iText,在官网发现可以把html转换为PDF,但是需要收费,那就只能自己写了. 在开始之前先在网上百度了 ...

  5. 利用itext导出PDF的小例子

    我这边使用的jar包: itext-2.1.7.jar itextasian-1.5.2.jar 代码,简单的小例子,导出pdf: PdfService.java: package com.cy.se ...

  6. 使用itext导出pdf

    导出pdf这个功能是在工作中遇到的,写这个功能的时候遇到了不少的问题,比如中文乱码,不显示的问题,这些问题在我不断的测试,研究后都一一解决了. 第一步,先导入所需要的jar包 第一个jar包是用于解决 ...

  7. Java利用IText导出PDF(更新)

    我很久以前写的还是上大学的时候写的:https://www.cnblogs.com/LUA123/p/5108007.html ,今天心血来潮决定更新一波. 看了下官网(https://itextpd ...

  8. 史上最全的springboot导出pdf文件

    最近项目有一个导出报表文件的需求,我脑中闪过第一念头就是导出pdf(产品经理没有硬性规定导出excel还是pdf文件),于是赶紧上网查看相关的资料,直到踩了无数的坑把功能做出来了才知道其实导出exce ...

  9. iTex导出PDF

    iText导出PDF,所需jar包如下: itext-asian-5.2.0.jar 支持导出中文的jar包 itextpdf-5.5.9.jar PDF核心jar包 bcprov-jdk15on-1 ...

随机推荐

  1. 屏幕測试亮点,新买了一个显示器,使用web简单的測试下了亮点

    1,购买了一个新的显示器 趁着双11的时候价格廉价.入手了一个显示器. http://serve.netsh.org/pub/dead_pixel.bin 滚动下就能够换颜色了.把chrome最大化, ...

  2. 在Windows 8.1系统上配置免安装版mysql-5.6.21-winx64

    1.到官网上下载MySQL 下载地址为:http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.21-winx64.zip 2.解压文件到D盘 当然你可以 ...

  3. session理解

    Session,底层的实现就是一个Map<集合>,有些Data在Server内存中,APP要分层.Data在各个层之间肯定要以一种形态传递(泛型),之前Servlet dao.getLis ...

  4. NUnit Console Command Line

    https://github.com/nunit/docs/wiki/Console-Command-Line The console interface runner is invoked by a ...

  5. Linux - 配置php-fpm 以及 配置nginx支持php

    配置php-fpm [root@localhost php7]# which php-fpm /usr/local/php7/sbin/php-fpm [root@localhost php7]# p ...

  6. 【撸码caffe 一】syncedmen.hpp

    SyncedMemory类主要负责在主机(CPU)和设备(GPU)之间管理内存分配和数据同步工作,封装了CPU和GPU之间的数据交互操作. 补充一点GPU的相关知识: 对CUDA架构而言,主机端的内存 ...

  7. java环境的配置和求最大子数组

    做java开发的朋友,都应该有一个适合自己的开发环境,而eclipse就是这么一个适合java开发的集成环境,完全免费,是java开发人员的必备平台.在安装eclipse之前需要安装JDK, JDK是 ...

  8. Java攻城狮之基础练习题------经典例题

    (一)键盘录入1----7,分别于控制台输出对应的周一,周二,周三,周四,周五,周六,周天. (二)设置一个数组,求出数组中对应的最大值以及索引. (三)在控制台输出9x9乘法口诀表. (四)使用冒泡 ...

  9. Jsoup的简单的使用示例

    利用Jsoup中的相关方法实现网页中的数据爬去,本例子爬去的网页为比较流行的programmableweb中的mashup描述内容,然后为数据库中存在的mashup添加相应的描述. package c ...

  10. lua math.random()

    math.random([n [,m]]) 用法:1.无参调用,产生[0, 1)之间的浮点随机数. 2.一个参数n,产生[1, n]之间的整数. 3.两个参数,产生[n, m]之间的整数. math. ...