仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 573|回复: 13
打印 上一主题 下一主题

[学习教程] JAVA教程之从Java使用程序静态天生PDF文件

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:14:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

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推出以后,性能上又有了很大提高。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-20 18:25:36 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
小魔女 该用户已被删除
板凳
发表于 2015-1-26 22:42:01 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
萌萌妈妈 该用户已被删除
地板
 楼主| 发表于 2015-1-27 23:20:55 | 只看该作者
Java是一种计算机编程语言,拥有跨平台、面向对java
飘飘悠悠 该用户已被删除
5#
发表于 2015-2-5 11:01:03 | 只看该作者
是一种为 Internet发展的计算机语言
透明 该用户已被删除
6#
发表于 2015-2-8 03:15:47 | 只看该作者
象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
精灵巫婆 该用户已被删除
7#
发表于 2015-2-17 04:03:47 | 只看该作者
是一种使用者不需花费很多时间学习的语言
乐观 该用户已被删除
8#
发表于 2015-3-2 01:30:57 | 只看该作者
一直感觉JAVA很大,很杂,找不到学习方向,前两天在网上找到了这篇文章,感觉不错,给没有方向的我指了一个方向,先不管对不对,做下来再说。
活着的死人 该用户已被删除
9#
发表于 2015-3-2 19:47:40 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
蒙在股里 该用户已被删除
10#
发表于 2015-3-5 23:55:27 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
海妖 该用户已被删除
11#
发表于 2015-3-8 00:36:14 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
admin 该用户已被删除
12#
发表于 2015-3-9 00:22:21 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
不帅 该用户已被删除
13#
发表于 2015-3-16 19:03:12 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
谁可相欹 该用户已被删除
14#
发表于 2015-3-22 23:41:06 | 只看该作者
你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 07:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表