进公司没有多久就接手了一个打印的项目,公司原本是通过XML+XSLT(HTML)来生成发送的Email和信件,然后专人打印信件再发送,后来随着信件的增多,这种打印和发送活动越来越变的繁重和不可接受,那么找专业公司就势在必行,找到专业公司谈妥之后,接下来就是我要讲的技术实现。
本来我想象的一切都很简单,通过一个Web Service,给对方我们的数据文件XML格式,然后再给XSLT或者XSLFO文件,对方直接把这些输入能够接收XMLFO的打印设备就搞定了,但实现下来发现了很多问题,这不仅仅是各种技术标准繁多,各种Parser软件的实现,以及对格式和最终结果的理解,而且重要的问题是,很少有软件和平台有一整套的解决方案,很多时候都是一大堆小工具加上手动的修改才能解决整个流程,呵呵。。这跟当年的Web程序很相似,写一个完备的页面需要大概10来种不同的工具,真是乱在其中啊。。
XML出来很多年了,所以XML的编辑,效验(well-form and validate)的工具非常多,但就数据的本身没有什么特别需要手工做的,所以很出名的xmlspy, stylus stuido 不仅仅提供了很多针对 schema 的功能,而且很多也涉及到xslt 和 xpath 的功能, 能够让人很快的设计出完备的schema, DTD 和schema 各有优势,虽然Schema已经慢慢占据主流,但DTD还是被各种工具和IDE所支持。。
XSLT虽然是比较新的东西,但其实本身并不复杂,不过我在运用的时候发现这个语言非常的灵活,尤其是其中可以和Javascript结合应用的地方几乎让现在 Web的数据和表现分开可以相当完美的实现,这在当今数据和表现分离的趋势中可以说是个特别有潜力的应用点,加上 XHTML + CSS + DIV 已经是新一代Web编程的最佳模式,呵呵,虽然工具还很缺乏,实现这些方案的是大多缺乏全局的应用和本身对老的一套的理解,但我相信有优势的东西总是会流行的。。
XSLFO语言是打印届专门为打印设备解决的一套方案,咋一看,FO这东西基本跟CSS没什么区别,都是格式描述,都在注重字体,间距,大小,颜色等,但两者确实有些本质的区别,而这些区别正是打印和Web 页面的根本区别,我在使用FO的过程中一直有些疑惑,两个标准不同的地方只有10%,为什么不把这些不同的加入CSS,而让CSS可以做所有的工作,后来在网上看到一篇几年前制定FO标准的专家的文章,其中列举了种种的技术上和历史上的原因,才明白FO如何产生的。。
FO注重对打印的页的描述,而CSS基本上没有页的概念,FO的simple-page-master中有着详细的页面描述,打印工业所注重的书的奇数页和偶数页,以及封面等概念的引入,还有多内容的编排等,以及对定位的描述都体现着偏靠打印行业的思想,对于熟悉CSS的人,学习FO并不难,找个文章,花一个小时学习一下基本概念就应该能开始入手了,但是FO本身的设计就跟用C++画Windows的窗体一样难受,呵呵。。要有丰富的想象力才可以,呵呵。。
当我解决了所有的技术问题之后就回到“如何能够迅速的产生和设计“XSLFO”这个难题上,当时在网上一顿狂搜索,找到的工具有StyleVision, stylus studio, XSLFast, XEP Designer等等。。每天都在尝试用这些工具试图设计出我所需要的格式的文档,这些工具都有着这样和那样的设计出发点,都是为了解决一些相对于自己package环境的设计问题,结果是好像没有一个工具满意。。
文章评论