使用iText操作pdf文件同时我也查了下java领域针对pdf的相关组件,发现有很多开源的东东,都可以操作pdf,恩,很不错的。大致介绍几个:xpdf,iText,PDFBox,感兴趣的话,大家可以自己查一下。 好了,回到文章主题,查了下iText后,我也去稍微看了下相关的api,做了一些简单的demo,虽然网上相关介绍很多,但是自己写一遍程序再用自己的语言记录下来,理解会更为深刻一点。 准备工作:到http://www./iText/下载最新的iText的jar包,并将其放到classpath中。 一.Hello World iText创建pdf文件是十分简单的,为了演示其极其简单性,我们做一个HelloWorld吧,让大家体验一下。
二.设置页边距在这个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文件。 但是在实际工作中,我们不可能做这么简单的工作,下面就介绍一下常用的操作。 如果我们希望定义页面大小和页边距,可以通过使用Document的构造方法实现:
三.设置字体 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,5,5,5,5); Document doc=new Document(PageSize.A4,5,5,5,5);
iText可以设置显示文本的字体,大小,颜色等,如下:
四.编辑表格 // 加入文字“Hello World”,并设置字体为粗体,大小为20,颜色为红色
doc.add(new Paragraph("HelloWorld", FontFactory.getFont( FontFactory.COURIER, 20, Font.BOLD, new Color(255, 0, 0)))); pdf中的table和html中的table差不多,只是其单元格是cell,如下代码加入了一个2*2的表格,代码很简单,就不过多解释了。
五.插入图片 Document doc = new Document();
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(); } 插入图片和swing插入图片差不多,大家可以参考一下:
Document doc = new Document();
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(); } 好了,到这里我大致也介绍完了,欢迎大家拍砖,呵呵 Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1638843 |
|
来自: 昵称2807 > 《Java or Jsp》