ホームページ >バックエンド開発 >PHPチュートリアル >PHPマスター| dompdfを使用してHTMLをPDFに変換します

PHPマスター| dompdfを使用してHTMLをPDFに変換します

Lisa Kudrow
Lisa Kudrowオリジナル
2025-02-23 10:36:11786ブラウズ

PHPマスター| dompdfを使用してHTMLをPDFに変換します

PDFは、Adobeが元々作成した標準形式で、固定レイアウトドキュメントでテキストと画像を表現しています。 WebアプリケーションがPDF形式で請求書やレポートなどのダウンロードデータをサポートすることは珍しくありません。この記事では、PHPを使用してPDFドキュメントを簡単に生成する方法を説明します。 DOMPDFは優れたライブラリであり、HTMLマークアップおよびCSSスタイルからPDFを生成できます(ほとんどがCSS 2.1に準拠しており、一部のCSS3プロパティをサポートしています)。これらの馴染みのあるテクノロジーを使用してコンテンツをどのように見えるかを決定し、それを簡単に固定ドキュメントに変換できます。図書館には、他にも多くの便利で興味深い機能があります。

キーテイクアウト

  • DOMPDFは、HTMLマークアップとCSSスタイルをPDFドキュメントに変換できるPHPライブラリであり、PDF形式でデータのダウンロードをサポートする必要があるWebアプリケーションに役立ちます。 = 5.0が必要です。 HTMLマークアップは、文字列またはファイルまたはURLからロードしてから、PDFにレンダリングできます。
  • DOMPDFは、ペーパーサイズ、ページの向き、文字エンコーディングなどの特定のニーズに合わせてPDFを調整するためのさまざまな構成オプションを提供します。また、生成されたPDFをディスクに保存したり、ヘッダーやフッターを追加したりするなど、高度な使用法も可能です。
  • dompdfは強力なツールですが、形成されていないHTMLに耐えられず、CSS3に対するサポートは限られているなど、いくつかの制限があります。能力と潜在的な問題を完全に理解するために、ライブラリのドキュメントとソースコードを確認することをお勧めします。

始めましょう

DOMPDFはGitHubで利用可能で、Composerを使用してインストールできます。作曲家ベースのインストールを正しくアップして実行することは、まだ少し注意が必要なので、Gitを使用してDOMPDFをインストールすることをお勧めします。 ライブラリには、MBSTRINGおよびDOM拡張機能が有効になっているPHP> = 5.0が必要です。また、いくつかのフォントが必要です。これは通常、ほとんどのマシンで使用できます。 ライブラリを配置して実行する場所に移動します。
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
DOMPDFをダウンロードした状態で、簡単なPDFを生成する短い例を書きましょう。
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
プロジェクトでライブラリを使用するために、ほとんどのDOMPDF構成を含むdompdf_config.inc.phpを最初に取り込みます。また、デフォルトの構成パラメーターをオーバーライドできるオートローダーとカスタム構成ファイルもロードします。 HTMLマークアップは、load_html()メソッドの文字列として指定されます。または、load_html_file()メソッドを使用して、ファイルまたはURLからマークアップをロードできます。ファイル名またはWebページのURLを引数として受け入れます。 render()メソッドはHTMLをPDFにレンダリングし、PDFファイルをダンプする準備ができています。 Stream()は、結果のPDFをブラウザへの添付ファイルとして送信します。 Stream()メソッドには、オプションの2番目のパラメーター、オプションの配列があります。
  • Accept-ranges - boolean、「accept-ranges」ヘッダーを送信します(デフォルトではfalse)。
  • 添付ファイル - ブール値、「コンテンツディスポジション:添付ファイル」ヘッダーを送信します。ブラウザに保存プロンプトを表示するように強制されます(デフォルトでtrue)。
  • 圧縮 - ブール、コンテンツコンプレッションを有効にします(デフォルトでは真)。
  • ここで非常にシンプルなPDFを生成しましたが、それはあまり実用的ではありません。実際には、多くの場合、紙のサイズ、ページの向き、文字エンコードなどに関する要件があります。DOMPDFを実際のニーズにより適したものにするために設定できる構成オプションが数多くあります。それらはすべてdompdf_config.inc.phpでリストおよび説明されています それはそれらをデフォルト値に設定します。カスタム構成ファイルdompdf_config.custom.inc.phpを更新することにより、これらの値を変更できます。重要な設定のいくつかは次のとおりです。
    dompdf_default_paper_size - PDFドキュメントのデフォルトのペーパーサイズを設定します。サポートされている紙のサイズは、/cpdf_adapter.cls.php(デフォルト値は「文字」)にあります。
  • DOMPDF_TEMP_DIR - DOMPDFが使用する一時ディレクトリを指定します。この場所がWebサーバーアカウントで書くことができることを確認してください。
  • DOMPDF_UNICODE_ENABLED - PDFがUnicodeフォントを使用するかどうかを設定します(デフォルトはtrue)。
  • DOMPDF_ENABLE_REMOTE - リモートサイトから画像またはCSSスタイルを含めることを有効にします(デフォルトはFALSEです)。
  • debug_layout - レイアウトのデバッグに役立つpdfファイルの各HTMLブロックの周りにボックスをレンダリングするかどうか(デフォルトはfalse)。

Advanced使用法

次に、DOMPDFのいくつかの高度な使用について話しましょう。おそらく、生成されたPDFドキュメントをブラウザに送信する代わりにディスクに保存する必要があります。方法は次のとおりです。
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
前の例のようにStream()を呼び出す代わりに、PDFを文字列として返すoutput()を使用します。オプションのオプションアレイも受け入れますが、利用可能な唯一のオプションは圧縮です(デフォルトは真です)。 また、DOMPDFを使用すると、HTMLにレンダリングするPHPスクリプトを埋め込むことにより、生成されたPDFにヘッダーまたはフッターを追加することもできます。ただし、任意のコードを処理すると、注意しないとセキュリティリスクが発生する可能性があるため、この機能を制御する構成値はデフォルトでオフになっています。最初にDOMPDF_ENABLE_PHPオプションをTRUEで設定する必要があります。 インラインPHP実行を有効にすると、PDFオブジェクトがスクリプト内で利用可能になり、ページを操作するために使用できます。ページ内のどこにでもテキスト、行、画像、長方形などを追加できます。
<span><span><?php
</span></span><span><span>set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf");
</span></span><span>
</span><span><span>require_once "dompdf_config.inc.php";
</span></span><span>
</span><span><span>$dompdf = new DOMPDF();
</span></span><span>
</span><span><span>$html = <span><span><<<'ENDHTML'</span>
</span></span></span><span><span><html>
</span></span><span><span> <body>
</span></span><span><span>  <h1>Hello Dompdf</h1>
</span></span><span><span> </body>
</span></span><span><span></html>
</span></span><span><span><span>ENDHTML<span>;</span></span>
</span></span><span>
</span><span><span>$dompdf->load_html($html);
</span></span><span><span>$dompdf->render();
</span></span><span>
</span><span><span>$dompdf->stream("hello.pdf");</span></span>
スクリプトはHTMLマークアップに直接埋め込まれ、最初にオブジェクトを開き、レンダリングに影響を与えることができます。すべての図面がそのオブジェクトに記録され、このオブジェクトをすべてまたは選択したページに追加できます(ただし、制限はあります)。 次に、ページの実際の幅と高さを取得して、追加する予定のフッターの座標を計算します。また、テキストコンテンツを追加している間、フォントオブジェクトを提供する必要があります。 font_metrics :: get_font()により、必要なオブジェクトを作成できます。また、get_font_height()を使用して、そのフォントサイズで指定されたフォントの高さを取り、フッターの内容の位置を計算します。メソッドget_font_width()は、計算でも使用される指定されたフォントとフォントサイズのテキストの幅を返します。 Line()メソッドは、ポイント(x1、y1)から(x2、x2)に線を描画します。提供された色の値は、実際のRGB値ではないことに注意してください。基礎となるPDFクラスには0〜1の値が必要なため、RGB値をこれらの新しい値に変換します。より良い近似を取得するには、255で分割できます。 xおよびyの位置、追加するテキスト、フォントオブジェクト、フォントサイズ、および色を受け入れるpage_text()メソッドを使用して、各ページのページ番号を追加します。 dompdfは{page_num}の値を自動的に置き換えます 各ページの{page_count}、$ pdfを利用できるようにします。 PDFがレンダリングすると、フッターセクションは次のようになります。

PHPマスター| dompdfを使用してHTMLをPDFに変換します

インラインPHPの使用を避け、PHPから直接同じ効果を達成することが可能です。
git clone https://github.com/dompdf/dompdf.git
git submodule init
git submodule update
レンダリングされたPDFを本質的に変更しているため、$ dompdf-> render()を呼び出した後にコードを配置することに注意してください。

結論

この記事では、DOMPDFを使用してHTMLをPDFに簡単に変換する方法について説明しました。 DOMPDFは優れたライブラリですが、PDFドキュメントを生成するための防弾ソリューションではありません。いくつかの制限と問題があります。 DOMPDFは、形成されていないHTMLに対して実際には耐性がなく、大きなテーブルは簡単にメモリを使い果たすことができます。 Floatのようないくつかの基本的なCSS機能は完全にはサポートされておらず、CSS3に対するサポートは限られています。 DOMPDFでサポートされていない機能が必要な場合は、WKHTMLTOPDFのようなものがあなたにとってより良い解決策かもしれません。それでも、DOMPDFは非常にシンプルで、PDFの輸出ニーズの大部分に適しています。 このような記事でライブラリが提供するすべての機能を説明することは本当に難しいので、ドキュメントとソースコードをチェックして、コールバックの追加、カスタムフォントなどのクールな機能について学ぶようにしてください。 '私の限られた専門知識の中であなたを助けてくれてうれしいです。コメントセクションで質問を残し、経験を共有してください。 Fotoliaを介した画像 そして、この投稿を読んで楽しんだなら、あなたは学ぶことができるようになるでしょう。マスターから新鮮なスキルとテクニックを学ぶ場所。メンバーは、ジャンプ開始PHPなどのすべてのSitePointの電子ブックやインタラクティブなオンラインコースに即座にアクセスできます。 この記事へのコメントは閉じられています。 PHPについて質問がありますか?フォーラムで聞いてみませんか? HTMLをdompdf でPDFに変換することに関するよくある質問(FAQ) dompdfとは何ですか、なぜそれが使用されているのか?dompdfは、HTMLをPDFに変換する簡単な方法を提供するPHPライブラリです。 CSSスタイル、JavaScript、画像など、複雑なHTMLレイアウトを処理できるため、使用されます。これは、HTMLコンテンツからPDFドキュメントを生成する必要がある開発者にとって強力なツールです。使いやすく、柔軟性があり、任意のPHPアプリケーションに統合できます。

PHPの依存関係管理ツールであるComposerを使用してDOMPDFをインストールするにはどうすればよいですか? Composerをインストールしてから、コマンド「Composer required dompdf/dompdf」を実行できます。これにより、プロジェクトにDOMPDFライブラリがダウンロードされてインストールされます。

DOMPDFでCSSを使用できますか? HTMLでインラインCSSを使用するか、外部CSSファイルにリンクできます。 DOMPDFは、PDFを生成するときにスタイルを適用します。ただし、すべてのCSSプロパティがサポートされているわけではないことに注意してください。

PDFに画像を追加するにはどうすればよいですか? 。 「SRC」属性は、画像ファイルを指す必要があります。 DOMPDFには、生成されたPDFに画像が含まれます。

複数のページでPDFを生成できますか?

はい、DOMPDFは複数のページでPDFを生成できます。 HTMLコンテンツが複数のページにまたがるのに十分な長さである場合、DOMPDFは自動的にページに分割されます。また、CSSを使用してページブレイクを手動で追加することもできます。

ページのサイズと方向を設定するにはどうすればよいですか?

「set_paper」メソッドを使用してページのサイズと方向を設定できます。たとえば、 '$ dompdf-> set_paper(' a4 '、' landscape ')'を使用して、ページサイズをA4に、方向をランドスケープに設定できます。 >

はい、dompdfはlaravelで使用できます。 LaravelアプリケーションでDOMPDFを使用する簡単な方法を提供する「Laravel-DompDF」と呼ばれるLaravelパッケージがあります。 「出力」メソッドと「file_put_contents」関数を使用して、ファイルに生成されたpdf。たとえば、 'file_put_contents(' mypdf.pdf '、$ dompdf-> output())'を使用して、pdfを 'mypdf.pdf'。 Webアプリケーションでの応答として? はい、Webアプリケーションの応答として生成されたPDFを送信できます。 「ストリーム」メソッドを使用して、PDFをブラウザに直接送信できます。 DOMPDFのインストールを最新の状態に保ち、DOMPDFチームが提供するセキュリティガイドラインを確認することが重要です。

以上がPHPマスター| dompdfを使用してHTMLをPDFに変換しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。