iText学习之路(一)iText in Action

原创文章,转载请帮我宣传,或者注明原文地址(因为我希望喜欢这篇文章的人,也稍微看一下我的其它文章)。

iText学习之路(一)

为什么要研究PDF?

PDF作为一种为印刷而生的文档格式,具有优于其他文档类型的诸多优良特性。同时作为一种电子文档格式,它也具有非常良好的阅读效果。

因为我们在实际项目中经常使用到PDF这种文档格式,所以我们研究这种格式。

——软件总来源于需求。

我们对PDF做什么?

第一步分析需求

作为一种数据,我们在本质上能做的无非是精炼的四个字:增删改查

1.        生成PDF文档

2.        编辑PDF文档

3.        阅读PDf文档

在此基础上,进一步提出具体的操作:

1.1从其它文档生产PDF文档

1.2直接生成PDF文档

2.1编辑现有的PDF文档

2.2把PDF文档作为一种模板,批量产生PDF文档

第二步分析必要性

1.        现有的对PDF进行操作的软件有哪些?

2.        现有的对PDF进行操作的编程资源有哪些?

3.        现有的软件和编程资源,成本如何

4.        对使用现有软件,和开发新软件的必要性比较。

我们要综合两方面考虑,一是现有的图形化软件,是否已经满足了我们的业务需求。二是现有的图形化软件,或者编程资源是否收费,成本如何。

这一步通常我们在学习软件的过程中,不需要考虑太深刻,因为学习往往是一个不计较成本只关心收获的过程。

第三步分析现状

1.        为什么我们需要自己进行开发软件,而现有软件无法向我们提供可靠免费的服务(这种技术是否很难?成本是否很高?技术专利性是否很强?)

2.        现有的其它文档格式,和PDF比较,有哪些异同点?(为什么没有出现和其它软件类似的图形化编辑器?)

第四步分析本质

1.        PDF作为一种文件,它的数据结构是怎么样的?在不同系统中表现如何?

我认为我们在学习一种技术的时候,不要急于投入到一些显性的问题。而是从问题的产生出发,在脑海里发散出一棵有层次,有组织的问题树,并且在沿着这棵树探索的过程中,不断丰富它的枝叶。

本系列文章,主要介绍iText的使用,本人属于边学边分享,技术并不专业,仅供大家作为参考。技术的来源,将会是:

1.对iText in Action的阅读和翻译,这也是最难的部分,我觉得进度不会很快。这也是本系列文章的主线:作为菜鸟之中的一员,我深切体会到,不能流利地看懂英文文档,又没有优秀的经验作为参考,碰到编程中的问题只能憋着的感觉。IT圈不是没有人才,不是没有英语好的人。不过我们都能理解,程序员这个职业,能活着就已经下了很大的成本,为了活的更好而不断提高自己,更是投入了生命级别的代价,因此,拿出时间来去分享经验,或者进行为了学习而学习的工作(比如在技术不断更新的情况下还写书),是一种往往得不偿失的行为。我相信有无数的同僚们想要给我们分享,但往往力不从心。我作为一名刚进入工作尚未毕业的实习生,也不能保证将来会把这件事坚持下去。目前也只是为了:锻炼自己语言表达的能力,提高对知识的组织和巩固,提高英语水平,养成好的生活和学习习惯。等等这些目的而开始了这项工作。
2.对官方网站上的例子的研究和使用。

3.对官方的API帮助文档的研究和翻译。

4.尽量研究源码

5.研究一下网上网友分享的他们的学习成果。感谢这些热心网友。

最后,我希望对每一个共同学习的朋友说:技术更新再快,也快不过你努力奔跑的脚步。学习就像乘下行的电动扶梯上楼,你努力了不一定进步,但是你停下了一定会下滑,如果你往反方向走,那更会一落千丈。只要你还活着,就不要停止向前蠕动。

时间: 2024-10-27 06:06:47

iText学习之路(一)iText in Action的相关文章

iText学习之路(二)iText in Action 第一章 随便画画带你入门

1.1你可以对PDF做什么 Pdf的六个事实(不列举了). PDF相关的技术的概观,画标记的都是iText能够实现的功能,小的标记说明iText只能实现部分功能. iText适用的情况,四点: 1.     内容无法提前知道,必须通过输入或者数据库导入.(就是那些工卡啊,表格啊之类的) 2.     数据量巨大,无法人工生成每个pdf. 3.     批处理程序产生PDF,无人实时监控PDF的产生. 4.     内容自定义或者具有个人风格,例如,文档需要在每页打上水印. 通常Web程序需要动态

Struts2学习之路(三)—— Action方法调用

上一篇(http://www.cnblogs.com/denisechen/p/4644275.html)提到,action执行的时候并不一定要执行execute方法.那么该如何决定要调用的方法?有以下三种方式: 1.使用method属性指定具体方法 这种方法会使得创建的action非常多. 1 <action name="order" class="com.action.Order" method="add"> 2 <resu

Struts学习之路-第二天(Action与Servlet API)

Struts作为一款Web框架自然少不了与页面的交互,开发过程中我们最常用的request.application.session等struts都为我们进行了一定的封装与处理 一.通过ActionContext获取 方法 说明 void put(String key,Object value) 模拟HttpServletRequest中的setAttribute() Object get(Object key) 通过参数key查找当前ActionContext中的值 Map getApplica

osgi实战学习之路:8. Service-3之ServiceTracker

通过ServiceTracker可以对查找的Service进行扩展 下面的demo引入装饰器模式对Service进行日志的扩展 demo: Provider student-manage/Activator.java package com.demo.service; import java.util.Dictionary; import java.util.HashMap; import java.util.Hashtable; import java.util.Map; import org

osgi实战学习之路:6. Service-1

什么是Service? 它是注册到osgi的一个java对象 Service注册: 通过BundleContext::registerService(java.lang.String[] clazzes, java.lang.Object service, java.util.Dictionary properties)  Service查找及使用: 通过BundleContext::getServiceReference(java.lang.String clazz),返回ServiceRef

[原创]java WEB学习笔记75:Struts2 学习之路-- 总结 和 目录

本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------

itext 使用详解 02 - itext 基本模块

itext 使用其实并不难 就像java swing一样通过调用各种组件来实现一系列功能. itext 常用的基本模块(类)有Chunk, Phrase, Paragraph,Image. 由于本文只是概括介绍itext, 所以不在这里详细介绍了. 但是我在这里推荐一下比较详细介绍itext的教程文档--Itext in action 2nd edition. 这本书具体介绍如何使用itext 1 Chunk 是itext 可以被添加到document 这个类最小的元素,也称为原子模块. 用来包

osgi实战学习之路:7. Service-2之ServiceListener

ServiceListener三种状态: ServiceEvent.REGISTERED ServiceEvent.MODIFIED ServiceEvent.UNREGISTERING 基于ServiceListener实现服务查找的demo Provider student-manage/Activator.java package com.demo.service; import java.util.Dictionary; import java.util.HashMap; import

linux学习之路之日志系统

日志系统 日志系统是用来存放系统在执行任务过程中产生的讯息或者是执行时产生的错误日志信息都存放在日志系统里.由于Linux系统上面会同时开启多个服务或者子系统,因此为了便于查看或者管理它们产生的日志信息,我们一般将不同的子系统或者服务产生的日志信息根据级别不同放在不同的配置文件中或者主机中. 在RHEL 5上,使用的日志系统是syslog 而在RHEL 6上,使用的日志系统是syslog-ng这是一款开源系统 要想使用syslog日志系统,必须要确保syslog服务一直在运行.而syslog服务