|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
恰恰证明了java的简单,要不怎么没有通过c/c++来搞个这种框架?pdf|程序|静态 假如使用程序必要静态天生PDF文档,则必要iText库。开放源码的iText库使PDF文档的创立可以在刹时完成。本文先容了iText并供应了利用它从Java?手艺使用程序天生PDF文档的由浅进深的指南。我们创立了一个示例使用程序以更好地舆解iText。
良多使用程序请求静态天生PDF文档。这类使用程序包含银行天生用于电子邮件送达的客户报表,到读者购置特定图书章节并以PDF格局吸收这些文档。例子排列下往是良多的。在本文中,将利用iTextJava库天生PDF文档,并引诱您完成一个示例使用程序,以使您可以更好地舆解和利用iText。
熟习iText
iText是Lowagie.com站点(请参阅参考材料)收费供应的Java库。iText库的功效很壮大,撑持HTML、RTF和XML文档的天生,别的还可以天生PDF文档。能够从多种字体当选择文档中所利用的字体。同时,iText的布局同意利用不异的代码天生以上恣意范例的文档。
iText库中的类用于以各类字体来天生PDF文本、在PDF文档中天生表格、为页增加水印等。iText还供应很多功效。在一篇文章中不成能逐一演示。本文中将先容天生PDF文档的基础需求。
我们将利用Eclipse来举行示例使用程序开辟。作为一个开放源码的IDE,能够收费取得Eclipse,并且其功效十分壮大。如今就能够下载Eclipse。
iTextAPI:近间隔察看
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――这个类暗示一个列表,按按次包括很多ListItems。
com.lowagie.text.Table――这个类暗示包括单位格的表,单位格有序地分列在矩阵中。
下载iText并在Eclipse中举行设置
作为一个地道的Java库,iText是以JAR文件的情势呈现的(请参阅参考材料)。一旦下载了这个库(在路径C: emp下),实行以下步骤将会在Eclipse情况中设置iText库:
在Eclipse中创立一个新的Java项目,将其定名为iText。
在PackageExplorer视图中右击iText项目,然后选择Properties。
单击JavaBuildPath。在Libraries选项卡中,单击AddExternalJARs。
扫瞄到C: emp目次,选择该目次下的itext-1.3.jar。
单击OK。
如今已设置好iText,Eclipse已筹办好创立Java使用程序以天生静态PDF文档。
示例使用程序
另有甚么可以比本人下手创立一个事情示例更好地演示手艺了?如今有了所需的工具(EclipseIDE)和库(iText库),能够入手下手计划和开辟一个示例使用程序了。
让我们创立一个复杂的PDF文档,个中包括一些基础元素,如纯文本、非默许字体的黑色文本、表格、列表、章节和大节等。此使用程序的目标是让您熟习iText库的利用体例。有良多与匡助天生PDF文档有关的类。在这里不成能先容一切这些类。iText的javadoc是先容怎样利用这些类的很好的材料。上面让我们来入手下手编写代码。
第一步是创立一个文档。文档是PDF文档的一切元素的容器。
清单1.实例化文档对象
Documentdocument=newDocument(PageSize.A4,50,50,50,50);
第一个参数是页面巨细。接上去的参数分离是左、右、上和下页边距。可是还没有界说该文档的范例。它取决于所创立的写进器的范例。关于我们的示例,选择了com.lowagie.text.pdf.PdfWriter。其他写进器为HtmlWriter、RtfWriter、XmlWriter等等。它们的称号注释了它们的实践用处。
清单2.创立PdfWriter对象
PdfWriterwriter=PdfWriter.getInstance(document,
newFileOutputStream("C:ITextTest.pdf"));
document.open();
第一个参数是对文档对象的援用,第二个参数是文件的实践称号,在该称号中还会给出其输入路径。接上去,翻开文档以写进内容。
<P> 如今,将在文档的第一页上增加一些文本。经由过程com.lowagie.text.Paragraph来增加文本。能够用文本及其默许的字体、色彩、巨细等等设置来创立一个默许段落。大概,也能够设置本人的字体。上面让我们来看看这两种做法。
清单3.创立段落对象
document.add(newParagraph("Firstpageofthedocument."));
document.add(newParagraph("Somemoretextonthe
firstpagewithdifferentcolorandfonttype.",
FontFactory.getFont(FontFactory.COURIER,14,Font.BOLD,newColor(255,150,200))));
上面是下面代码的输入示例。在下面代码的开头处增加document.close();以封闭文档。
.下面代码的输入示例
您已看到了怎样向PDF文档中增加纯文本。接上去,必要向文档中增加一些庞大的元素。我们入手下手创立一个新的章节。章节是一个特别的大节,默许情形下,章节从一个新的页面入手下手,并显现一个默许的编号。
清单4.创立章节对象
Paragraphtitle1=newParagraph("Chapter1",
FontFactory.getFont(FontFactory.HELVETICA,
18,Font.BOLDITALIC,newColor(0,0,255)));
Chapterchapter1=newChapter(title1,1);
chapter1.setNumberDepth(0);
在下面的代码中,创立了一个新的章节对象,chapter1,其题目为“ThisisChapter1”,将编号级别设为0就不会在页面上显现章节编号。
大节是章节的子元素。鄙人面的代码中,创立了一个题目为“ThisisSection1inChapter1”的大节。为在该大节下增加一些文本,创立了另外一个段落对象,someSectionText,并将其增加到大节对象中。
清单5.创立大节对象
Paragraphtitle11=newParagraph("ThisisSection1inChapter1",
FontFactory.getFont(FontFactory.HELVETICA,16,
Font.BOLD,newColor(255,0,0)));
Sectionsection1=chapter1.addSection(title11);
ParagraphsomeSectionText=newParagraph("This
textcomesaspartofsection1ofchapter1.");
section1.add(someSectionText);
someSectionText=newParagraph("Followingisa3X2table.");
section1.add(someSectionText);
在增加表格之前,我们先看一下文档的模样。增加上面两行代码以封闭文档,然后编译并实行程序以天生PDF文档:document.add(chapter1);document.close();。
.章节输入示例
接上去,创立一个表格对象。创立一个包括行列矩阵的表格。行中的单位格能够跨多个列。一样地,列中的单位格也能够跨多个行。因而,一个3x2的表格实践上纷歧定有6个单位格。
清单6.创立表格对象
Tablet=newTable(3,2);
t.setBorderColor(newColor(220,255,100));
t.setPadding(5);
t.setSpacing(5);
t.setBorderWidth(1);
Cellc1=newCell("header1");
c1.setHeader(true);
t.addCell(c1);
c1=newCell("Header2");
t.addCell(c1);
c1=newCell("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.创立列表对象
Listl=newList(true,false,10);
l.add(newListItem("Firstitemoflist"));
l.add(newListItem("Seconditemoflist"));
section1.add(l);
我们已向chapter1对象中增加了所需的对象。因而,已没有其他要增加到chapter1中的元素了,如今能够将chapter1增加到主document中了。与在示例使用程序中所做的一样,还要在这时候封闭文档对象。
清单8.向主文档中增加章节
document.add(chapter1);
document.close();
运转示例使用程序
下载示例使用程序,j-itextsample.jar(拜见下载)。
在某个目次中解紧缩j-itextsample.jar。比方,假如将其解紧缩到C: emp,则会将源码和类文件放到C: empcomitext est目次下。
翻开一个命令提醒,将目次变动为C: emp。
在这个命令提醒中设置体系的类路径。将C: empitext-1.3.jar包含在体系的类路径中。在Windows?上,实行命令setclasspath=C: empitext-1.3.jar;%classpath%。
利用命令javacom.itext.test.ITextTest运转使用程序。
程序会在C:目次下天生一个ITextTest.pdf文档。上面显现了这个PDF文档第二页的屏幕图。
.PDF文档的屏幕图
停止语
您已看到了一些天生PDF的基础元素。iText的美好的地方是不异元素的语法能够供分歧范例的写进器利用。并且,写进器的输入能够重定向到把持台(当写进器范例是XML和HTML时)、servlet的输入流(在对PDF文档的Web哀求作出呼应时)大概是其他范例的OutputStream。当呼应不异,但其范例随所哀求的是PDF、RTF、HTML或XML文档而有所分歧时,利用iText长短常便利的。iText同意用户创立水印,对文档举行加密和设置其他输入细节。
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。 |
|