2009-08-10 154 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爲打印)。