为什么XSL-FO很受欢迎?

时间:2009-08-10 07:27:08

标签: xml xsl-fo

我要创建一个从html到某种格式的转换器。 我正在考虑使用中间格式XML(XSL-FO)。

我的问题:如果没有那么多应用程序呈现它,为什么FO格式会受欢迎?

4 个答案:

答案 0 :(得分:6)

我很清楚CSS和XSL-FO支持者之间存在很大的争论,双方都有有效和优点。

这是迄今为止我见过的XSL-FO的最佳简要论点:

  

XSL-FO提供了更复杂的功能   可视化布局模型比HTML + CSS。   XSL-FO支持的格式化,但是   不支持HTML + CSS,包括   从右到左和从上到下的文字,   脚注,保证金说明,页码   在交叉引用中,等等。在   特别是,而CSS(级联风格   表格主要用于使用   在网上,XSL-FO专为   广泛使用。例如,你应该   能够编写XSL样式表   使用格式化对象进行放置   整本印刷书籍。一个   不同的样式表应该可以   转换相同的XML文档   进入一个网站。

(资料来源:http://www.cafeconleche.org/books/bible2/chapters/ch18.html

以下是一些争论XSL-FO的优势:

虽然有人说CSS更好:

答案 1 :(得分:1)

RenderXAntenna House都可以制作出色的XSLFO-> PDF渲染器。还有免费的[Apache FOP]渲染器,对于许多项目而言足够好。为了全面支持FO的所有细节,需要认真努力;根据市场规模,既定参与者和潜在回报,或许进入的门槛太高。

不是你问的,但是在你做了很多关于 FO到HTML 的工作之前,有几个免费的选择可能会为你省去一些努力。

答案 2 :(得分:1)

您检查过Ecrion XSL-FO引擎了吗?老板之所以选择它是因为它支持很多的输出格式(PDF,Word,PowerPoint,Postscript,HTML和非常酷的Silverlight输出模式),它有一个令人难以置信的设计师(据我所知,是只有一个可以使用其他格式化引擎,包括FOP)。使用HTML生成PDF的问题是:

  • HTML不允许您控制分页(就像在偶数/奇数页面上有不同的布局,就像书籍或目录一样)。
  • 您无法控制页眉和页脚。
  • 没有关于创建页码引用,脚注,插入页数以及可打印出版物可能具有的其他无数内容的说明。

Ecrion,Antenna和Renderx等高级引擎也能够生成高质量的PDF输出(如用于存档的PDF / A或用于打印的PDF / X)。

答案 3 :(得分:0)

XSL-FO是工具实施者可以遵循的通用标准,以确保兼容性,就像HTML是网页的通用标准一样,XSL是XML到*翻译的标准等。

如果你的HTML可以被认为是格式良好的XML(即:短标签被正确关闭,例如< br />和< img /> - 不是< br>和< img>)那么你应该能够使用XSL将其直接转换为XSL-FO,然后您可以直接将其传递给Apache FOP之类的工具进行转换。如果格式不正确,您可以随时使用Python的BeautifulSoup或PHP的DOMDocument :: loadHTML()等工具来加载HTML并输出结构良好的XHTML以供转换。

还有像FPDF(PHP)和Prawn这样的工具(Ruby,用于非常漂亮的Dopplr reports),但恕我直言,它们更加“狡猾”到使用 - 更像是在CSS中使用绝对定位而不是让事物自己流动。考虑分页等时可能会导致问题。

但是,这一切都取决于你对输出做了什么。