从 java 代码访问版本 0.20.5 中的 FOPs 区域树

Access to FOPs Area Tree in version 0.20.5 from java code

是否可以从 java 代码访问版本 0.20.5 中的 FOPs 区域树?

(披露:我是一名 FOP 开发人员,虽然现在很不活跃)

查看 FOP 0.20.5 分发版中的嵌入示例(我手头没有源代码),看起来 class org.apache.fop.apps.Driver 有一个 .setRenderer()方法;创建一个 PDF,这个方法是这样调用的:

driver.setRenderer(Driver.RENDER_PDF);

我猜 Driver class 也有一个常量用于 区域树 输出。

但是,FOP 0.20.5 真的 旧[=52​​=],所以我建议使用较新的版本(2.0 已在2015 年 6 月)。

使用 FOP 2.0,如 embedding documentation page 中所示,您可以使用 org.apache.fop.apps.FopFactory 获取 org.apache.fop.apps.Fop 的实例所需的输出类型,在这种情况下:

Fop fop = fopFactory.newFop(MimeConstants.MIME_FOP_AREA_TREE, out);

区域树输出(不考虑FOP版本)是一个XML文件,所以可以使用解析器获取一个Document对象并 在区域的几何属性上。

FOP 的最新版本(不是 0.20.5)允许use the area tree XML as input,获取(例如)PDF 输出文件:

  1. 使用 FOP 从源文件创建区域树 XML
  2. 使用您自己的代码修改区域树XML
  3. 再次使用 FOP 从修改后的区域树创建最终输出 XML