使用Java生成Pdf文档

如今PDF格式文档的使用已经越来越普遍,它在文档压缩、安全等方面都表现的非常优秀,有关它的好处我就不在这里多说了。那么如何使用Java语言开发应用来输出PDF格式的文档呢?在这里给大家介绍iText,它是一个开发源代码的项目,你可以使用iText方便的实现PDF的输出。这篇文章我将向大家介绍如何使用iText来生成PDF文档。

HelloWorld

作为一个程序开发人员,对于HelloWorld程序并不陌生,几乎每一种语言或应用开始总是会举一个HelloWorld的例子来向大家介绍。在开始介绍iText时,我们不妨也从HelloWorld开始

现在运行上面的代码(记住在这之前把itext.jar放到你的ClassPath 之中),如果一切正常的话你会在”c:/”看到一个名为hello.pdf的文件。打开这个文件,看到了什么?是的文档里有一行字符“HelloWorld”,如下图。

怎么样是不是很简单?当然我们在实际应用时不可能只是简单的输出一个字符串就完事了,还要作很多的工作,输出更复杂的PDF,下面就让我们开始进一步了解iText的其他功能。

更复杂的设置

分析一下Document的构造方法,我们发现除了我们上一个例子中的无参数构造以外还有两个:

/*

* Created on 2004-1-3,创建第一个Hello World程序

*/

package test1;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import com.lowagie.text.*;

import com.lowagie.text.pdf.*;

public class HelloWorld {

public static void main(String[] args) {

//创建一个文档对象

Document doc=new Document();

try {

//定义输出位置并把文档对象装入输出对象中

PdfWriter.getInstance(doc, new FileOutputStream("c:/hello.pdf"));

//打开文档对象

doc.open();

// 加入文字“Hello World”

doc.add(new Paragraph("HelloWorld"));

// 关闭文档对象,释放资源

doc.close();

} catch (FileNotFoundException e) {

e.printStackTrace();

} catch (DocumentException e) {

e.printStackTrace();

}

}

}

public Document();

public Document(Rectangle pageSize);

public Document(Rectangle pageSize,

int marginLeft,

int marginRight,

int marginTop,

int marginBottom);

第一个设置文档的页面大小,第二个除了设置文档的页面大小还设置页面边距。下面我分别给出例子。

Rectangle pSize=new Rectangle(144,90);

//文档的背景色

pSize.setBackgroundColor(Color.blue);

//创建一个文档对象,并设置他的初始化大小

Document doc=new Document(pSize);

Rectangle pSize=new Rectangle(144,90);

//文档的背景色

pSize.setBackgroundColor(Color.blue);

//创建一个文档对象,设置初始化大小和页边距

Document doc=new Document(pSize,5,5,5,5);

将第一个例子中的代码按上面的方法修改然后运行,你可以看到输出的PDF文档将是这个样子,文档变得很小而且背景是蓝色:

在上面的例子中我们通过Rectangle设置了文档的大小,其实iText已经为我们定义好了许多常用的页面,比如:A0-A10, LEGAL, LETTER等等,这些都放在com.lowagie.text.PageSize这个类中,你可以通过调用PageSize中的静态方法直接引用页面信息。比如:

PageSize.A4;

设置字体

使用iText可以设置文字的字体,对于我们中国的程序员来说如何显示中文是最紧要的问题。幸好iText中有一个专门的包用来设置亚洲国家的字体你可以从http://itext.sourceforge.net/downloads/iTextAsian.jar下载这个包。然后把它直接放到你的ClassPath中就可以了。如何设置字体呢?

BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);

在上面的代码中设置了中文字体的显示,你只要使用下面的代码就可以包中文加到PDF中了

String title = "我爱喝咖啡";

Paragraph t = new Paragraph(title, FontChinese);

doc.add(t);

如果你觉得这样设置很麻烦的话,呵呵,那你要自己扩展它的源代码了,设置字体全部在那个BaseFont里边。

编辑表格

iText中的表格很像HTML中表格的使用不过它有一个cell代表一个格子,基本上这里的Table和Swing中的Table对象是一致的,比如上面代码中对于表格的设置:

//定义一个表格

Table table = new Table(2);

//设置表格边框

table.setBorderWidth(1);

Cell cell = new Cell("Matrix III");

cell.setHeader(true);

//分列

cell.setColspan(2);

cell.setBackgroundColor(Color.blue);

table.addCell(cell);

放置图片

现在你一定知道如何把一个图片加到文档中了,没错只要声明一个Image对象就可以了,这里的Image和AWT中的Image使用方法是一样的。

//定义一个图片

Image jpeg = Image.getInstance("C:/matrix.jpg");

//图片居中

jpeg.setAlignment(Image.ALIGN_CENTER);

结束

有关iText的使用我就大致介绍这些,更深入的东西只有大家参考源代码自己体会了。

时间: 2024-10-28 18:31:36

使用Java生成Pdf文档的相关文章

java导出pdf文档合并问题

问题描述 java导出pdf文档合并问题 需求:单个pdf能够导出,现在的问题就是如何实现在下载多个pdf文档时候实现pdf文档的合并 解决方案 Java和iText导出pdf文档使用java生成pdf文档(2)java生成pdf文档 解决方案二: 对于多个文档的操作为什么不考虑打包呢,使用ZIP打包就好了啊.如果你一定要将多个PDF文档合变成一个的话,那就写的时候指定从哪里开始写.

利用Java动态生成 PDF 文档

利用Java动态生成 PDF 文档,则需要开源的API.首先我们先想象需求,在企业应用中,客户会提出一些复杂的需求,比如会针对具体的业务,构建比较典型的具备文档性质的内容,一般会导出PDF进行存档.那么目前最佳的解决方案,你可能会想到 iText ,对没错... iText+(Velocity / Freemarker)可以实现.不过据我熟悉,iText本身提供的HTML解析器还是不够强大,许多HTML标签和属性无法识别,更悲催的是简单的CSS它不认识,排版调整样式会让你头大的.不要失望,接下来

巧用ASP实现在线生成PDF文档

    在开始讲解ASP实现在线生成PDF文档之前我们先了解一下PDF的历史,了解了某个东西,知道他的作用性以及重要性,再去学习该ASP程序相信效果一定不一样.     Adobe PDF格式已经变成很多机构和公司进行跨平台制表的通用媒体格式.尽管我不是这个产品的狂热痴迷者,却不得不接受这样一个事实:用这个格式产生一个协定可能会比用Word还要好.           由于在一家雇用公司工作,我已经把我们所有早期的软件写成能在Internet上运行,这样我们就能和小的子公司共享公用数据库了.然而

用C#实现生成PDF文档(原码)

用C#实现生成PDF文档(原码) //write by wenhui.orgusing System;using System.IO;using System.Text;using System.Collections; namespace PDFGenerator{ public class PDFGenerator{static float pageWidth = 594.0f;static float pageDepth = 828.0f;static float pageMargin =

pdf9-WorkPlace5.5中能直接生成Pdf文档吗?

问题描述 WorkPlace5.5中能直接生成Pdf文档吗? 请问各位大侠们,WorkPlace5.5中能直接生成Pdf文吗?我试了几次,总是出现无法识别的控制命令,都包含所有包了,咋回事?

界面-Qt5打印,却生成PDF文档

问题描述 Qt5打印,却生成PDF文档 在自己机器上运行好好的,打印预览都OK,但是打包后去别的机器上后,点击打印后,预览界面还是正常的,但是选择打印机那个标准提示框不见了,点击打印那个按钮,直接让我保存为PDF格式文件,怎么回事?? 电脑打印机可以使用,打印机也设置为默认了 void Print::printInfor(int n) { /* QPrinter printer( QPrinter::PrinterResolution ); printer.setPageSize(QPrinte

java 读取pdf文档中的表格数据

问题描述 java 读取pdf文档中的表格数据 如题,如何使用Java读取PDF表格中的数据!跪求帮助,在线等回复,急!急!急! 解决方案 用Java读取pdf中的数据用Java读取pdf中的数据用Java读取pdf中的数据 解决方案二: 读出来就行,还是一行一条数据 解决方案三: http://bbs.csdn.net/topics/320171930 解决方案四: 要是实在不行先转换了啊

java生成word文档问题

问题描述 java生成word文档问题 如图,java操作word时怎么修改这些信息(来源中的程序名称这些) 解决方案 http://daimami.com/office/77961.htm 类似这样的代码 sumInfo.getApplicationName() 解决方案二: 这个要利用第三方的sdk才能实现,java本身没有方法

利用php生成PDF文档功能

PHP捆绑PDFLIB库也许是最好的web出版平台了.一对典型的用法: 需求小册子 电子商务发货单 通过这个指南,你可以学会怎样使用php教程4中的PDF扩展来创建PDF文档. 我们也把焦点放在用mysql教程数据来创建PDF文档. 内容摘要 安装PDFLib 3.0.1 和有PDF支持的PHP4.01pl2(译注:你可以安装最新的php4.03pl1) 提取PDF文档 (我假设你有一点配置php的经验) 安装PDFLib和有PDF支持的PHP. 需求: PHP 4.02+ 从 http://p