php を使用して html を pdf ファイルに変換する方法: 最初に pdf をダウンロードしてインストールし、次に効果をテストし、次に「shell_exec」関数を使用して php でそれを呼び出し、最後にページングの問題を解決します。
#いくつかの HTML ページから PDF ファイルを生成する必要がある顧客がいたので、PHP を使用して HTML ページを PDF に変換するクラスをいくつか探しました。ファイル。 html2pdf、pdflib、FPDF を試しましたが、どれも私の要件を満たしていませんでした。
pdflib、FPDF これら 2 つの方法では、PDF を生成するためのプログラムを作成する必要があります。つまり、HTML ページを PDF に直接変換することはサポートされていません。html2pdf は HTML ページを PDF ファイルに変換できますが、通常の単純な変換しかできません。 HTML コード: HTML コンテンツをバックグラウンド ニュース エディターでタイプセットする必要がある場合、それは間違いなく機能しません。
長い間悩んだ末、BaiduとGoogleで検索した結果、非常に簡単な方法を見つけたので、ここで紹介します。
それは: wkhtmltopdf、wkhtmltopdf は、ブラウザーで表示できる Web ページを PDF に直接変換できます。まず、これは php クラスではなく、変換する HTML ページであることを説明させてください。 htmlページをpdfに変換するソフトですが、単なるデスクトップソフトではなく、cmdのバッチ処理を直接実行します。そしてphpにはshell_exec()関数があります。以下は、php を使用して PDF ファイルを生成する方法を段階的に紹介します。
1. pdf をダウンロードしてインストールします
ダウンロード アドレス: http://code.google.com/p/wkhtmltopdf/downloads/list
さまざまなプラットフォーム用のインストール パッケージが英語で提供されています。良くないので、Google翻訳してください。以下は Windows プラットフォームでの使用例です。wkhtmltopdf-0.9.9-installer.exe バージョンをダウンロードし、win7 32 ビット 64 ビットおよび Windows 2003 にインストールしてテストしましたが、問題はありませんでした。ダウンロード後は直接インストールしてください。以下で使用するインストールパスに注意してください。
インストール後、「Path」:;C:Program Files (x86)wkhtmltopdf という名前のシステム環境変数の後に、インストールしたディレクトリを追加する必要があります。インストール後、コンピュータを再起動します。
2 番目に、使用効果をテストします。
cmd に直接入力します: wkhtmltopdf http://www.shwzzz.cn/ F:website1.pdf
最初の入力: 実行中のソフトウェア名 (これは変更なし) 2 番目は URL、3 番目は生成されたパスとファイル名です。 Enter キーを押した後、生成の進行状況バーのプロンプトが表示されますか? 成功しました。生成ディレクトリに移動して、新しく生成された PDF ファイルがあるかどうかを確認してください。
3. php での呼び出し
php での呼び出しは非常に簡単で、shell_exec 関数を使用するだけですが、shell_exec 関数が使用できない場合は、php.ini で無効になっているかどうかを確認してください。
例: 0029fc9aaf008d5bd4a18e7e711fb0f9
3、ページングの問題を解決します
wkhtmltopdf は非常に便利です. しかし、不満な点もいくつかあります。 HTML ページが非常に長く、指定した場所でページネーションする必要がある場合はどうすればよいですか? wkhtmltopdf の開発者は、開発時にこれを考慮していませんでした。
たとえば、次の HTML ページ:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>pdf</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <style type="text/css"> *{ margin:0px; padding:0px;} div{ width:800px; height:1362px;margin:auto;} </style> <body> <div style=" background:#030"></div> <div style=" background:#033"></div> <div style=" background:#369"></div> <div style=" background:#F60"></div> <div style=" background:#F3C"></div> <div style=" background:#F0F"></div> <div style=" background:#0FF"></div> <div style=" background:#FF0"></div> <div style=" background:#00F"></div> <div style=" background:#0F0"></div> <div style=" background:#033"></div> <div style=" background:#369"></div> <div style=" background:#F60"></div> <div style=" background:#030"></div> <div style=" background:#033"></div> <div style=" background:#369"></div> <div style=" background:#F60"></div> <div style=" background:#F3C"></div> <div style=" background:#F0F"></div> <div style=" background:#0FF"></div> <div style=" background:#FF0"></div> <div style=" background:#00F"></div> <div style=" background:#0F0"></div> </body> </html>
PDF に生成するとき、数え切れないほどのデバッグの後、各ブロックを 1 ページにしたいのですが、 , PDFの1ページは約1362pxですが、奥に行くほど数値が狂い、PDFの1ページが何ピクセルになるのかはまだ分かりません。
しかし、wkhtmltopdf には、p スタイルの後に page-break-inside:avoid; を追加するという優れた方法があり、これで問題ありません。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>pdf</title> <link href="css/style.css" rel="stylesheet" type="text/css" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <style type="text/css"> *{ margin:0px; padding:0px;} div{ width:800px; min-height:1362px;margin:auto;page-break-inside:avoid;} </style> <body> <div style=" background:#030"></div> <div style=" background:#033"></div> <div style=" background:#369"></div> <div style=" background:#F60"></div> <div style=" background:#F3C"></div> <div style=" background:#F0F"></div> <div style=" background:#0FF"></div> <div style=" background:#FF0"></div> <div style=" background:#00F"></div> <div style=" background:#0F0"></div> <div style=" background:#033"></div> <div style=" background:#369"></div> <div style=" background:#F60"></div> <div style=" background:#030"></div> <div style=" background:#033"></div> <div style=" background:#369"></div> <div style=" background:#F60"></div> <div style=" background:#F3C"></div> <div style=" background:#F0F"></div> <div style=" background:#0FF"></div> <div style=" background:#FF0"></div> <div style=" background:#00F"></div> <div style=" background:#0F0"></div> </body> </html>
http://code.google.com/p/wkhtmltopdf/これは、wkhtmltopdf の問題に関するコミュニケーション プラットフォームですが、英語です。
多くの関連知識については、PHP 中国語 Web サイト をご覧ください。
以上がPHPを使用してHTMLをPDFファイルに変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。