我要创建一个从html到某种格式的转换器。 我正在考虑使用中间格式XML(XSL-FO)。
我的问题:如果没有那么多应用程序呈现它,为什么FO格式会受欢迎?
答案 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)
RenderX和Antenna House都可以制作出色的XSLFO-> PDF渲染器。还有免费的[Apache FOP]渲染器,对于许多项目而言足够好。为了全面支持FO的所有细节,需要认真努力;根据市场规模,既定参与者和潜在回报,或许进入的门槛太高。
不是你问的,但是在你做了很多关于 FO到HTML 的工作之前,有几个免费的选择可能会为你省去一些努力。
答案 2 :(得分:1)
您检查过Ecrion XSL-FO引擎了吗?老板之所以选择它是因为它支持很多的输出格式(PDF,Word,PowerPoint,Postscript,HTML和非常酷的Silverlight输出模式),它有一个令人难以置信的设计师(据我所知,是只有一个可以使用其他格式化引擎,包括FOP)。使用HTML生成PDF的问题是:
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中使用绝对定位而不是让事物自己流动。考虑分页等时可能会导致问题。
但是,这一切都取决于你对输出做了什么。