Part 1
介绍
这
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的主要研发人员。