
PDFは標準形式です。 もともとは、ドキュメント内のテキストと画像を固定構造で表すためにAdobeによって作成されました。 請求書やレポートなどのデータダウンロードをサポートするWebアプリケーションがPDF形式でレンダリングすることは、長い間珍しくありませんでした。 そのため、この記事では、PHPを使用してPDF文書を簡単に生成します。
Dompdfは、HTMLマークアップとCSSスタイルからPDFを生成できる優れたライブラリです(多くの場合、これらはCSS3プロパティをサポートするCSS 2.1と互換性のあるスタイルです)。 これらの使い慣れた技術を使用してコンテンツの外観を決定し、それを簡単に固定ドキュメントに変換できます。 このライブラリには、他の便利で興味深い機能もあります。
仕事を始める
DompdfはGitHubで入手でき、Composerを使用してインストールできます。 Composerを介してエラーなしでインストールすると、多くの場合問題が発生するため、Gitを使用してDompdfをインストールすることをお勧めします。
ライブラリには、mbstringおよびDOM拡張機能が有効化されたPHP> = 5.0が必要です。 また、ほとんどのコンピューターで一般的に使用可能ないくつかのフォントも必要です。
ライブラリをインストールするディレクトリに移動し、コマンドラインを実行します。
git clone https://github.com/dompdf/dompdf.git git submodule init git submodule update
Dompdfをダウンロードしたら、簡単なPDFドキュメントを生成する短い例を作成しましょう。
<?php set_include_path(get_include_path() . PATH_SEPARATOR . "/path/to/dompdf"); require_once "dompdf_config.inc.php"; $dompdf = new DOMPDF(); $html = <<<'ENDHTML' <html> <body> <h1>Hello Dompdf</h1> </body> </html> ENDHTML; $dompdf->load_html($html); $dompdf->render(); $dompdf->stream("hello.pdf");
プロジェクトでライブラリを使用するために、まず、
dompdf_config.inc.phpファイルをプルアップします。このファイルには、ほとんどのDompdf設定が含まれています。 また、デフォルト設定をオーバーライドできるオートローダーとユーザー構成ファイルもロードします。
HTMLマークアップは、文字列として
load_html()メソッドに渡されます。 または、
load_html_file()メソッドを使用して、ファイルまたはURLからマークアップをロードできます。 引数としてファイル名またはWebページのURLを取ります。
render()メソッドはHTMLをPDFで
表示し、ファイルを
レンダリングする準備ができました。
stream()メソッドは、結果のPDFを添付ファイルとしてブラウザに送信します。 このメソッドには、オプションの2番目のパラメーターであるオプションの配列があります。
- Accept-Ranges- ブール値 、ヘッダー「Accept-Ranges」を送信します(デフォルトではfalse )。
- Attachment - boolean 、ヘッダー「Content-Disposition:attachment」を送信して、ブラウザーに保存要求を表示させます(デフォルトではtrue )。
- compress - boolean 、コンテンツの圧縮を有効にします(デフォルトではtrue )。
非常に簡単なPDFを生成しましたが、これは完全に実用的ではありません。 実際には、多くの場合、シートサイズ、ページの向き、文字エンコードなどの要件があります。 Dompdfを実際のニーズにより適したものにするために設定できるオプションがいくつかあります。 それらはすべて
dompdf_config.inc.phpファイルにリストおよび説明されており、デフォルト値に設定されています。 ユーザー構成ファイル
dompdf_config.custom.inc.phpを更新することにより、これらの値を変更できます。 重要な設定の一部を次に示します。
- DOMPDF_DEFAULT_PAPER_SIZE-PDFドキュメントのデフォルトのシートサイズを設定します。 サポートされているシートサイズは、 include / cpdf_adapter.cls.phpファイルにあります (デフォルト値は「letter」です )。
- DOMPDF_TEMP_DIR-Dompdfが使用する一時フォルダーを示します。 このディレクトリがWebサーバーの設定に従って書き込み可能であることを確認してください。
- DOMPDF_UNICODE_ENABLED-PDFがUnicodeフォントを使用するかどうかを設定します(デフォルトではtrue )。
- DOMPDF_ENABLE_REMOTE-リモートサイトからの画像またはCSSスタイルの組み込みをアクティブにします(デフォルトではfalse )。
- DEBUG_LAYOUT-PDFファイルの各HTMLブロックの周囲に境界線を表示するかどうかを設定します。 レイアウトのデバッグに非常に便利です(デフォルトではfalse )。
高度な使用
では、Dompdfの高度な使用について少し話しましょう。 おそらく、生成されたPDFドキュメントをブラウザに送信するのではなく、ディスクに保存する必要があります。 方法は次のとおりです。
<?php $dompdf = new DOMPDF(); $dompdf->load_html($html); $dompdf->render(); $output = $dompdf->output(); file_put_contents("/path/to/file.pdf", $output);
前の例のように
stream()を呼び出す代わりに、PDFを文字列として返す
output()を使用します。 このメソッドはオプションの配列も受け入れますが、使用できるのは1つだけです
-compress (デフォルトは
true )。
Dompdfでは、表示するHTMLにPHPスクリプトを直接埋め込むことで、生成されたPDFにヘッダーとフッターを追加することもできます。 ただし、任意のコード処理がセキュリティリスクを引き起こす可能性があるため、この機能を担当する構成値はデフォルトでオフになっています。 まず、
DOMPDF_ENABLE_PHPオプションを
trueに設定する必要があり
ます 。
組み込みPHPを有効にするとすぐに、PDFオブジェクトがスクリプト内で使用可能になり、それを使用してページを操作できます。 テキスト、線、画像、長方形などを追加できます。
$html = <<<'ENDHTML' <html> <body> <script type="text/php"> if (isset($pdf)) {
スクリプトはHTMLマークアップに直接埋め込まれ、最初にオブジェクトを開いて表示に影響を与えます。 すべてのレンダリングはこのオブジェクトに書き込まれ、選択したすべてのページに追加できます(ただし制限があります)。
次に、ページの実際の幅と高さを取得して、追加するフッターの座標を計算します。 また、テキストコンテンツを追加するときにフォントオブジェクトを提供する必要があります。
Font_Metrics :: get_font()を使用すると、必要なオブジェクトを作成できます。 また、
get_font_height()を使用してフッターのコンテンツの位置を計算することにより、特定のフォントのサイズからフォントの高さを
取得します。
get_font_width()メソッドは、特定のフォントとサイズのテキストの幅を返します。これは計算にも使用します。
line()メソッドは、ポイント(X1、Y1)からポイント(X2、Y2)に線を引きます。 RGBでは色の値が完全に置換されないことに注意してください。 メインPDFクラスには0〜1の値が必要なので、RGB値をこれらの新しい値に変換します。 より良い近似を得るために、それらを255で除算できます。
page_text()メソッドを使用して各ページに番号を追加します。このメソッドは、追加するテキスト、フォントオブジェクト、フォントサイズ、色だけでなく、X座標とY座標も受け取ります。 Dompdfは、各ページの
{PAGE_NUM}および
{PAGE_COUNT}の値を自動的に置き換え、
$ pdfを利用可能にします。
また、組み込みのPHPを使用して、次のようなPHPから直接同様の効果を実現することはできません。
<?php $dompdf = new DOMPDF(); $dompdf->set_paper("A4");
$ dompdf-> render()を呼び出した後にコードを配置することに注意してください。これは、作成済みのPDFを本質的に編集するためです。
まとめると
この記事では、Dompdfを使用してHTMLをPDFに変換する簡単な方法について説明しました。 Dompdfは優れたライブラリであるという事実にもかかわらず、PDFドキュメントを生成するための完全に普遍的なソリューションではありません。 まだ特定の制限と問題があります。 Dompdfは設計が不十分なHTMLに対してあまり寛容ではなく、大きなテーブルはメモリオーバーフローを容易に引き起こす可能性があります。
floatなどの一部の基本的なCSS機能は完全にはサポートされ
ていません。 一般に、CSS3のサポートは非常に限られています。 Dompdfでサポートされていない関数が必要な場合、たとえばwkhtmltopdfが役立ちます。 それにもかかわらず、DompdfはPDFのエクスポートのほとんどのタスクを解決するための非常にシンプルで便利なツールです。
このような記事でライブラリのすべての機能を説明するのは実際非常に難しいので
、ドキュメントとソースコードを
確認することを忘れないでください。また、コールバックの追加、独自のフォントの使用などの便利な機能を学んでください。
オリジナル-phpmaster.com/convert-html-to-pdf-with-dompdf