web-dev-qa-db-ja.com

CSS2ではなくXSL-FO、CSS3を使用してPDFなどのページ付けされたドキュメントを作成しますか?

この2002年の本 のような古いテキストがたくさんあり、 "CSS for Web"と "XSL-FO for print"を使用する必要があると述べています。最近(2012年)に、ようやくCSSをレンダリングエンジンで使用できるようになると思います CSS2のページングメディア および CSS ​​の何かを理解します...しかし、「新しいテキスト」、プログラマーのコンセンサス、そしてソフトハウスの投資?

XSL-FOまたは "XSL Formatting Objects"(W3C標準)は、XMLまたはXHTMLコンテンツからPDFドキュメントを生成するために最もよく使用されるテクノロジーでした。バージョン XSL-FOの1.1 は2006年に公開されました 2001の1.

CSS2.1は2011年のものですが、CSS2.0は1998年の標準であり、2008年に改訂されました...標準の年齢は問題ではないと思います。 HTML、XHTML、またはXMLを使用したCSSには「印刷の力」がありますPrinceXMLWebKitなどのツールを参照してください印刷モジュール (または wkhtmltopdf )、 ABCpdf など。

CSSとXSL-FOの選択:CSS2を使用すると、テキストを紙のページなどに正確に合わせることができます。ページネーションや複数列の問題はありませんレイアウト、脚注の配置、ヘッダーの実行、またはページのマージン... CSS(ページングメディア)とXSL-FOの両方が、これを行うための優れた標準です。

PS:このコンテキストに関連する質問/回答がいくつかあります webkit変換についてPHPで変換する および 生成PDFからHTML 。この提示された質問に対して良い答えを持つ人はいません。

32
Peter Krauss

すべてのコメントと回答に感謝します!

私の投稿から1.5年以上経過した2014年(2014年5月17日)、今が統合の時です。答えは、私にとっては「完全な答え」ではありませんでしたが、すべての答え(NenotlepとAlexの答えを参照)は画像。統合するための私の主な動機は、2013-11の @ mzjnのニュース(ここ) です。

XSL-FOは正式に死にかけています

土、2013年11月2日、 Liam RE Quin書いた「十分な人数が参加していないため、ワーキンググループを終了しました」 、W3C XMLアクティビティリード、 XSL-FO 2. 連続性の失敗について。 ( こちらのコピーを参照 を参照)。

草案の最後の更新は2012年1月で、現在確認されています:W3CはXSL-2の開発を停止します。

どうして? CSS3-page に置き換えられます。以下を参照してください。

PS:「公式声明」について議論するには、 https://stackoverflow.com/a/21345449/287948 を使用してください

CSS3は正式に成長しています

標準の CSS3-page はドラフトですが、 PrinceXML v9AntennaHouse Formatter v6 などの多くのアプリケーションは、準備が整っていることを示しています(!);そして、予定されている 2014年のHTML5 のローンチは、予測リリースCSS3に沿って行われています。

つまり、W3Cの場合、CSS3-pageは、優れた印刷物と優れたPDF

その他の動機

ある日、遠い将来... PDFは死ぬでしょう—これは複雑で、XMLファミリやW3Cへの投資の一部ではありません—そして、多くの人がEPUBがそれを置き換えると主張しています。別の良い動機:タブレットリーダーとPCブラウザーはPDFだけでなく(HTML、XHTML、EPUB)も印刷するので、PDFは必要ありません...そして、この日の唯一の標準 Webkit Printing Project の必要性は、CSS3-page標準になります。

CSS3は、2つの戦略的事項の重要なポイントです。1)優れたPDF XMLまたはHTMLコンテンツから生成する; 2)PDFを置き換える。


注:質問のリンクに関する2014年の別の更新: wkHtmlToPDFがここにあります 。 「新しいテキスト」については、現在多くあります。exを参照してください。 CSS3を使用したビルディングブック



このページの質問に対するプログラマ向けの更新された回答HTMLを適切なPDFに変換するためにCSS2の代わりにXSL-FOを使用する理由

さらに進んで、XML-Publishingの新しいシステムを実装する場合、XSLを使用する十分な理由はありません-FO。要約:

  • XSL-FOは、Elsevierなどの大手出版社のレガシーシステムにメンテナンスを提供するためにニッチ企業のみが使用している今日のデッドテクノロジーです。Stackoverflowのほとんどのライター/リーダーは、中小企業から来ています。 O'Reilly Media、Inc.は既に印刷にCSS3を使用しています のような企業。

  • CSS3はCSS2を置き換え、CSS2のすべてのギャップ(および@AlexSとしての恐れ)をカバーします。

  • 今日(2014年)、Googleまたは私のリンク(PrinceXML v9およびAntennaHouse Formatter v6を参照)で確認できるように、CSS2またはCSS3

  • @bytebusterが言うように、「CSSは開発がはるかに簡単です」(そして学習が簡単です!)。

  • 上で述べたように、CSS3は分離されていません。「XML/HTML/SVG」ファミリーの一部です。

  • 「XSL-FOテンプレート」(複雑なタスクのまれな専門家の1時間あたりのコスト)よりも、「HTML + CSSテンプレート」(単純なタスクを実行する標準のWebデザイナーの1時間あたりのコスト)を開発する方がはるかに安価です。

  • ....



ニュース...

2016年1月、決定的なCSS3標準が登場します!

W3C標準について:古い "css-page" "css-break"に置き換えられ、 "ページングメディア"から "フラグメンテーション"...これが候補の推奨事項です。 https://www.w3。 org/TR/css-break-

30
Peter Krauss

2015年1月10日更新

以前はCSSでPDF(wkhtmltopdf)を使用し、XSL-FOでPDFを使用しており、CSSを使用していますが、多くの問題があります。IMO PDFレンダラーはwkhtmltopdfに最適なCSS/HTMLですが、印刷品質の素材の問題、改ページの問題、CMYKの色分け、正確な配置、フルスクリーンレンダリングなど、多くの問題があります。

のような要件「ボックスを紙の上部に触れるように1.8mm右に上に移動します」「最後のページを100%幅のマージンのないテーブルにする必要があります」どちらもXSL-FOでかなり実行可能ですが、CSSでは非常に恐ろしいので検討することもできません。場合によっては、CSSはそれをレンダリングするのに十分なほどソフトウェアをカットしないため、タグが存在しても存在しません。 wkhtmltopdf(0.11、後で不明)でも、TOCのレンダリング時にXSLTを使用し、@pageを実際にはサポートしていません。

私はPrinceXMLについて話すことはできません。値段が不可能だと前もってわかっているので、それは選択肢ではありません。これは多くの開発者や企業に当てはまると思います。

レンダリングを実行するためのより優れたソフトウェアとより多くのユーザーがいる場合、CSSの方が(CSSとソース(X)HTMLの両方が)非常に優れており、そこには多くのエディターが存在するため、CSSがより良いオプションであると思います。これは、古いLinux対Windowsの議論に少し似ています。IMOLinuxは使いやすいですが、ソフトウェア、既存の専門知識、およびしばしば必要とされるサポートが不足しています。

そしてコメントをエコーするために、ソースマテリアルは常にCSSの問題です。 XMLのCSSは少し未知の領域であり、ほとんどすべてのものがXMLです。残念ながら。 XMLは(X)HTMLよりもはるかに使いやすいにもかかわらず、私はXMLをかなり嫌っています。

9
Nenotlep

将来的にXSL-FOではなくCSSでバンキングする理由の1つとして、W3Cの XML印刷およびページレイアウトワーキンググループ がアクティブではなくなっていることが考えられます。このワーキンググループを維持するのに十分な関心がありませんでした。グループは2012年の初めに XSL 2.0ワーキングドラフト を公開しましたが、現在、更新されたW3C勧告が出てくることはほとんどありません。

XSL-Listメーリングリストには、ワーキンググループを閉鎖する理由と、XSL-FOとCSSの将来についての非常に最近のスレッドがあります。 http://markmail.org/thread/65j2ah2kulcp35fm を参照してください。

ちなみに、これは興味深いトピックですが、質問がスタックオーバーフローに適しているかどうかはわかりません。私見、それは 特定の、実用的な、答えられる問題 についての質問というより、何かを議論するための自由な招待状です。

4
mzjn

@Nenotlepの投稿に同意します。しかし、CSSマークアップがまだページ付けされたドキュメントに対してXSL-FOほど広範であるかどうかはわかりません。しかし、私はそれを知りません。

回答について「コメント」することができなかったので、この部分も彼の回答に追加しました。

問題全体にいくつかの歴史があります。

さらに、FOレンダリングでの過去10年以上にわたるXSL-FOの豊富さとその学習およびバーンインカーブは、「より多くの」ことを解決するためにかなりの期間を要しました。

私は、2003年のFortune 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がPaginated出力用にCSSを超えていたすべての代表的なマークアップが、現在(2013)CSS3で複製され、適切にレンダリングされている可能性は十分にあります。

これがお役に立てば幸いです。

2017編集:

どうやらCSSはまだいくつかの点で追いついており、2003年にそのほとんどを覚えています。これは14年間であり、ウェブ技術では非常に遅いです:)。

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

enter image description here

3
Alex S