css - 使用XSL-FO,CSS3而不是CSS2创建分页文档(如PDF)?

标签 css xml pdf pagination xsl-fo

有很多旧文本,例如this 2002 book,指出我们必须使用“CSS for Web”和“XSL-FO for print”。
我认为,在当今(2012年),我们最终可以将CSS与能够理解paged media of CSS2CSS3的渲染引擎一起使用...但是,“新文本”,程序员的共识以及软硬件的投资又在哪里?

XSL-FO或“XSL格式设置对象”(W3C标准)是生成PDF文档的最常用技术,
来自XML或XHTML内容。版本1.1 of XSL-FO
出版于2006年,1.0 in 2001

CSS2.1来自2011年,但是CSS2.0是1998年的标准,于2008年修订...我认为标准年龄不是问题。带有HTML,XHTML或XML的 CSS具有“打印的力量” :请参见PrinceXMLWebKit print module(或wkhtmltopdf),ABCpdf等工具。

在CSS和XSL-FO之间进行选择:使用CSS2,您可以将文本恰好适合纸张页面等。
这与分页,多列布局,放置脚注,运行页眉或页面页边距无关...
CSS(页面媒体)和XSL-FO都是执行此操作的良好标准。

PS:针对此上下文,有一些相关的问题/答案,about webkit transformconverting with with PHP以及关于Generation PDF from HTML。没有人对这个提出的问题有好的答案。

最佳答案

感谢所有评论和答案!

现在,2014年(我的职位过了1.5年)(2012年5月17日),已经到了巩固的时间:对我来说,没有答案是“完整答案”,但是所有答案(请参阅Nenotlep和Alex的答案)都有助于图片。
我现在要巩固的主要动机是2013-11年的@mzjn's news (here)

XSL-FO即将死亡

2013年11月2日星期六,Liam R. E. Quin wrote:
W3C XML Activity 负责人,关于XSL-FO 2.0连续性的失败,“由于没有足够的人参加,我们已经关闭了工作组”。 (请参阅better copy here)。

工作草案的最新更新是在2012年1月,现已确认: W3C停止开发XSL-2

为什么?它将替换为CSS3-page,请参见下文。

PS:讨论“官方声明”,请使用https://stackoverflow.com/a/21345449/287948

CSS3正式增长

标准CSS3-page是草稿,但是许多应用程序(例如PrinceXML v9AntennaHouse Formatter v6)都表明它已经准备好(!);并且,HTML5 for 2014的预期发布正在进行CSS3的预测发布。

因此,我了解到W3C的,CSS3页面可以完成我们表达精美打印品和PDF PDF 所需的全部工作。

其他动机

有一天,在不远的将来... PDF将死掉-它是复杂的,不属于XML系列或W3C投资的一部分-许多人声称EPUB将取代它。
这是另一个很好的动机:平板电脑阅读器和PC浏览器将同时打印(HTML,XHTML和EPUB)以及PDF。因此,PDF将不再是必需的...而且,对于这一天,唯一的标准需求是ex。 Webkit printing project,将是CSS3页面标准。

CSS3是两个战略事务中的关键点:1)从XML或HTML内容生成好的PDF; 2)替换PDF。

注意:该问题的链接的另一个2014年更新:wkHtmlToPDF is now here。关于“新文本”,现在我们有很多,请参见前。 Building Books with CSS3



程序员的最新答案,此页面的问题为什么将XSL-FO而不是CSS2用于将HTML转换为优质PDF?

如果您走得更远并为XML-Publishing实现新系统,则没有充分的理由使用XSL-FO 。总结:

  • XSL-FO如今已是一种淘汰的技术,仅由利基公司用于为大型出版公司(如Elsevier)的遗留系统提供维护。Stackoverflow的大多数作者/读者都来自中小型公司。像O'Reilly Media, Inc. already use CSS3 for print这样的公司。
  • CSS3将取代CSS2,涵盖CSS2的所有不足之处(以及担心的@AlexS)。
  • 今天(2014年),您可以通过Google或我的链接进行检查(请参阅PrinceXML v9和AntennaHouse Formatter v6),我们有一些不错的软件可以用CSS2或CSS3呈现内容。
  • @bytebuster的
  • 说:“CSS更容易开发”(也更容易学习!)。
  • 就像我上面所说的
  • ,CSS3不是孤立的,它是“XML / HTML / SVG”家族的一部分。
  • 与“XSL-FO模板”(在复杂任务中很少见的专业人员的小时成本)相比,
  • 来开发“HTML + CSS模板”(标准的Web设计人员完成一项简单任务的小时成本)要便宜得多。
  • ....



  • 新闻...

    2016年1月,确定的CSS3标准即将发布!

    关于W3C标准:旧的“css-page”替换为“css-break”,而“paged media”替换为“fragmentation” ...现在是候选建议,请参见https://www.w3.org/TR/css-break-3

    2020年4月,Blimey,+ 4年,什么都没有!...好,需要更多测试

    从问题发布到发布,总共有8年,从“css-break-3失败了”,总共有4年!公告...

    Chrome在2019年率先推出,但在W3C的测试验证团队中有些失误了,而在2020年之前……现在状态(在23个测试中)是:

    Chrome的闪烁引擎未通过1次测试;
  • Firefox的 Gecko 引擎未通过3次测试。


  • draft now is heretests here

    关于css - 使用XSL-FO,CSS3而不是CSS2创建分页文档(如PDF)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10641667/

    相关文章:

    html - 无法清除CSS中的左右边距

    javascript - 为什么我的边栏在缩小时消失了?

    PHP Soap xml 与 SoapUI xml

    xml - Json格式转xml格式

    excel - 保留从 Excel 到 PDF 的超链接

    javascript - 打印由 google docviewer 通过 javascript 在 iframe 中打开的 pdf

    jquery - 单击外部 jQuery 选择器仍会激活功能

    python - 使用 Python 将 XML 合并到父 XML 文件中

    java - 在jsp中显示pdf

    html - 从使用 :before class? 插入的内容中删除斜体样式的任何方法