Board logo

标题: HTML 至格式化对象(FO)转换指南(1)概述 [打印本页]

作者: look_w    时间: 2018-7-15 08:16     标题: HTML 至格式化对象(FO)转换指南(1)概述

我们设计 HTML 页面都是为了使它们在屏幕上看起来很好,但打印这些 Web 页面却往往是事后才想到的事。要创建 Web 页面的可打印版本,最好的方法是使用 XSLT 和 XSL-FO 来生成 PDF 文件。您可以利用开放源码 XSLT 处理器、XSL 格式化对象(XSL Formatting Objects,XSL-FO)词汇表和格式化对象引擎来做这项工作。如果您已经知道如何使用 XSL-FO 和 XSLT,那么本指南可为您提供有价值的参考资料:它逐一介绍最常用的 HTML 标记并定义了如何将每个标记转换成格式化对象。(如果您需要关于使用 XSL-FO 的背景知识,可以尝试学习有关这一主题的                developerWorks教程,在 中可以很容易找到这些教程。)            
本指南包含若干示例,这些示例说明了如何编写将 HTML 元素转换成相应格式化对象的 XSLT 样式表,格式化对象是用 XSL-FO 来处理文档的基本构件。
关于本指南中 XSLT 模板的简要说明;几乎所有的模板都包含以下文本:
1
<xsl:apply-templates select="*|text()"/>




该元素告诉 XSLT 处理器获取当前元素的所有文本和子元素并转换它们。这一递归技术确保所有 HTML 元素都能得以处理,不管它们是如何相互嵌套的。有关 XSLT 和 XSL-FO 技术的更多信息,请参阅本指南结尾处的 。            
示例的上下文关于本参考资料的上下文,您可以打开 HTML 文档 everything.html                (下载 x-xslfo2app-samples.zip 查看 everything.html),它包含本指南中讨论的所有元素。您还可以参阅 XSLT 样式表 ,它包含本指南中引用的所有模板,以及本教程姊妹篇中介绍的大多数高级技术。要对 HTML 文件使用该样式表,请使用以下命令:            
1
2
> java org.apache.xalan.xslt.Process -in everything.html
-xsl xhtml-to-xslfo.xsl -out everything.fo




顺便说一下,必须在一行上输入该命令,这里是为了适应                developerWorks 格式才将它分成两行。该命令告诉 Xalan 样式表引擎(在教程示例中使用)去读取文件                 everything.html ,然后使用                 xhtml-to-xslfo.xsl 样式表中的规则来转换它。转换的结果写入文件                 everything.fo 。如果您想查看由该样式表创建的格式化对象,可以查看文件 。            
有了 XSL-FO 文件之后,就可以使用以下命令来创建 PDF:
1
> java org.apache.fop.apps.Fop everything.fo everything.pdf




以下是这个 PDF 文件的抓屏:


如果愿意,可以查看文件 。            
不见了的 HTML 元素出于种种原因(大多数是合理原因),本指南没有介绍某些 HTML 元素。不介绍它们的主要原因是它们在 PDF 文件中没有意义,这是格式化对象转换最常见的结果。略去的 HTML 元素中有些已经被 W3C 弃用,这也是不介绍它们的一个正当理由。有些元素在 PDF 上下文中可能对于您是有意义的。请告诉我您的想法;如果您有很好的理由将其它 HTML 元素加入到本指南,我将对其加以考虑(您可以使用本指南结尾处的反馈表单来提出建议)。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0