在Java中创建PDF:iText JAR

开发 后端
在如今的企业级应用程序中生成PDF的功能很常见。但是使用Java来实现这个功能却不那么容易,因为Java没有默认提供处理PDF文件所需的API。不过现在有了iText JAR,实现这个功能就不难了。

iText是一个免费的Java-PDF库,通过它可以实现on the fly(动态的)创建PDF。iText是那些需要动态PDF文档生成或操作功能来改进应用程序的开发者的理想选择。iText不是一个用户终端工具,也就是说你不用像使用Acrobat或其它PDF工具那样,只需要把iText内建到自己的程序中,它就可以自动的完成PDF生成和操作。

iText具有如下功能:

◆将PDF传输到浏览器

◆通过XML文件或数据库来生成动态文档

◆支持众多的PDF交互功能

◆添加书签、页码和水印等等

◆分割、连接PDF页面,或对他们进行平移缩放等操作

◆自动填PDF表格

◆为PDF文件添加数字水印

系统要求

JDK 1.4或更高版本

获得方法

可以在这里下载:http://www.lowagie.com/iText/download.html

核心文件是:iText-2.1.5.jar

使用iText生成PDF的简单例子

将itext.jar加入你的class path。并将下边的代码复制到一个叫GeneratePDF.java的文件中,编译并执行,它会在C盘创建一个叫Test.pdf的文件。

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.util.Date;

import com.lowagie.text.Document;

import com.lowagie.text.Paragraph;

import com.lowagie.text.pdf.PdfWriter;

public class GeneratePDF {

public static void main(String[] args) {

try {

OutputStream file = new FileOutputStream(new File("C:\\Test.pdf"));

Document document = new Document();

PdfWriter.getInstance(document, file);

document.open();

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

document.add(new Paragraph(new Date().toString()));

document.close();

file.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

在上面的代码中我们创建了一个Document类来表示我们的PDF文档,同时,我们将OutputStream对象通过getInstance()方法把输出流给了OutputStream。因此,在上面的例子中,我们创建了一个用于输出的文件,并把输出导入到这个文件。

使用OutputStream在HTTP请求中生成PDF

有时我们希望为网络应用程序加入PDF生成功能,用户可以通过点击一个保存成PDF文件按钮就可以得到PDF文件,因此需要动态创建PDF并发送到客户端浏览器。

下面的代码使用了Struts的Action class,其中实现了动态创建PDF并将其发送到浏览器的功能

package net.viralpatel.struts.helloworld.action;

import java.util.Date;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;

import org.apache.struts.action.ActionForm;

import org.apache.struts.action.ActionForward;

import org.apache.struts.action.ActionMapping;

import com.lowagie.text.Document;

import com.lowagie.text.Paragraph;

import com.lowagie.text.pdf.PdfWriter;

/**

* @author KiranRavi_Hegde

*

*/

public class PdfHelloWorldAction extends Action{

public ActionForward execute(ActionMapping mapping, ActionForm form,

HttpServletRequest request, HttpServletResponse response)

throws Exception {

Document document = new Document();

try{

response.setContentType("application/pdf");

PdfWriter.getInstance(document, response.getOutputStream());

document.open();

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

document.add(new Paragraph(new Date().toString()));

}catch(Exception e){

e.printStackTrace();

}

document.close();

return null;

}

}

 

自习分析上面的代码,就会发现我们将response.getOutputStream()对象传递给了getInstance()方法。从而iText生成的输出文档就会直接由response输出。同时不要忘记将content type设为application/pdf

设置PDF的属性

生成PDF的同时,也可以设置不同的属性,比如作者名,题目以及文件描述等,下面的代码就生成了一些属性:

document.addAuthor("Kiran Hegde");

document.addCreationDate();

document.addCreator("iText library");

document.addTitle("Hello World PDF");

【编辑推荐】

  1. JAR文件包及jar命令详解
  2. 使用PERL脚本生成PDF输出
  3. 漫步云端 Java开发者的新选择
责任编辑:yangsai 来源: CSDN
相关推荐

2012-11-28 11:14:39

IBMdW

2023-12-13 12:27:46

2022-07-22 08:18:28

JARJava对象

2018-01-26 09:02:30

LinuxPDF创建视频

2023-02-26 10:16:19

JavaPDF文档

2023-01-03 07:49:45

Java随机数线程

2009-04-03 13:09:12

Windows Emb

2020-10-09 09:40:59

GNOME桌面主题桌面应用

2023-01-10 13:53:21

Linux定时器

2024-01-29 10:20:39

Obsidian链接

2010-03-17 14:58:20

Java多线程

2020-06-02 09:06:31

VueTransition前端

2010-05-10 14:33:11

Oracle proc

2023-03-04 13:32:35

Linux创建目录

2023-03-21 12:52:05

Linux创建文件

2021-12-08 10:36:46

JavaPDF文件

2009-06-22 14:13:00

java工具javadocjar

2022-03-21 09:50:50

JavaGroovy映射Map

2022-03-30 08:19:12

JavaGroovy

2009-07-16 15:27:13

Windows Emb
点赞
收藏

51CTO技术栈公众号