这3
章. 我将给大家展示一个PDF的概要介绍, 同时也讲述一些iText的通常用法你将可以通过一些截屏来了解PDF的基本概念,然后通过一个系列的”hello world”来了解如何利用iText操作和创建PDF文件.
iText:
什么时候
,
为什么要用
这个章节你将了解
■
iText
的历史和第一次使用场合
■
iText
的
PDF
函数概览
■
I
介绍这个书里面的例子
如果你想提高程序的关于动态PDF创建和操作的能力, 你来对地方了,通过这本书的学习, 你将学到如何产生专业, 高质量的PDF文件, 特别你可以学到:
■ 在浏览器里面动态创建PDF文件
■ 创建一个基于XML和数据库的报表文件
■ 创建电子书,可以使用到众多的PDF交互特征
■ 在现有的PDF文档里面增加书签, 页码水印和其他的特征.
■ 对现有的PDF文件进行分割或者合成
■ 填写表格, 增加电子签名等等
你将在线创建这些文件, 这就意味者你不是用桌面的应用程序:如Adobe Acrobat而是用一套API从你自己的应用里面去产生PDF文件,如果你的项目里面有这样的一些需求, 你就得必须这样做:
■ 如果这些内容需要从一个web的环境里面产生, PDF比HTML更有优势, 高质量的打印, 安全, 文件字节更少
■ T这些PDF文件不能手工预先生成, 因为它未来的内容多少是不确定的, 他们取决于用户的输入条件在进行计算得出
■ 这些文件需要在无人职守的情况产生, 如一个批处理的过程
■ 这些内容需要个性化和客户化的定义.
本 书也是一个全面的API指南, iText是一个开源的Java 操作PDF的库, 对于第一次使用iText的用户来说,本书是一个难得的上手资料, 尽管iText的基本操作相当简单, 但是本书覆盖了API的基本知识和高级技能.本书对于已经熟练使用iText的用户来说, 也是有相当作用的, 通过该书可以系统化的帮助这些高级用户梳理自己的知识体系, 甚至对于高级专家, 他们也会常常发现自己以前没有注意的iText的功能.
Itext
的历史
在这个章节
,
你可以看到
iText
的是为什么会诞生
,
我们也将看到一些现实的用
iText
产生的
PDF
文件范例
.
1.1 iText
的历史
在1998 年的夏天, 我就职的大学启动了一个项目力求重新编写一套独立的程序给学生的管理人员使用,在这之前, 他们在每个学期末通过一个DOS程序来输入学生的成绩然后计算最终的结果, 这些结果只能在一种型号的打印机上打印,这当然不是理想的方式, 退一步说,教师和教务人员使用的操作系统各种各样:Windows, Mac, Linux, Solaris等等,但是为了学生的成绩录入, 他们不得不迫使自己使用那个古老的DOS平台.学院觉得是时候该做点什么事情来解决这个问题了, 于是雇用了两个开发人员做一个基于Web的程序, 一个雇员是Mario Maccarini, 另一个如你所料, 就是我.
Mario和我立即开始在apache的
JSERV(
那时可以说是
J2EE
的石器时代
)编写一些Servlet, 我们没多久就很自豪地将学生, 课程和成绩可以在一个很原始的HTML浏览器上展示了,和MS-DOS相比, 我们的程序是一个很大的进步, 每个人都很兴奋, 直到有一天, 有人问我:hi, 你们打算怎么处理那个“文档”问题?
1.1.1
iText
是怎么产生的
如果你在
IR
或者Netscape 打印过HTML就可以很好的理解我当时碰到的问题:每种浏览器都有自己解释HTML的方法,在fireFox里面看到的表格和IE可能不是相同的,使用样 式表(CSS)可以帮你去调整界面结果,但是终端用户可能会禁用样式表, 自己来设置页码, 边距等等,就像word文档, 最终用户可以使用一些称谢改变里面的内容, 因此, 我们认为HTML和DOC文件只能是可选方案, 我们需要一些技术可以让我产生不能变更的报告表单, 而且必须有很好的排版功能。
我不了解其他的格式,我只是希望这个格式是只读的, 可以精确地展示我们文档设置者当时的设计, 并且是和操作系统, 打印机无关的。 当这个问题出现的时候, 我几乎想都没有想就冲动的对自己说:我们可以用PDF格式。
不瞒你说, 这还真是一个好的答案, 马上得到大家的认可,
PDF作为一个广泛的页面描述语言, 它当时已经是一个工业标准,轻便, 可靠很好的打印品质, 几乎人人有pdf阅读器。 我太想当然地认为当时一定有很好的PDF开源代码, 可以产生并且操作PDF.
显 然我错了, 我需要的是一个API, 一系列的Classes文件 最好是用java编写的, 而且要开源的,在1998年我可以找到的唯一的开源PDF代码并不能提供给我足够的函数来实现我项目的需求,那个时候我才知道如果我要信守诺言, 就不得不自己编写PDF的库, 在接下来的那个学期, 我几乎把所有的业余时间, 放在阅读PDF参考上。
在我被雇用7个月后, 我们新的局域网应用
(就是作者写的那个系统,
译者注)提供给已经注册的学院的教授, 他们的助理和行政管理人员,能够登录自己个性化的页面, 而且也可以做到:
■ 可以获得一个教师或他们的助理的相关课程总览。
■ 按照PDF格式导出一个课程所有学生成绩单
■ 可以在HTML表单上提交学生成绩
■ 按照课程来获取完全版本的成绩列表
学校的教务人员可以
■按照学生来开设课程。
■ 产生各个考试周期用于学生申请用的表单
■ 在学期末计算学生的成绩
■ 为不同的目的来获得学生全年的信息: 原始成绩表, 用于宣布的成绩表和学生反馈表
■ 产生官方的文档:学生的报告卡
每个需要打印的文档由新的库来生成PDF文件,我设计了一系列的Classes文件, 以求可以在其他项目使用, 我被他人鼓励把我的代码出版成开源软件,因此iText诞生了。
几乎同时, 有很多的开发者开始使用这些库,提交一些有价值的代码,Paulo Soares是早期的开发者,2000年他加入了这个项目, 他也是iText新特性:。Net开发端口iTextSharp的主要研发人员。
1.1.2
iText
的今天
今天,
iText被用于很多在线和其他的应用,你可能直接或间接地使用iText而不知道自己用了,许多软件和iText一起发布,如果你使用Macromedia 或者ColdFusion(
一种早期的服务器脚本语言,
译者注)创建过PDF文件,这个文件可能就是用iText创建的,也许你正在使用在线的报告生成工具来生成PDF文件, 如Jasper Reports or Eclipse/
BIRT,
你将发现他们内核使用的是
iText
引擎,你可以使用此书来提高你产品的
PDF
创建能力,你去咨询邮件列表他们告诉你可以用
iText
来创建
PDF
。
在电子商务应用里面,
学生被替换成客户,
课程替换成商品,成绩替换成价格,能源公司使用
iText
生成客户表单来表示客户使用了多少煤气,
水电。在电子政务领域
iText
能用来生成一个具有智能卡签名的电子文档,财务部用
iText
生成投资获利报表,或者用
iItext
来生成贷款申请,制造业用
iText
生成部件和原材料帐单,我甚至看过用
iText
制作的城市地图和规划图,
美国宇航局用
iText
来绘制全球经纬图,
google
用来制作日程表。简而言之,
无论你的项目是什么,
iText
可以帮助你节省时间,
可以创建或直接操作已经存在的
PDF
文件。
易用性和扩展性
一般来说,
iText第一次被发现都是在网上看到如何使用它在线创建PDF文件,在Java技术站点(
http://javaboutique.internet.com/)有一个名为“pdf创建如此简单”的文章,这个文章反映了iText最初的想法:你不是PDF专家, 但是你可以简单的创建一个PDF文件,
Itext就是这样的一组代码, 让你可以及时的创建内容。
有 些技术社区说IText作为一个良好的软件开发工具,当你需要处理一些复杂的要求时,使用iText的需要一些较高的技术技能,但是在这本书, 哪怕展示iText的复杂性, 也是娓娓道来, 毫无痛苦。Don Fluckinger, 一个自由撰稿人, 从2000年一直在PDF领域编写Acrobat 和
PDF
技术文章, 它曾经说“iText是一个短小精悍的PDF创作工具, 毫无技术障碍” 我必须成人, 当你编写复杂的应用时,iText的代码将会随之复杂,
Don Fluckinger 先生认为“使用Itext就像你只要拽拽帽子, 掳掳袖子, 她就可以工作了” 。
本书将会涉及的内容比你从网上看到的内容要更为深入,我们会展示一些高级的Itext的使用案例。
一个使用iText的开发者说:“你可以创建文件压缩比最优的PDF文件, 而没有任何输出损耗”, 这也是iText真实用户的感受。
iText
授权
尽管
iText
是免费的,(你可以使用
iText
在开源或非开源,
标准应用或基于互联网的程序,
可以用来创建免费或收费,
公益或商业用途的程序)这不是意味着你可以在
iText
上做任何事情,你必须遵循Mozilla Public License (
MPL)。
1.1.3
不仅仅是
Java
这本书是按照
java
开发者的角度来写的,
这不意味者
iText
不能用于其他的开发环境,现在开发企业级应用,
好像只有两个选择
,J2EE
和
.net
,
这也是我们同步发行
.Net
版的原因。