私はFirefox 3とIE 7でうまくレンダリングするHTML(XHTMLではない)ドキュメントを持っています。それはそれをスタイルするためにかなり基本的なCSSを使い、HTMLでうまくレンダリングします。
私はそれをPDFに変換する方法を考えています。私が試してみました:
私は実際にはかなりまともな仕事をしたHtml2Pdf Pilotと呼ばれるWindowsアプリを試しましたが、少なくともLinux上で動作し、理想的にはWebサーバ上のPHPを介してオンデマンドで動作するものが必要です。
何が足りないのでしょうか、あるいはどうやってこの問題を解決するのですか?
重要: この答えは2009年に書かれたものであり、2019年の今日では最も費用対効果の高い解決策ではないかもしれないことに注意してください。
これがあなたが使うことができるいくつかのオンラインサービスです:
PrinceXML をご覧ください。
これは間違いなく最高のHTML/CSSからPDFへの変換ツールですが、無料ではありません(ただし、プログラミングも無料ではない可能性があるため、10時間の作業時間を節約できれば、自宅で無料です(あなたはまた別の解決策があなたに適切なソフトウェアで専用サーバーを設定することを要求するであろうことを考慮に入れる必要があるので)
ええ、私はこれが完全な ACID2 を行う最初の(そしておそらく唯一の)HTML2PDFソリューションであると述べましたか?
wkhtmltopdf
をご覧ください。 Webkitをベースにした無料のオープンソースです。
私たちは小さなチュートリアルを書きました ここ 。
編集(2017):
もしそれが今日何かを構築するのであれば、私はもうその道をたどりません。
しかし、代わりに http://pdfkit.org/ を使用してください。
ブラウザで実行するために、おそらくそのすべてのnodejs依存関係を取り除きます。
なぜあなたは mPDFバージョン2.0を試してみませんか ?私はPDF文書を作成するためにそれを使いました。それはうまくいきます。
一方、mPDFはバージョン5.7であり、HTML2PS/HTML2PDFとは対照的に積極的に維持されています。
しかし、ドキュメントは本当に扱いにくい場合があることに注意してください。たとえば、次のページを見てください: https://mpdf.github.io/ /。
Htmlからpdfまでの非常に基本的な作業は、このライブラリを使って行うことができますが、より複雑な作業ではドキュメントを読んで「理解する」にはしばらく時間がかかります。
a)yourfolder
で抽出する
b)yourfolder
に file.php を作成し、そのようなコードを挿入します。
<?php
include('../mpdf.php');
$mpdf=new mPDF();
$mpdf->WriteHTML('<p style="color:red;">Hallo World<br/>Fisrt sentencee</p>');
$mpdf->Output(); exit;
?>
c)ブラウザから file.php を開きます
1)ルートフォルダに pdftohtml.exe を展開します。
2)そのフォルダ内の anyfile.php fileに、次のコードを入れます(ソースexample.pdfもあるとします)。
<?php
$source="example.pdf";
$output_fold="FinalFolder";
if (!file_exists($output_fold)) { mkdir($output_fold, 0777, true);}
$result= passthru("pdftohtml $source $output_fold/new_filename",$log);
//var_dump($result); var_dump($log);
?>
3) FinalFolder と入力すると、変換されたファイルが存在します(ソースPDFと同じ数のページ)。
チェックアウト _ tcpdf _ 。それはあなたが必要とするもののために十分かもしれないPDF機能へのHTMLを持っています。無料です!
DocRaptor( "エンジン"としてPrinceXML
を使用します)
それはすでに言及されています、しかし私はちょうどmpdfがそこに最も簡単で、最も強力でそして最も自由なHTMLからpdfへのコンバータであることを確認したいです。空は本当に限界です。動的なユーザー生成データのpdfを生成することもできます。
たとえば、クライアントは、自分のクラブで演奏した音楽のトラックリストを更新できるように、CMSシステムを望んでいました。それは問題ありませんでしたが、彼はまた、ユーザーがプレイリストの.pdfをダウンロードできるようにしたかったので、このダウンロード可能なpdfもcmsによって更新されなければなりませんでした。 mpdfのおかげで、いくつかの簡単なループと散在した変数を使って、私はそれをすることができました。私が何週間かかかると思ったことは文字通り私に数分かかった。
素晴らしい 記事 それは私が始めるのを助けました。
ただスレッドをぶつけるために、私はDOMPDFを試してみましたが、それは完璧に動作しました。私はDIV
や他のブロックレベルの要素を使ってすべてを配置しました。私はそれを厳密にCSS 2.1のままにしておいてとてもうまくプレーしました。
良い知らせです。 スナッピー !!
Snappyは 非常に簡単 オープンソースのPHP5ライブラリで、URL、またはHTMLページからサムネイル、スナップショット、またはPDFを生成できます。そして... ... excellent webkit-basedwkhtmltopdfを使います。
楽しい! ^ _ ^
PDFコンバータライブラリに最適なXHTML + CSSを見つけたいのであれば、それを忘れてください。それは可能から程遠いです。それはちょうど完璧なブラウザ(XHTML + CSSレンダリングエンジン)を見つけるようなものだからです。持っていますか? IEかFFか
私はDOMPDFである程度成功しました。重要なのは、ライブラリの動作に合わせてHTML + CSSコードを修正する必要があるということです。それ以外は、私はかなり良い結果を得ています。
下記参照:
dompdf build - 私はひどいリソースを独占していた古いバージョンを使用していて、私のpdfをレンダリングするのにずっと時間がかかりました。 ここ から毎晩つかんだ後。
PDFを生成するのに数秒しかかかりませんでした。そして、 PrinceXML / Docraptor と同じようにうまくレンダリングされました。前回使用してから、 dompdf コードを真剣に最適化したようです。
_ tcpdf _ についてのDarryl Heinの言及は、おそらく素晴らしい考えです。 Nicola Asuniのコードはかなり便利で強力です。唯一の問題は、PDFファイルを生成されたPDFとマージすることを計画している場合、それらの機能がないことです。 PDFを作成してから、Sid Steward(www.pdflabs.com/tools/pdftk-the-pdf-toolkit/)によるPDFTKのようなものを使用してそれをマージする必要があります。
コストの面では、多くの場合、Webサービス(API)を使用することがより賢明な方法です。さらに、このプロセスを外部委託することによって、あなたはあなた自身のインフラストラクチャ/バックエンドに負担をかけることなく - そしてあなたが信頼できるサービスを使っているなら - ウェブ標準の調整、稼働時間、短い処理時間と迅速なコンテンツ配信との互換性を確実にします。
私は現在市場に出ているWebサービスの大部分についていくつかの調査をしました、価格/価値比率に基づく順序で、私がこのスレッドで言及する価値があると感じるAPIの下で見つけてください。それらのすべては、事前に構成されたPHPクラスとパッケージを提供しています。
品質:
高品質のエンジンPrinceXML
をバックボーンとして持つことで、 DocRaptor は明らかに最高のPDF品質を提供し、高度に洗練され変換されたPDFドキュメントを返します。しかし、 pdflayer API サービスはここではかなり近づいています。 Pdfcrowd は必ずしも品質で得点するわけではなく、処理速度で得点します。
費用:
pdflayer.com - 上で示したように、ここで最も費用対効果の高いオプションはpdflayer.comで、月額100のPDFと$ 9.99から$ 119.99のプレミアム購読のための完全無料購読プランを提供します。 毎月10,000件のPDF文書の価格は$ 39.99です。
docraptor.com - 7日間の無料試用期間を提供する。プレミアム購読プランは15ドルから2250ドルの範囲です。 毎月10,000件のPDF文書の価格は約$ 300.00です。
pdfcrowd.com - 100個のPDFをonce無料で提供しています。プレミアム購読プランは9ドルから89ドルの範囲です。 毎月10,000件のPDF文書の価格は、〜49.00ドルです。
私はそれらの3つすべてを使いました、そして、このテキストは誰もがそれらのすべての支払いをする必要なしに決定するのを助けることになっています。この文章は一つの製品を支持するために書かれたものではなく、私はどの製品とも提携していません。
コマンドラインにアクセスできる場合は、 PhantomJS を使用してPDF
からURL
を作成できます(リモートまたはローカル)。
それは本当にうまくいき、そして無料の解決策です。
この正確な問題のために作られたこの example スクリプトを見てください。
私はPHPクラスがCSSでxHtmlページをレンダリングするのに最適になるとは思わない。
新しいCSSルールが出るとどうなりますか? (すぐにCSS 3.0 ...)
HTMLページをレンダリングする最善の方法は、明らかにブラウザです。 Firefox 3.0はネイティブにpdfフォーマットで '印刷'することができ、torisugaryはそれを使用するための拡張(コマンドライン印刷)を開発しました。 ここで見つけることができます
とにかく、まだ多くの問題があります。runninr firefox ちょうど pdfコンバーターとして...
現時点では、私はwkhtmltopdfが(サファリブラウザによって使用されるものである)最も速く、速く、すばらしく、最高であると思います。はい、同様にオープンソースです... それを見てみましょう
おそらく、あなたは、ファイルをコンバーターに渡す前にTidyを試して使うかもしれません。レンダラーの1人が何らかのHTMLの問題(閉じられていないタグなど)をチョークした場合は、それが役立つ場合があります。
私はWebページからPDFファイルを構築するためのパブリックAPIを開発しました。それはとても使いやすくするためのNice PHPクライアントクラスを持っています。これはwkhtmltopdfを使用してPDFをクラウドにレンダリングします。
HTMLに特別なものは必要ありません。 images/css/jsリンクに絶対URLは必要ありません。 localhost(dev machine)でも動作します。
現在、このサービスは4つのAzure地域(米国東部、米国西部、EU北部、東南アジア)にエンドポイントがあります。
独自のプロトコルを使用してWebページのコンテンツをAPIに送信してPDFに変換するので高速です。
すべてのエンドポイントが負荷分散されているので信頼性があります。
テストまたは使用率の低い利用可能な無料アカウント。 Webサイトの詳細:
私はTCPDFかDOMPDFの順にお勧めします。
すでに多くの解決策が提供されていますが、私は次の2つをお勧めします。
これら2つのAPIについて前述のすべてのソリューションと異なる点は、CSSとJavaScriptを使用してHTMLをPDFに変換することに加えて、PDF権利管理、透かし入れ、および暗号化も提供することです。したがって、これは実用化したい人のためのオールインワンソリューションです。
免責事項:私はKaiomi、これら両方のウェブサイトを運営する会社で働いています。
細かいレンダリングは何も意味しません。検証しますか?
どのブラウザでも、入力がどれほど悪くても、画面に何かを表示するためにできる限りのことをします。そしてもちろん、彼らは同じことをしません。 FireFoxと同じレンダリングが必要な場合は、そのレンダリングエンジンを使用できます。それのためのpdfジェネレータがあります。しかし、それはひどい仕事です。
TCPDFは問題なく動作し、依存関係はありません。無料であり、常にバグが修正されています。提供されたHTML/CSSコンテンツが適切にフォーマットされていれば、それは妥当な速度です。私は通常50 - 300 kBのHTML入力(CSSを含む)から生成し、1 - 3秒以内に10 - 15 PDFページでPDF出力を得ます。
TCPDFに何かを送信する前に、HTMLプリティフォーマッタとして tidy libraryを使用することを強くお勧めします。
HTMLからPDFへの変換は、実際にはPHPを使用してサーバー側で行われるために必要ですか?
私はHTML5/JavaScriptを使ったクライアントサイドのソリューション jsPDF に出会ったところです。 MITライセンスの コードはGitHub にもあります。
この種のものを常に検索する人がいる場合は、HTMLコードとページをPDFに変換できる free Webサイトがあります。あなたがURLからpdfファイルを得ることを可能にする(非常に小さい)apiもあります。
_ php _ ではなく、 Java library のようになります。
Flying SaucerはXMLまたはXHTMLを取り、それにCSS 2.1準拠のスタイルシートを適用してPDFにレンダリングします。
_ php _ からsystem()
または同様の呼び出しを介して使用できます。それは _ xml _ input
の整形式を必要としますが。