2009-08-10 109 views
4

我打算创建一个从html转换为某种格式的转换器。 我正在考虑使用中间格式的XML(XSL-FO)。为什么XSL-FO很受欢迎?

我的问题:为什么FO格式流行,如果没有那么多的应用程序渲染它?

+0

XSL-FO很受PDf一代的欢迎,但现在和明天都不是这样! 你知道“CSS + XHTML to PDF”技术吗?请参阅[为什么使用XSL-FO而不是CSS2,将HTML转换为好的PDF?](http:// stackoverflow。com/q/10641667/287948)问题和答案 – 2012-07-27 01:05:45

回答

1

RenderXAntenna House都是非常出色的XSLFO-> PDF渲染器。还有免费的[Apache FOP]渲染器,对于许多项目而言,这是足够好的。它需要认真努力才能全力支持FO的所有细节。基于市场规模,已有球员和潜在回报,或许进入门槛太高。

不是你问的,而是你在FO到HTML上做太多工作之前,有几个免费的选择可能会为你节省一些工作量。

+0

我不认为他是在要求工具建议 – skaffman 2009-08-10 07:33:35

+0

@skaffman也许不是,但看到别人怎么做可能会帮助他。只是做个好邻居。 :) – lavinio 2009-08-10 07:41:09

+0

为什么使用fo,如果我可以在html标记中插入css样式? 也许,我的知识还不够,我不知道未来会有什么优势? – Constantine 2009-08-10 07:49:49

6

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

下面是XSL-FO最好简短说法,我迄今所看到的:

XSL-FO提供了比HTML + CSS更复杂的 可视化布局模式。 XSL-FO支持的格式,但不支持HTML + CSS的 ,包括 从右到左和从上到下的文本, 脚注,保证金注释,页码 在交叉引用中,等等。特别是,虽然CSS(层叠样式 表)主要用于在网上使用 ,但XSL-FO是专为 设计的更广泛的用途。例如,您应该可以编写一个使用格式化对象的XSL样式表 ,以便将 排列在整个印刷书籍的外面。 A 不同的样式表应该能够 将相同的XML文档 转换成网站。

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

这里有一些争论XSL-FO优于:

这里虽然有人说CSS更好:

0

XSL-FO是一种常见的标准工具,实施者可以遵循,以确保兼容性,在同样的方式,HTML是网页的通用标准,XSL是XML-TO-标准*翻译等

如果你的HTML可以被视为良好的XML(即:短代码是否正常关闭等作为< BR/>和< IMG/> - 不<BR>和<IMG>),那么你应该可以使用XSL来直接将其转换为XSL-FO,然后您可以直接将其传递到Apache FOP进行转换。如果格式不正确,则可以始终使用像Python的BeautifulSoup或PHP的DOMDocument :: loadHTML()这样的工具加载HTML并输出格式良好的XHTML以进行转换。

也有像FPDF(PHP)和​​(红宝石,这是用于非常漂亮Dopplr reports)工具,但恕我直言他们更“繁琐”使用 - 更像是在CSS中使用绝对定位不是让事情要自己流动。当您考虑分页符等时会导致问题。

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

1

您是否检查了Ecrion XSL-FO发动机?由老板选择它,因为它支持输出格式(PDF,Word,PowerPoint,Postscript,HTML和非常酷的Silverlight输出模式)的lot,它有一个令人难以置信的设计器(据我所知是唯一可以工作的与其他格式引擎,包括FOP)。使用HTML生成PDF的问题是:

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

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