格式化对象处理器

科技工作者之家 2020-11-17

格式化对象处理器(英语:Formatting Objects Processor,缩写FOP,亦称Apache FOP)是一个将XSL-FO(XSL格式化对象)文件转换成PDF或其他可打印格式的Java应用程序。FOP最初是由James Tauber开发的,并于1999年捐赠给Apache软件基金会。它是Apache XML图形项目的一部分。

FOP是开源软件,在Apache许可证2.0版下分发。

主要局限XSL-FO 1.1版所加入的最重要的元素(流图、表标记、索引等等)都无法使用。

此外,仍然不支持XSL-FO 1.0版的部分特性,包括自动表格布局、浮动布局等。1

输入格式Apache FOP支持XSL-FO中嵌入的大量的图像格式(通过元素)。包括:

SVG

PNG

BMP位图

PostScript(以EPS为扩展名)

JPEG

一些TIFF格式

Apache FOP 没有实现元素。1

输出格式Apache FOP支持如下的输出格式:

PDF(最佳输出格式),也包括PDF/X和PDF/A(有一些限制)

ASCII文本传真

PostScript

直接打印输出(PCL)

AFP(先进功能演示)

RTF

Java2D/AWT显示、打印,页面重定向到PNG和TIFF

如下格式实现中1:

MIF

SVG

XSL-FOXSL-FOXSL Formatting Objects的缩写,它是一种用于文档格式的XML置标语言。XSL-FO是XSL的一部分,而XSL是一组定义XML数据转换与格式的W3C技术。XSL的其他部分有XSLT与XPath。截止到2006年12月12日,XSL-FO的最新版本是v1.1。

XSL-FO总的设计思想用户写到文档中的数据是XML语言的文档,而不是FO,所用语言可以是XHTML、DocBook以及TEI或者其他任何的XML语言。然后,用户自己写一个或者找一个XSLT变换,将XML转换成XSL-FO。

一旦生成了XSL-FO文档,就将它送到FO处理器这样的应用程序中。FO处理器将XSL-FO文档转换成可以阅读或者可以打印的格式。最常见的XSL-FO输出格式是PDF或者PostScript,有一些FO处理器只能输出成RTF这样的格式或者只能输出到图形用户界面的页面序列及内容。

人们最初认为XSLT语言本身仅仅是为这个目的所用的,但是现在由于更加通用的XML转换的出现已经超出了这个范围。由于这个转换是一个必然的过程,因此人们也常常将XML转换为XSL-FO的XSLT当作XSL-FO文档本身。甚至是XSL-FO的教程也在FO处理用法也用XSLT命令表示。

XSLT转换过程功能非常强大,它可以自动生成内容的列表、参考链接、索引以及其他的结果。

XSL-FO文档与PDF或者PostScript文档不同,它没有充分地描述文本在不同页面上的布局,相反,它仅仅描述了页面外观以及不同内容放置的位置。根据这些,FO处理器依据FO文档中描述的边界确定文本的位置。XSL-FO规范甚至允许不同的FO处理器根据所生成的页面有不同的响应。

例如,有些FO处理器为了节约空间在换行的时候会加入连字符,有些却不会这样做。不同的处理器甚至会使用不同的连字符算法,从一些简单的算法到需要考虑前后行是否也许要连字符这样复杂的算法。这样就会在不同的页面改变页面布局,尤其是带有边框的时候更是这样。另外还有一些场合,XSL-FO规范明确允许FO处理器根据布局作出一定的选择。2

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。