写点什么

Apache FOP 1.0 业已发布

  • 2010-07-28
  • 本文字数:1438 字

    阅读完需:约 5 分钟

本月 21 日,Apache 基金会发布了 Apache FOP 1.0 ,这是一个已经做了十年的项目。Apache FOP,也叫做格式化对象处理器(Formatting Objects Processor),它开始于 Apache 的 XML 项目中(其中还有 Batik ,它是基于 Java 的 SVG 渲染程序),之后于 2004 年转移到 XMLGraphics 项目中。

Apache FOP 提供了一种方法,让我们可以将 XML 文档转换为各种可打印的格式,像 PDF、PNG,甚至是其他像 HTML 之类的格式。它的历史可以追溯到 W3C 第一次发布 XSL 的时候。 尽管大多数人都将 XSL 与 XSL 转换语言本身直接合并在一起,然而 XSL 主要是为了出版行业而发明的。因此,XSL 的规格包含了语言(可扩展样式表语言 eXtensible Stylesheet Language)和 XSL 格式化对象规范。 以下文字来自于 XSL 摘要

该规范定义了可扩展样式表语言(XSL)的特性和语法,那是一种用来解释样式表的语言。 它包含两个部分:

  1. 转换 XML 文档的语言(XSLT),以及
  2. 指定格式化语义的 XML 词汇表。

大多数人都认为 XSL 实际上就是规范中的第一部分 XSLT。 XSL 规范还定义了一种迷你的语言,使用它可以定义打印的文字按照 XSL 格式化对象或者同一规范中的 FO 方式应该如何排列。 (正是这个名称决定了 Apache FO 处理器的出现,同时也是项目本身的名称。)

尽管 CSS 1 和 CSS 2 分别是在 1996 年 1998 年发布的,但是它们都没有处理与打印相关的需求的能力,像脚注、页码引用、分栏文字的分割流(例如,自动在多个栏中分配文字,而不是将其预先切分为分离的几个 DIV)。在 2001 年,当 XSL FO 作为 XSL 规范的一部分发布的时候,没有什么处理器能够对其进行处理。Apache FOP 是第一个能处理这种格式的处理器,但是它在版本 0.20 (2003 年发布) 停滞了好久,直到重新启动发布了 FOP 0.93 (2007 年发布) 。事实上,几年前,在 Sun 公司,这种分隔方式被用来演示 OSGi 的在 OSGi JSIG 事件中载入不同版本的 JAR 文件的能力。

FO 的示例文档看起来和传统的 XML 文档有些相似,其中带有fo命名空间,它会与http://www.w3.org/1999/XSL/Format绑定。 下面是来自于 http://www.renderx.com/tutorial.html 的示例(一种商业化的 FO 处理器):

复制代码
<?xml version="1.0" encoding="iso-8859-1"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page">
<fo:region-body margin="1in"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body">
<fo:block>Hello, world!</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>

fo:layout中的内容包含了样式(像页边的空白有多大,是否显示页码等等;它支持多种样式,因此你可以拥有相互不影响的“main page”和“index page”样式),后面是fo:page-sequence,这是与那一组(例如一章中的)页面相关的。在里面的部分,flowblock与 HTML 的divp设置类似。

标签的嵌套显得有些冗长,这通常是 MediaWiki 或者 WikiText 格式的中间交换格式。(Eclipse 的 WikiText 已经可以被转换成为 DocBook 或者 XSL-FO;事实上,很多 DocBook 处理器都能够生成 XSL-FO,然后这种格式可以通过像 Apache FOP 之类的工具编译成 PDF 。)Maven 的站点想要使用Apache FOP,从而生成带有 pdf 插件的 PDF 版本的站点。

目前 Apache FOP 1.0 还无法与 XSL FO 规范完全兼容;兼容性页面列出了更多关于当前支持情况的信息。

查看英文原文: Apache FOP 1.0 released

2010-07-28 09:352813
用户头像

发布了 340 篇内容, 共 145.6 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

Vuex(一)

小恺

7月月更

linux-riscv-5.17 纯净源码

贾献华

7月月更

为什么网站打开速度慢?

源字节1号

网站开发

好玩的免费GM游戏整理汇总

echeverra

游戏

秒杀系统设计

库尔斯

架构实战营

毕业总结

库尔斯

架构实战营

线程的启动与优先级

zarmnosaj

7月月更

如何优雅的写 Controller 层代码?

程序知音

Java 编程 程序员 后端

疫情封控65天,我的居家办公心得分享 | 社区征文

程序员海军

远程办公 远程开发 初夏征文

煮饺子与docker、kubernetes之间的关系

字母哥哥

Docker 容器化 #Kubernetes#

scrcpy这款软件解决了和同事分享手机屏幕的问题| 社区征文

尼露

性能测试如何创造业务价值

老张

性能测试 技术与业务

大话云原生之负载均衡篇-小饭馆客流量变大了

字母哥哥

Docker 负载均衡 云原生

【愚公系列】2022年07月 Go教学课程 001-Go语言前提简介

愚公搬代码

7月月更

【算法刷题日记之本手篇】组队竞赛与删除公共字符

未见花闻

7月月更

Web侧防御指南

穿过生命散发芬芳

7月月更 Web防护

图解网络:什么是虚拟路由器冗余协议 VRRP?

wljslmz

网络技术 路由协议 7月月更 VRRP

DotNet圈里一个优秀的ORM——FreeSql

为自己带盐

7月月更 freesql dotnetcore

ajax

Jason199

ajax 7月月更

旧的Spring Security OAuth已停止维护,全面拥抱最新解决方案

程序知音

Java spring 程序员 微服务 后端

电商系统微服务架构

极客土豆

Python XML-RPC实现简单的远程调用过程

宇宙之一粟

Python 7月月更

「Docker 那些事儿」容器很难理解?带你从头到尾捋一遍

Albert Edison

7月月更

Python|语言元素、分支结构和循环结构

AXYZdong

7月月更

瞧瞧人家用SpringBoot写的后端API接口,那叫一个优雅

程序知音

Java spring 编程 程序员 后端

Web2.0的巨头纷纷布局VC,Tiger DAO VC或成抵达Web3捷径

鳄鱼视界

leetcode 650. 2 Keys Keyboard 只有两个键的键盘(中等)

okokabcd

LeetCode 动态规划 数据结构与算法

Mall电商实战项目全面升级!支持最新版SpringBoot,干掉循环依赖

程序知音

Java spring 编程 程序员 后端

L3立法试水,为自动驾驶产业带来什么?

脑极体

服务可见可观测性

阿泽🧸

微服务 7月月更

Apache FOP 1.0业已发布_Java_Alex Blewitt_InfoQ精选文章