写点什么

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:352782
用户头像

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

关注

评论

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

大四女学霸社招竟成功签约字节跳动,拿下30万年薪?

Java架构师迁哥

KubeVela 正式开源:一个高可扩展的云原生应用平台与核心引擎

阿里巴巴云原生

阿里云 开源 Kubernetes 云原生 OAM

一次 Java 进程 OOM 的排查分析(glibc 篇)

996小迁

Java 编程 架构 面试 计算机

【涂鸦物联网足迹】涂鸦云平台消息服务—顺带Pulsar简单介绍

IoT云工坊

人工智能 物联网 云服务 Apache Pulsar 云平台

分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定

互联网应用架构

分布式事务 springboot

区块链数字货币钱包源码价格,区块链多币种钱包

13530558032

基于SpringBoot、SpringCloud、Docker微服务架构实战,资源分享

Java架构之路

Java 程序员 架构 面试 编程语言

IoT企业物联网平台,从设备端到云端业务系统全链路开发实战

不吃米饭

阿里云 最佳实践 物联网 IoT

SpringBoot:整合Swagger3.0与RESTful接口整合返回值(2020最新最易懂)

比伯

Java 编程 架构 面试 计算机

高性能利器!华为云MRS ClickHouse重磅推出!

华为云开发者联盟

数据库 Clickhouse MRS

圆通快递回应内鬼泄露用户信息:严打数据倒卖灰色产业

石头IT视角

天啊!怎么会有人把Spring Cloud微服务架构讲得这么透彻?

Java架构之路

Java 程序员 架构 面试 编程语言

一瞬间让我秒变“快男”!腾讯内部强推Java性能优化手册,快了不止一点点。

Java架构追梦

Java 架构 jdk 面试 性能优化

开个交易所需要多少费用?数字货币交易所搭建

13530558032

云算力矿机源码价格,区块链挖矿平台开发

13530558032

Forrester 最新报告:阿里云稳居领导者地位,引领云原生开发浪潮

阿里巴巴云原生

阿里云 Serverless Kubernetes 容器 云原生

什么是低代码(Low-Code)?

移动研发平台EMAS

工具 研发效能 低代码 开发 代码

#不吐不快# 三观很正的Boss,你遇到过么?

架构精进之路

职场成长 奇葩的经历 不吐不快

科普干货|漫谈鸿蒙LiteOS-M与HUAWEI LiteOS内核的几大不同

华为云开发者联盟

华为 鸿蒙 IoT

区块链,音乐,流媒体和版税

CECBC

区块链 艺术

收藏!数据建模最全知识体系解读

华为云开发者联盟

数据仓库 数据 数据建模

胡继晔:中国应建区块链行业准入制度

CECBC

区块链 金融 数字经济

#不吐不快# CV千千条,修改最重要。代码不规范,伙伴两行泪!

程序员小航

奇葩的经历 不吐不快

synchronized 到底该不该用

古时的风筝

Java synchronized

小学妹问我:如何利用可视化工具排查问题?

田维常

可视化

云原生2.0时代下,DevOps实践如何才能更加高效敏捷?

华为云开发者联盟

云计算 数字化 华为云

《垃圾回收的算法与实现》.pdf

田维常

垃圾回收

区块链在债券市场如何应用

CECBC

区块链 债券

太赞了!腾讯T3-3架构师整理了5000页的Java学习手册免费开放下载

Java架构之路

Java 程序员 架构 面试 编程语言

DàYé的CTO姗姗学步路

曲水流觞TechRill

管理 CTO

年轻人不讲武德不仅白piao接口测试知识还白piao接口测试工具会员

测试人生路

接口测试

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