簡體   English   中英

使用 XSL-FO、CSS3 代替 CSS2 創建分頁文檔,如 PDF?

[英]Use of XSL-FO, CSS3 instead of CSS2 to create Paginated documents like PDF?

有很多舊文本,比如這本 2002 年的書,說明我們必須使用“CSS for Web”和“XSL-FO for print”。 我認為在如今(2012 年),我們終於可以將 CSS 與能夠理解CSS2CSS3 的頁面媒體的渲染引擎一起使用……但是“新文本”、程序員的共識和軟件公司的投資在哪里?

XSL-FO 或“XSL Formatting Objects”(W3C 標准)是從 XML 或 XHTML 內容生成 PDF 文檔最常用的技術。 XSL-FO 1.1版於 2006 年發布, 1.0 版於 2001 年發布

CSS2.1 是 2011 年的,但 CSS2.0 是 1998 年的標准,2008 年修訂......我認為標准年齡不是問題。 帶有 HTML、XHTML 或 XML 的 CSS 具有“打印的力量” :參見PrinceXMLWebKit 打印模塊(或wkhtmltopdf )、 ABCpdf等工具。

在 CSS 和 XSL-FO 之間進行選擇:使用 CSS2,您可以使文本完全適合紙頁等。這不是分頁、多列布局、放置腳注、運行標題或頁面邊距的問題......兩者, CSS(分頁媒體)和 XSL-FO 是執行此操作的良好標准。

PS:這里有一些相關的問題/答案,關於 webkit 轉換使用 PHP 轉換和關於從 HTML 生成 PDF 沒有人對這個提出的問題有很好的答案。

感謝所有評論和答案!

現在,2014 年,我的職位(2012 年 5 月 17 日)過​​去了 1.5 年,是時候鞏固了:對我來說,沒有答案是“完整的答案”,但所有答案(參見 Nenotlep 和 Alex 的)都有助於形成一個大的圖片。 我現在鞏固的主要動機是@mzjn 2013-11 年的新聞(此處)

XSL-FO 正式消亡

在 2013-11-02 星期六, Liam RE Quin 寫道“我們關閉了工作組,因為沒有足夠的人參與” ,W3C XML 活動負責人,關於XSL-FO 2.0連續性的失敗。 在此處查看更好的副本)。

工作草案的最后一次更新是在 2012 年 1 月,現在確認: W3C 停止開發 XSL-2

為什么? 它將被CSS3-page替換,見下文。

PS:討論“官方聲明”,使用https://stackoverflow.com/a/21345449/287948

CSS3 正式成長

標准的CSS3 頁面是一個草案,但許多應用程序,如PrinceXML v9AntennaHouse Formatter v6表明它已經准備好了(!); 並且,預計在 2014 年推出HTML5 的同時還有 CSS3 的預測版本。

所以,我明白對於 W3C, CSS3-page 可以做我們需要表達好的印刷品和好的 PDF 的一切

其他動機

總有一天,在遙遠的未來...... PDF 將消亡——它很復雜,不屬於 XML 家族或 W3C 投資——許多人聲稱 EPUB 將取代它。 這是另一個很好的動機:平板電腦閱讀器和 PC 瀏覽器將打印(HTML、XHTML 和 EPUB)以及 PDF。 所以 PDF 將是不必要的......而且,今天,唯一的標准需要,例如。 Webkit 打印項目,將成為CSS3 頁面標准。

CSS3 是兩個戰略事務的關鍵點:1) 從 XML 或 HTML 內容生成好的 PDF; 2)替換PDF。


注意:問題鏈接的另一個 2014 年更新: wkHtmlToPDF now is here 關於“新文本”,現在我們有很多,見前。 使用 CSS3 構建書籍



程序員的更新答案,針對此頁面的問題,為什么使用 XSL-FO 而不是 CSS2,將 HTML 轉換為好的 PDF?

如果您更進一步並為XML-Publishing實現一個新系統,則沒有充分的理由使用XSL-FO 總結:

  • XSL-FO 今天是一種死技術,只被利基公司使用,用於維護大型出版公司的遺留系統,如愛思唯爾...... Stackoverflow 的大多數作者/讀者來自中小型公司。 O'Reilly Media, Inc. 等公司已經將 CSS3 用於打印

  • CSS3將取代CSS2,涵蓋了所有的差距(和恐懼為@來自Alexs的),CSS2的。

  • 今天(2014 年),正如您可以通過 Google 或我的鏈接查看(參見 PrinceXML v9 和 AntennaHouse Formatter v6),我們有一些很好的軟件可以使用CSS2CSS3呈現內容。

  • 正如@bytebuster 所說,“CSS 更容易開發”(而且更容易學習!)。

  • 正如我上面所說,CSS3 不是孤立的,它是“XML/HTML/SVG”系列的一部分。

  • 開發“HTML+CSS 模板”(標准網頁設計師完成簡單任務的每小時成本)比“XSL-FO 模板”(復雜任務中罕見的專業人士的小時成本)便宜得多。

  • ....



消息...

2016 年 1 月,最終的 CSS3 標准即將到來!

關於W3C標准:舊的“css-page”“css-break”代替, “paged media”“fragmentation” ……現在是Candidate Recommendation,見https://www.w3.org/ TR/css-break-3

2020 年 4 月,Blimey,+4 年,一無所有!...好的,需要更多測試

從問題的帖子開始總共 8 年,從“css-break-3 Fineshed!”開始 4 年。 公告 ...

Chrome 是 2019 年第一個完善的,但在 W3C 的測試驗證團隊中有些錯誤,並且在 2020 年回來......現在狀態(在 23 個測試中)是:

  • Chrome 的Blink引擎未通過 1 次測試;
  • Firefox 的Gecko引擎未能通過 3 次測試。

xxx

草案現在在這里這里進行測試

2015 年 1 月 10 日更新

我曾經將 CSS 轉為 PDF (wkhtmltopdf),將 XSL-FO 轉為 PDF,我更喜歡 CSS,但它有很多問題。 IMO 最好的 CSS/HTML 到 PDF 渲染器是 wkhtmltopdf,但它有很多問題,比如打印質量材料問題、分頁問題、CMYK 着色、精確定位和全屏渲染。

諸如“將該框向右和向上移動 1.8 毫米以使其接觸紙張頂部”“我們需要最后一頁是 100% 寬的無邊距表格”等要求在 XSL-FO 中都非常可行,但在 CSS 中是可行的甚至考慮都太可怕了。 在某些情況下,即使標簽存在,CSS 也不會將它切割為足夠好的軟件來呈現它不存在。 甚至 wkhtmltopdf(0.11,以后不確定)在呈現 TOC 時也使用 XSLT 並且並不真正支持@page

我不能說 PrinceXML,因為它看起來很棒,但我事先知道價格標簽是不可能的,所以它不是一種選擇 - 我懷疑這對很多開發人員和公司來說都是如此。

如果有更好的軟件來進行渲染和更多的用戶,我真的認為 CSS 通常會是一個更好的選擇,因為它寫起來更好(包括 css 和源 (x)html),並且有大量的編輯器。 這有點像舊的 Linux 與 Windows 辯論——IMO Linux 更好用,但缺乏通常需要的軟件、現有專業知識和支持。

為了回應評論,源材料始終是 CSS 的問題。 XML 的 CSS 是一個有點未知的領域,幾乎所有地方都是 XML。 很遺憾。 我非常不喜歡 XML,盡管它實際上比 (X)HTML 更有用。

未來依賴 CSS 而不是 XSL-FO 的一個可能原因是 W3C 的XML 打印和頁面布局工作組不再活躍。 沒有足夠的興趣來維持這個工作組。 該小組於 2012 年初發布了XSL 2.0 工作草案,但現在似乎不太可能出現更新的 W3C 建議。

XSL-List 郵件列表上有一個關於關閉工作組的原因以及 XSL-FO 與 CSS 的未來的最新主題。 請參閱http://markmail.org/thread/65j2ah2kulcp35fm

順便說一句,盡管這是一個有趣的話題,但我不確定這個問題是否適合 Stack Overflow。 恕我直言,這更像是一個開放式的邀請來討論一些事情,而不是一個關於一個具體的、實際的、可回答的問題的問題

我同意@Nenotlep 發布的一些內容。 但我不確定 CSS 標記對於分頁文檔是否像 XSL-FO 一樣廣泛。 但我不會知道。

我還將這部分添加到他的答案中,因為我無法對答案進行“評論”。

整個問題都有一段歷史。

此外,XSL-FO 的豐富性及其在過去 10 多年里對 FO 渲染的學習和老化曲線已經有相當長的時間來解決“更多”問題。

早在 2003 年,我就負責為財富 20 強的企業范圍的 XML 內容相關系統進行概念驗證和原型設計。

該系統的其中一個部分必須隨着人們更改、添加和修改 XML 內容而動態呈現文檔的 PDF、Word、X/HTML 版本。

甚至 XSL-FO > PDF 和 Word-ML 在當時也有很多初期問題。

由於以下原因,這些是固有的:

  • 標記和樣式語言的原始和新目標和功能
  • 最終渲染組件准確表示給定標記的能力和限制(即 XSL-FO 到 PDF 組件或 X/HTML 到屏幕通過 Web 瀏覽器)

自從我經常接觸 XSL-FO/HTML/CSS 已經 10 年了,但與當時的 XML/XSL 世界之神(Dave Pawson、Michael Kay、Wendell Piez 等)討論上述問題很有趣。 )

XSL-FO 在分頁輸出的 CSS 上的所有代表性標記現在(2013 年)很可能在 CSS3 中復制並被適當地呈現。

我希望這有幫助。

2017年編輯:

顯然 CSS 在某些方面仍在追趕,我記得大部分時間是在 2003 年 - 那是 14 年,在網絡技術中,這太慢了 :) 。

https://twitter.com/t_machine_org/status/917025348646199297

在此處輸入圖片說明

據我所知,您無法使用 CSS 生成 SVG 圖表或 SVG 條碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM