使用iText操作pdf文件
同时我也查了下java领域针对pdf的相关组件,发现有很多开源的东东,都可以操作pdf,恩,很不错的。大致介绍几个:xpdf,iText,PDFBox,感兴趣的话,大家可以自己查一下。
好了,回到文章主题,查了下iText后,我也去稍微看了下相关的api,做了一些简单的demo,虽然网上相关介绍很多,但是自己写一遍程序再用自己的语言记录下来,理解会更为深刻一点。
准备工作:到http://www.lowagie.com/iText/下载最新的iText的jar包,并将其放到classpath中。
一.Hello World
在这个pdf文件中,我们只显示一句话"Hello World",实现方式如下:
Document doc = new Document();
try ...{
// 定义输出位置并把文档对象装入输出对象中
PdfWriter.getInstance(doc, new FileOutputStream("/root/hello.pdf"));
// 打开文档对象
doc.open();
// 加入文字“Hello World”
doc.add(new Paragraph("HelloWorld"));
// 关闭文档对象,释放资源
doc.close();
} catch (FileNotFoundException e) ...{
e.printStackTrace();
} catch (DocumentException e) ...{
e.printStackTrace();
}
Document(文档)是创建pdf需要使用的第一个类,一旦创建了文档,要向pdf文件里写入内容,则需要一个写入器,而PdfWriter就是这样的一个写入器。Paragraph这个类表示一个缩进的段落。运行以上程序,我们就会在/root目录下看到hello.pdf文件。
但是在实际工作中,我们不可能做这么简单的工作,下面就介绍一下常用的操作。
public Document(Rectangle pageSize);
public Document(Rectangle pageSize,
int marginLeft,
int marginRight,
int marginTop,
int marginBottom);
//文档的背景色
pSize.setBackgroundColor(Color.blue);
//创建一个文档对象,设置初始化大小和页边距
Document doc=new Document(pSize,5,5,5,5);
doc.add(new Paragraph("HelloWorld", FontFactory.getFont(
FontFactory.COURIER, 20, Font.BOLD, new Color(255, 0, 0))));
try ...{
// 定义输出位置并把文档对象装入输出对象中
PdfWriter.getInstance(doc, new FileOutputStream("/root/hello.pdf"));
// 打开文档对象
doc.open();
Table t = new Table(2,2);
t.setBorderColor(new Color(0, 0, 255));//设置边框颜色为蓝色
t.setPadding(5);
t.setSpacing(5);//设置单元格边界
t.setBorderWidth(1);//设置边框宽度
Cell c1 = new Cell("header1");
c1.setHeader(true);
t.addCell(c1);
c1 = new Cell("Header2");
t.addCell(c1);
t.endHeaders();
t.addCell("1.1");
t.addCell("1.2");
doc.add(t);
// 关闭文档对象,释放资源
doc.close();
} catch (FileNotFoundException e) ...{
e.printStackTrace();
} catch (DocumentException e) ...{
e.printStackTrace();
}
Image jpeg;
try ...{
PdfWriter.getInstance(doc, new FileOutputStream("/root/hello.pdf"));
doc.open();
jpeg = Image.getInstance("/root/1.gif");
//图片居中
jpeg.setAlignment(Image.ALIGN_CENTER);
doc.add(jpeg);
doc.close();
} catch (BadElementException e) ...{
e.printStackTrace();
} catch (MalformedURLException e) ...{
e.printStackTrace();
} catch (IOException e) ...{
e.printStackTrace();
} catch (DocumentException e) ...{
e.printStackTrace();
}
好了,到这里我大致也介绍完了,欢迎大家拍砖,呵呵
转自:http://blog.csdn.net/hbcui1984/archive/2007/06/05/1638843.aspx