私はPHP開発者であり、私のプロジェクトの1つで、いくつかのHTMLドキュメント(約30〜50ページ)をPDFドキュメントに変換する必要があります。
私の検索では、次の可能な解決策が見つかりました。それらの中には、いくつかのPHPライブラリといくつかのコマンドラインアプリケーションがあります。それぞれに、独自の長所と短所があります。
PHPライブラリ:
ライブラリごとに、次のような問題があります。
必要なリソース(メモリと時間)が多すぎます
(php.iniで次のパラメーターを設定しました:
_max_execution_time = 600
_
_memory_limit = 250M
_
しかし、それでもうまくいきません。)
HTMLページを適切にフォーマットする必要があります(例:閉じるタグが欠落していない)
単純なHTMLドキュメント(CSSがほとんどない5ページ以下)を変換しようとすると、これらすべてが機能します
コマンドラインアプリケーション
すべてのコマンドラインアプリは、上記のライブラリと比較して完全かつ非常に高速に動作しますが、コンソールで直接実行した場合に限ります。 PHP with exec()
またはsystem()
で使用しようとすると、エラーが発生します。
以下は、コマンドラインアプリケーションとPHPで実行したときのエラーです。
html2pdf( http://www.tufat.com/s_html2ps_html2pdf.htm )
html2pdf:11380):Gtk-警告**:ディスプレイを開くことができません:: 0.0
プロトコルが指定されていません
wkhtmltopdf
ページの読み込み:10%
ページの読み込み:33%
ページの読み込み:100%
リダイレクトを待っています
ページの出力
QPainter :: begin():falseを返しました
QPainter :: begin():falseを返しました
QPainter :: save:ペインターがアクティブではありません
QPainter :: scale:ペインターがアクティブではありません
QPainter :: setRenderHint:レンダリングヒントを設定するには、Painterがアクティブである必要があります
QPainter :: setBrush:ペインターがアクティブではありません
QPainter :: pen:ペインターがアクティブではありません
QPainter :: setPen:ペインターがアクティブではありません
htmltopdf( http://www.ultrashareware.com/html-to-pdf.htm )
だから今私は助けを探しています。誰でも答えることができます:
私の場合、どのPHPライブラリがうまく機能しますか?
コマンドラインアプリケーションでこれらのエラーが発生するのはなぜですか?
wkhtmltopdfについて:
これは非常に高速に動作し、スローするあらゆる種類のHTML/CSSを処理できるため、速度が必要な場合は、真剣に検討する必要があります。私たちは最近、私たちの会社でそれに切り替えました、そして私たちのPDFサービングは途方もないスピードブーストを得ました。
少なくともLinuxでは、XOrgライブラリをインストールする必要があります。通常、サーバーにはXOrgライブラリがないため、問題が発生する可能性があります。
これを試して:
Prince を試しましたか?
HTMLをPDFに変換するための解決策はたくさんありますが、 https://grabz.it で解決策を提案できます。
には柔軟なPHP APIがあり、cronjobで使用することも、PHP Webページから直接使用することもできます。
試してみたい場合は、最初に認証用に アプリキー+シークレット を取得し、 開発フリーSDK を取得する必要があります
これは基本的な実装の例です。
//First init
include("GrabzItClient.class.php");
// Create the GrabzItClient class
// Replace "APPLICATION KEY", "APPLICATION SECRET" values for your account!
$grabzIt = new GrabzItClient("Application Key", "Application Secret");
// To take a PDF screenshot
$grabzIt->URLToPDF("http://www.google.com");
// To save in case public callback handler is available
$grabzIt->Save("http://www.example.com/handler.php");
// OR To save in case public callback handler is not available,
// it's a synchonous method can be usedthe will force your application to wait
// while the screenshot is created
$filepath = "images/result.jpg";
$grabzIt->SaveTo($filepath);
画像のスクリーンショットなど などの他の種類のスクリーンショットを取得することは可能です。
HTMLDOCコマンドラインツールプロジェクトを試してください https://www.msweet.org/htmldoc/index.html
1つの可能性:スクリプトを自動的に作成する:
ステップ4は簡単です-画像をPDFに配置したり変換したりできるPHP /コマンドラインライブラリがたくさんあります(例:fpdf)。
手順1〜3については、ここからコードを確認してみてください: http://browsershots.org/ 。関連性があるかどうかはわかりません-多くの設定が必要なようです。たぶん彼らのアーキテクチャはうまくいくでしょうか?
いくつかの質問と提案:
しかし、オンラインサービスを使用して、HTMLコンテンツをHTTP経由で送信する場合はどうでしょうか。もちろん、それらのほとんどは無料ではありません。