iText使用简单介绍.docx_第1页
iText使用简单介绍.docx_第2页
iText使用简单介绍.docx_第3页
iText使用简单介绍.docx_第4页
iText使用简单介绍.docx_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PDF iText 使用简单介绍 发布日期:2006-06-19 一、前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件-iText。通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或下载得到生成的报表,这样就很好的解决了B/S系统的报表处理问题。 二、iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。 iText的安装非常方便,在/iText/download.html - download 网站上下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了。 三、建立第一个PDF文档 用iText生成PDF文档需要5个步骤: 建立com.lowagie.text.Document对象的实例。 Document document = new Document(); 建立一个书写器(Writer)与document对象关联,通过书写器(Writer)可以将文档写入到磁盘中。 PDFWriter.getInstance(document, new FileOutputStream(Helloworld.PDF); 打开文档。 document.open(); 向文档中添加内容。 document.add(new Paragraph(Hello World); 关闭文档。 document.close(); 通过上面的5个步骤,就能产生一个Helloworld.PDF的文件,文件内容为Hello World。 建立com.lowagie.text.Document对象的实例 com.lowagie.text.Document对象的构建函数有三个,分别是: public Document(); public Document(Rectangle pageSize); public Document(Rectangle pageSize,int marginLeft,int marginRight,int marginTop,int marginBottom); 构建函数的参数pageSize是文档页面的大小,对于第一个构建函数,页面的大小为A4,同Document(PageSize.A4)的效果一样;对于第三个构建函数,参数marginLeft、marginRight、marginTop、marginBottom分别为左、右、上、下的页边距。 通过参数pageSize可以设定页面大小、面背景色、以及页面横向/纵向等属性。iText定义了A0-A10、AL、LETTER、HALFLETTER、_11x17、LEDGER、NOTE、B0-B5、ARCH_A-ARCH_E、FLSA 和FLSE等纸张类型,也可以通过Rectangle pageSize = new Rectangle(144, 720);自定义纸张。通过Rectangle方法rotate()可以将页面设置成横向。 书写器(Writer)对象 一旦文档(document)对象建立好之后,需要建立一个或多个书写器(Writer)对象与之关联。通过书写器(Writer)对象可以将具体文档存盘成需要的格式,如com.lowagie.text.PDF.PDFWriter可以将文档存成PDF文件,com.lowagie.text.html.HtmlWriter可以将文档存成html文件。 设定文档属性 在文档打开之前,可以设定文档的标题、主题、作者、关键字、装订方式、创建者、生产者、创建日期等属性,调用的方法分别是: public boolean addTitle(String title) public boolean addSubject(String subject) public boolean addKeywords(String keywords) public boolean addAuthor(String author) public boolean addCreator(String creator) public boolean addProducer() public boolean addCreationDate() public boolean addHeader(String name, String content) 其中方法addHeader对于PDF文档无效,addHeader仅对html文档有效,用于添加文档的头信息。 当新的页面产生之前,可以设定页面的大小、书签、脚注(HeaderFooter)等信息,调用的方法是: public boolean setPageSize(Rectangle pageSize) public boolean add(Watermark watermark) public void removeWatermark() public void setHeader(HeaderFooter header) public void resetHeader() public void setFooter(HeaderFooter footer) public void resetFooter() public void resetPageCount() public void setPageCount(int pageN) 如果要设定第一页的页面属性,这些方法必须在文档打开之前调用。 对于PDF文档,iText还提供了文档的显示属性,通过调用书写器的setViewerPreferences方法可以控制文档打开时Acrobat Reader的显示属性,如是否单页显示、是否全屏显示、是否隐藏状态条等属性。 另外,iText也提供了对PDF文件的安全保护,通过书写器(Writer)的setEncryption方法,可以设定文档的用户口令、只读、可打印等属性。 添加文档内容 所有向文档添加的内容都是以对象为单位的,如Phrase、Paragraph、Table、Graphic对象等。比较常用的是段落(Paragraph)对象,用于向文档中添加一段文字。 四、文本处理 iText中用文本块(Chunk)、短语(Phrase)和段落(paragraph)处理文本。 文本块(Chunk)是处理文本的最小单位,有一串带格式(包括字体、颜色、大小)的字符串组成。如以下代码就是产生一个字体为HELVETICA、大小为10、带下划线的字符串: Chunk chunk1 = new Chunk(This text is underlined, FontFactory.getFont(FontFactory.HELVETICA, 12, Font.UNDERLINE); 短语(Phrase)由一个或多个文本块(Chunk)组成,短语(Phrase)也可以设定字体,但对于其中以设定过字体的文本块(Chunk)无效。通过短语(Phrase)成员函数add可以将一个文本块(Chunk)加到短语(Phrase)中,如:phrase6.add(chunk); 段落(paragraph)由一个或多个文本块(Chunk)或短语(Phrase)组成,相当于WORD文档中的段落概念,同样可以设定段落的字体大小、颜色等属性。另外也可以设定段落的首行缩进、对齐方式(左对齐、右对齐、居中对齐)。通过函数setAlignment可以设定段落的对齐方式,setAlignment的参数1为居中对齐、2为右对齐、3为左对齐,默认为左对齐。 五、表格处理 iText中处理表格的类为:com.lowagie.text.Table和com.lowagie.text.PDF.PDFPTable,对于比较简单的表格处理可以用com.lowagie.text.Table,但是如果要处理复杂的表格,这就需要com.lowagie.text.PDF.PDFPTable进行处理。这里就类com.lowagie.text.Table进行说明。 类com.lowagie.text.Table的构造函数有三个: Table (int columns) Table(int columns, int rows) Table(Properties attributes) 参数columns、rows、attributes分别为表格的列数、行数、表格属性。创建表格时必须指定表格的列数,而对于行数可以不用指定。 建立表格之后,可以设定表格的属性,如:边框宽度、边框颜色、衬距(padding space 即单元格之间的间距)大小等属性。下面通过一个简单的例子说明如何使用表格,代码如下: 1:Table table = new Table(3); 2:table.setBorderWidth(1); 3:table.setBorderColor(new Color(0, 0, 255); 4:table.setPadding(5); 5:table.setSpacing(5); 6:Cell cell = new Cell(header); 7:cell.setHeader(true); 8:cell.setColspan(3); 9:table.addCell(cell); 10:table.endHeaders(); 11:cell = new Cell(example cell with colspan 1 and rowspan 2); 12:cell.setRowspan(2); 13:cell.setBorderColor(new Color(255, 0, 0); 14:table.addCell(cell); 15:table.addCell(1.1); 16:table.addCell(2.1); 17:table.addCell(1.2); 18:table.addCell(2.2); 19:table.addCell(cell test1); 20:cell = new Cell(big cell); 21:cell.setRowspan(2); 22:cell.setColspan(2); 23:table.addCell(cell); 24:table.addCell(cell test2); 运行结果如下: header example cell with colspan 1 and rowspan 2 1.1 2.1 1.2 2.2 cell test1 big cell cell test2 代码1-5行用于新建一个表格,如代码所示,建立了一个列数为3的表格,并将边框宽度设为1,颜色为蓝色,衬距为5。 代码6-10行用于设定表格的表头,第7行cell.setHeader(true);是将该单元格作为表头信息显示;第8行cell.setColspan(3);指定了该单元格占3列;为表格添加表头信息时,要注意的是一旦表头信息添加完了之后,必须调用endHeaders()方法,如第10行,否则当表格跨页后,表头信息不会再显示。 代码11-14行是向表格中添加一个宽度占一列,长度占二行的单元格。 往表格中添加单元格(cell)时,按自左向右、从上而下的次序添加。如执行完11行代码后,表格的右下方出现2行2列的空白,这是再往表格添加单元格时,先填满这个空白,然后再另起一行,15-24行代码说明了这种添加顺序。 六、图像处理 iText中处理表格的类为com.lowagie.text.Image,目前iText支持的图像格式有:GIF, Jpeg, PNG, wmf等格式,对于不同的图像格式,iText用同样的构造函数自动识别图像格式。通过下面的代码分别获得gif、jpg、png图像的实例。 Image gif = Image.getInstance(vonnegut.gif); Image jpeg = Image.getInstance(myKids.jpg); Image png = Image.getInstance(hitchcock.png); 图像的位置 图像的位置主要是指图像在文档中的对齐方式、图像和文本的位置关系。IText中通过函数public void setAlignment(int alignment)进行处理,参数alignment为Image.RIGHT、Image.MIDDLE、Image.LEFT分别指右对齐、居中、左对齐;当参数alignment为Image.TEXTWRAP,Image.UNDERLYING分别指文字绕图形显示、图形作为文字的背景显示。这两种参数可以结合以达到预期的效果,如setAlignment(Image.RIGHT|Image.TEXTWRAP)显示的效果为图像右对齐,文字围绕图像显示。 图像的尺寸和旋转 如果图像在文档中不按原尺寸显示,可以通过下面的函数进行设定: public void scaleAbsolute(int newWidth, int newHeight) public void scalePercent(int percent) public void scalePercent(int percentX, int percentY) 函数public void scaleAbsolute(int newWidth, int newHeight)直接设定显示尺寸;函数public void scalePercent(int percent)设定显示比例,如scalePercent(50)表示显示的大小为原尺寸的50%;而函数scalePercent(int percentX, int percentY)则图像高宽的显示比例。 如果图像需要旋转一定角度之后在文档中显示,可以通过函数public void setRotation(double r)设定,参数r为弧度,如果旋转角度为30度,则参数r= Math.PI / 6。 七、中文处理 默认的iText字体设置不支持中文字体,需要下载远东字体包iTextAsian.jar,否则不能往PDF文档中输出中文字体。通过下面的代码就可以在文档中使用中文了: BaseFont bfChinese = BaseFont.createFont(STSong-Light, UniGB-UCS2-H, BaseFont.NOT_EMBEDDED); com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 12, com.lowagie.text.Font.NORMAL); Paragraph pragraph=new Paragraph(你好, FontChinese); 八、后计 iText还有很多高级的功能,这里就不一一介绍了,具体开发时可参考发布的文档。总的来说,iText是一套java环境下不错的制作PDF的组件。因为iText支持jsp/javabean下的开发,这使得B/S应用中的报表问题能得到很好的解决。由于iText毕竟不是专门为制作报表设计,所有报表中的内容、格式都需要通过写代码实现,相对于那些专业的支持可视化设计的报表软件来说,编程的工作量就有一定程度的增加。 从Java应用程序动态生成PDF文件如果应用程序需要动态生成 PDF 文档,则需要 iText 库。开放源码的 iText 库使 PDF 文档的创建能够在瞬间完成。本文介绍了 iText 并提供了使用它从 Java ? 技术应用程序生成 PDF 文档的由浅入深的指南。我们创建了一个示例应用程序以更好地理解 iText。很多应用程序要求动态生成 PDF 文档。这类应用程序包括银行生成用于电子邮件投递的客户报表,到读者购买特定图书章节并以 PDF 格式接收这些文档。例子罗列下去是很多的。在本文中,将使用 iText Java 库生成 PDF 文档,并引导您完成一个示例应用程序,以使您能够更好地理解和使用 iText.熟悉 iTextiText 是 L 站点(请参阅 参考资料)免费提供的 Java 库。iText 库的功能很强大,支持 HTML、RTF 和 XML 文档的生成,此外还能够生成 PDF 文档。可以从多种字体中选择文档中所使用的字体。同时,iText 的结构允许使用相同的代码生成以上任意类型的文档。iText 库中的类用于以各种字体来生成 PDF 文本、在 PDF 文档中生成表格、为页添加水印等。iText 还提供许多功能。在一篇文章中不可能一一演示。本文中将介绍生成 PDF 文档的基本需求。我们将使用 Eclipse 来进行示例应用程序开发。作为一个开放源码的 IDE,可以免费获得 Eclipse,而且其功能非常强大。现在就可以下载 Eclipse。iText API:近距离观察com.lowagie.text.Document 是生成 PDF 的主要的类。它是需要使用的第一个类。一旦开始创建文档,将需要一个写入器向文档中写入内容。com.lowagie.text.pdf.PdfWriter 就是一个 PDF 写入器。下面列出了通常需要使用的类:com.lowagie.text.Paragraph 这个类表示一个缩进的段落。 com.lowagie.text.Chapter 这个类表示 PDF 文档中的章节。使用 Paragraph 作为题目并使用 int 作为章节号码来创建它。com.lowagie.text.Font 这个类包含了全部的字体规范,例如字体、大小、样式和颜色。各种字体都在这个类中声明为静态常数。com.lowagie.text.List 这个类表示一个列表,按顺序包含许多 ListI.lowagie.text.Table 这个类表示包含单元格的表,单元格有序地排列在矩阵中。下载 iText 并在 Eclipse 中进行配置作为一个纯粹的 Java 库,iText 是以 JAR 文件的形式出现的(请参阅 参考资料)。一旦下载了这个库(在路径 C:temp 下),执行下列步骤将会在 Eclipse 环境中配置 iText 库:在 Eclipse 中创建一个新的 Java 项目,将其命名为 iText。在 Package Explorer 视图中右击 iText 项目,然后选择 Properties。单击 Java Build Path。在 Libraries 选项卡中,单击 Add External JARs。浏览到 C:temp 目录,选择该目录下的 itext-1.3.jar。现在已经配置好 iText,Eclipse 已经准备好创建 Java 应用程序以生成动态 PDF 文档。示例应用程序还有什么能够比自己动手创建一个工作示例更好地演示技术了?现在有了所需的工具(Eclipse IDE)和库(iText 库),可以开始设计和开发一个示例应用程序了。让我们创建一个简单的 PDF 文档,其中包含一些基本元素,如纯文本、非默认字体的彩色文本、表格、列表、章节和小节等。此应用程序的目的是让您熟悉 iText 库的使用方式。有很多与帮助生成 PDF 文档有关的类。在这里不可能介绍所有这些类。iText 的 javadoc 是介绍如何使用这些类的很好的资料。下面让我们来开始编写代码。第一步是创建一个文档。文档是 PDF 文档的所有元素的容器。 清单 1. 实例化文档对象Document document = new Document(PageSize.A4, 50, 50, 50, 50);第一个参数是页面大小。接下来的参数分别是左、右、上和下页边距。但是还没有定义该文档的类型。它取决于所创建的写入器的类型。对于我们的示例,选择了 com.lowagie.text.pdf.PdfWriter。其他写入器为 HtmlWriter、RtfWriter、XmlWriter 等等。它们的名称解释了它们的实际用途。清单 2. 创建 PdfWriter 对象PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(C:ITextTest.pdf);document.open();第一个参数是对文档对象的引用,第二个参数是文件的实际名称,在该名称中还会给出其输出路径。接下来,打开文档以写入内容。现在,将在文档的第一页上添加一些文本。通过 com.lowagie.text.Paragraph 来添加文本。可以用文本及其默认的字体、颜色、大小等等设置来创建一个默认段落。或者,也可以设置自己的字体。下面让我们来看看这两种做法。清单 3. 创建段落对象document.add(new Paragraph(First page of the document.);document.add(new Paragraph(Some more text on the first page with different color and font type., FontFactory.getFont(FontFactory.COURIER, 14, Font.BOLD, new Color(255, 150, 200); 下面是上面代码的输出示例。在上面代码的结尾处添加 document.close(); 以关闭文档。 图 1. 上面代码的输出示例 您已经看到了如何向 PDF 文档中添加纯文本。接下来,需要向文档中添加一些复杂的元素。我们开始创建一个新的章节。章节是一个特殊的小节,默认情况下,章节从一个新的页面开始,并显示一个默认的编号。清单 4. 创建章节对象Paragraph title1 = new Paragraph(Chapter 1, FontFactory.getFont(FontFactory.HELVETICA, 18, Font.BOLDITALIC, new Color(0, 0, 255);Chapter chapter1 = new Chapter(title1, 1);chapter1.setNumberDepth(0); 在上面的代码中,创建了一个新的章节对象,chapter1,其标题为 “This is Chapter 1”,将编号级别设为 0 就不会在页面上显示章节编号。小节是章节的子元素。在下面的代码中,创建了一个标题为 “This is Section 1 in Chapter 1” 的小节。为在该小节下添加一些文本,创建了另一个段落对象,someSectionText,并将其添加到小节对象中。清单 5. 创建小节对象在添加表格之前,我们先看一下文档的样子。添加下面两行代码以关闭文档,然后编译并执行程序以生成 PDF 文档:document.add(chapter1);document.close();。图 2. 章节输出示例 接下来,创建一个表格对象。创建一个包含行列矩阵的表格。行中的单元格可以跨多个列。同样地,列中的单元格也可以跨多个行。因此,一个 3 x 2 的表格实际上不一定有 6 个单元格。清单 6. 创建表格对象Table t = new Table(3,2);t.setBorderColor(new Color(220, 255, 100);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);c1 = new Cell(Header3);t.addCell(c1);t.endHeaders();t.addCell(1.1);t.addCell(1.2);t.addCell(1.3);section1.add(t); 在上面的代码中,创建了一个表格对象,t,它有三列、两行。然后设置表格的边框颜色。填充用于设置单元格中文本间的间隔以及单元格的边界。间隔指的是相邻单元格间的边界。接下来,将创建三个单元格对象,每个单元格中的文本都各不相同。接下来,将它们添加到表格中。将它们添加到第一行中,从第一列开始,移到同一行中的下一列。一旦该行创建完成,就将下一个单元格添加到下一行的第一列中。也可以通过只提供单元格的文本将单元格添加到表格中,例如,t.addCell(1.1);。最后,将表格对象添加到小节对象中。最后,我们来看一下如何将列表添加到 PDF 文档中。列表包含一定数量的 ListItem。可以对列表进行编号,也可以不编号。将第一个参数设置为 true 表明想创建一个要进行编号的列表。清单 7. 创建列表对象List l = new List(true, false, 10);l.add(new ListItem(First item of list);l.add(new ListItem(Second item of list);section1.add(l); 我们已经向 chapter1 对象中添加了所需的对象。因此,已经没有其他要添加到 chapter1 中的元素了,现在可以将 chapter1 添加到主 document 中了。与在示例应用程序中所做的一样,还要在这时关闭文档对象。清单 8. 向主文档中添加章节document.add(chapter1);document.close(); 运行示例应用程序下载示例应用程序,j-itextsample.jar(参见 下载)。在某个目录中解压缩 j-itextsample.jar。例如,如果将其解压缩到 C:temp,则会将源码和类文件放到 C:tempcomitexttest 目录下打开一个命令提示,将目录更改为 C:temp。在这个命令提示中设置系统的类路径。将 C:tempitext-1.3.jar 包括在系统的类路径中。在 Windows? 上,执行命令 set classpath=C:tempitext-1.3.jar;%classpath%。使用命令 java com.itext.test.ITextTest 运行应用程序。程序会在 C: 目录下生成一个 ITextTest.pdf 文档。下面显示了这个 PDF 文档第二页的屏幕图。图 3. PDF 文档的屏幕图 结束语您已经看到了一些生成 PDF 的基本元素。iText 的美妙之处是相同元素的语法可以供不同类型的写入器使用。而且,写入器的输出可以重定向到控制台(当写入器类型是 XML 和 HTML 时)、servlet 的输出流(在对 PDF 文档的 Web 请求作出响应时)或者是其他类型的 OutputStream。当响应相同,但其类型随所请求的是 PDF、RTF、HTML 或 XML 文档而有所不同时,使用 iText 是非常方便的。iText 允许用户创建水印,对文档进行加密以及设置其他输出细节前 言丽水市汽车运输集团有限公司信息中心 苟安廷PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段“暴力”破解的方法,代码片断如下:StreamWriter pPDF=new StreamWriter(filePath);ArrayList xRefs=new ArrayList();float yPos =0f;long streamStart=0;long streamEnd=0;long streamLen =0;string strPDFMessage=null;/PDF文档头信息strPDFMessage=PDF-.n;ConvertToByteAndAddtoStream(strPDFMessage);xRefs.Add(mPDF.Length);strPDFMessage= 0 objn;ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage=n;ConvertToByteAndAddtoStream(strPDFMessage);strPDFMessage=streamn;ConvertToByteAndAddtoStream(strPDFMessage);看了上面的制作办法,我眼镜都摔坏了三幅,如果用上面这样原始的办法能制作出满意的PDF文件,那一定是天才所为。后来,我从一个网站(网址:/index.html)中看到了专门制作PDF文件的控件的介绍,暗喜之余,立马下载试验,果然非常轻松地制作出了想要的PDF文件,因为网站为英文,内容又多,读起来非常费力,在解决了自己的问题后,看到许多网友还在为PDF文件制作而郁闷,遂决定将该内容翻译为中文,由于本人英语水平一般,许多地方又晦涩难懂,故翻译质量不是很满意,敬请斧正,但大部分能看懂。本文的目的一是解决部分网友的燃眉之急,二是抛砖引玉,如果哪位仁兄愿意将该网站中的内容准确翻译出来,则是天下之大幸。要用本文的方法生成PDF文件,需要两个控件:itextsharp.dll和ICSharpCode.SharpZipLib.dll,由于示例代码实在太多,我将代码全部整理出来,放在另外一个文件“示例代码.doc”中,所有这些资源,我均放在了本人的ftp站点(ftp:/0.07.6)上的“Pdf文件制作全攻略”文件夹中(文件夹中另外两个rar压缩文件为两个控件的源代码,供大家学习研究使用),你可以到这里下载相应的资源,或者直接到原网站下载。为便于调试和叙述,所有例子均为DOS控制台程序,windows程序使用方法完全一样,按照下面的步骤创建一个可调试的项目:、 打开VS00;、 单击菜单“文件”“新建”“项目”,在项目类型中选择“Visual C#项目”,在模板中选择“控制台应用程序”,输入文件名称如“MakePdf”,指定好存放路径,然后点确定按钮;、 在“解决方案资源管理器”中右键单击“引用”,从弹出的菜单中选择“添加引用”,在“.NET”选项夹中选择“浏览”,添加前面提到的两个应用,如下图:、 在代码窗口顶部添加两个引用:using iTextSharp.text;using iTextSharp.text.pdf;至此,准备工作完毕。第一部分 iText的简单应用第一章 创建一个Document利用iText五步创建一个PDF文件:helloword。第一步,创建一个 iTextSharp.text.Document对象的实例:Document document = new Document();第二步,为该Document创建一个Writer实例:PdfWriter.getInstance(document, new FileStream(Chap00.pdf, FileMode.Create);第三步,打开当前Documentdocument.Open();第四步,为当前Document添加内容:document.Add(new Paragraph(Hello World);第五步,关闭Documentdocument.Close();完整的代码见示例代码00。在例中,不难看出,制作一个PDF文件是非常简单的。注:如果你将例中“document.Add(new Paragraph(Hello World);”中的字符串“Hello Word”换成中文,如“这是我的第一个PDF文件”,产生的结果一定让你大失所望,因为生成的PDF文件中并没有将中文显示出来,不要担心,在第9章中要专门讲解字体问题,中文显示也就迎刃而解了,如果不能正确显示中文,也就没有必要翻译本文了。下面对这几步做详细介绍。第一步 创建一个Document实例:iTextSharp.text.Document-object共有三个构造函数:public Document();public Document(Rectangle pageSize);public Document(Rectangle pageSize,int marginLeft,int marginRight,int marginTop,int marginBottom);第一个构造函数以A面作为参数调用第二个构造函数,第二个构造函数以每边6磅边距为参数调用第三个构造函数u 面尺寸:你可以通过指定的颜色和大小创建你自己的面,示例代码00创建一个细长的浅黄色背景的面:Rectangle pageSize = new Rectangle(, 70);pageSize.BackgroundColor = new Color(0xFF, 0xFF, 0xDE);Document document = new Document(pageSize);通常,你不必创建这样的面,而可以从下面面尺寸中选择:A0-A0, LEGAL, LETTER, HALFLETTER, _x7, LEDGER, NOTE, B0-B, ARCH_A-ARCH_E, FLSA 和 FLSE大多数情况下使用纵向面,如果希望使用横向面,你只须使用rotate()函数:Document document = new Document(PageSize.A.rotate();详细代码见示例代码00。u 边距:当创建一个文件时,你还可以定义上、下、左、右边距:Document document = new Document(PageSize.A, 6, 7, 08, 80); 在示例代码00中你可以看到该文档有一个0.英寸的左边距和英寸的右边距,上边距为.英寸,下边距为.英寸。说明:当创建一个矩形或设置边距时,你可能希望知道该用什么度量单位:厘米、英寸或象素,事实上,默认的度量系统以排版单位磅为基础得出其他单位的近似值,如英寸=7磅,如果你想在A面的PDF中创建一个矩形,你需要计算以下数据:厘米 / . = 8.677 英寸8.677英寸* 7 = 9 磅9.7 厘米 / . = .699 英寸.699英寸* 7 = 8 磅默认边距为6磅即半英寸。如果你修改了面尺寸,仅仅影响到下一,如果你修改了边距,则影响到全部,故慎用。关于面的初始值,请参考第三步。第二步 创建Writer实例一旦创建了document,我们可以创建该文档的多个Writer的实例,所有这些Writer实例均继承自抽象类“iTextSharp.text.DocWriter”。同时还有另外一种情况,你可以用iTextSharp.text.pdf.PdfWriter产生文档PDF文件,如果你想创建一个TeX文档,你可以使用iTextSharp.text.TeX.TeXWriter包。Writer类的构造函数是私有的,你只能通过下面的方法创建一个实例:public static xxxWriter getInstance(Document document, Stream os);(xxx 是 Pdf 或 Xml)你可以通过下面的方法创建一个实例:PdfWriter writer = PdfWriter.getInstance(document, new FileStream(Chap0xx.pdf);但是你几乎永远不会用到Writer实例(除非你想创建高级PDF或者希望用一些非常特殊的函数,如ViewerPreferences 或 Encryption)。所以通过下面的办法得到实例已经足够了: PdfWriter.getInstance(document, new FileStream(Chap0xx.pdf);在第一步中创建一个文档时,第一个参数意义不大,第二个参数可以是任何一种流,到目前为止我们一直使用System.IO.FileStream将Document写入文件中,示例代码00用到了System.IO.MemoryStream(这不是一个独立的例子,你必须在Servlet Engine中测试这些代码。第三步 打开Documentu 摘要在你写入任何实际数据之前,你可能希望通过以下几种方法写入一些关于本文档的摘要:public boolean addTitle(String title)public boolean addSubject(String subject)public boolean addKeywords(String keywords)public boolean addAuthor(String author)public boolean addCreator(String creator)public boolean addProducer()public boolean addCreationDate()public boolean addHeader(String name, String content)你可以选择自己的标题、主题、关键字、作者、创建程序,但以下产品信息将始终被添加:iTextSharp (或者iTextSharp的引用)和创建时间(实际上这两种方法是自动调用的)。你还可以将自定义的名称添加为“报头信息”,但是这对于PdfWriter没有任何作用,如果看看实例代码00产生的pdf文件的“文档属性”,我们可以看到仅仅有PDF创建程序和产品日期,而示例代码006的“文档属性”框中有更多的信息。打开document前要做的事:你只能在Open方法调用之前添加摘要,这是iText开发工具提供的一个选择。在HTML中,报头信息被放在文档前面报头标识中间,调用Open方法将导致报头信息写入流,因而在Document被打开后无法更改这些数据。PDF报头信息不包括摘要,看起来有类似于:PDF-.该行显示生成的文档是一个版本为.的PDF格式的文件,在PDF中,摘要保存在PdfInfo对象中,当文档关闭时已经写入PdfWriter中了,因此,没有关于为什么不能修改库来满足任何时候添加或更改摘要的技术原因u 面初始化Open方法在不同的Witer中同时会产生初始化事件,举例来说,如果你需要一个水印或者眉角对象出现在文档第一的开始处,你需要在打开文档前添加这些,同样的用于设置该文档其他水印、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论