如今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的使用我就大致介绍这些,更深入的东西只有大家参考源代码自己体会了。
闽公网安备 35060202000074号