検索

PHPでPDFファイルを生成する方法

Aug 27, 2023 am 09:25 AM
phppdf生成する

この記事では、PHP を使用して PDF ファイルを生成する方法について説明します。 TCPDF ライブラリを使用してプログラムで PDF ドキュメントを作成します。

ユーザーが注文受領書、請求書、請求書などの文書をダウンロードまたは印刷できる Web サイトを開発している場合、いくつかのオプションがあります。ドキュメントをブラウザでインラインで表示することも、ダウンロード用に提供することもできます。 PDF はドキュメントのダウンロードに最適な形式の 1 つであり、テキストの書式を保持するのに優れています。

つまり、PHP Web サイトで PDF ファイルを生成する方法を学びたい場合は、ここが正しい場所です。

TCPDFライブラリのインストール方法

このセクションでは、TCPDF ライブラリをインストールする方法を学習します。

TCPDF ライブラリをサーバーにインストールするには、複数の方法があります。 TCPDF ライブラリは Packagist および GitHub で入手できるため、Composer を使用することも、GitHub からクローンを作成することもできます。今回の場合は、Composer を使用してインストールします。

次のコマンドの実行に進み、Composer を使用して TCPDF ライブラリをインストールします。

リーリー

インストールが成功したら、次のコード スニペットに示すように、PHP スクリプトに autoload.php ファイルを含める必要があります。

リーリー

これにより、TCPDF ライブラリが提供するすべてのユーティリティ メソッドを使用できるようになります。

TCPDFライブラリの使用方法

このセクションでは、PDF 請求書を生成する方法を示す実践的な例を構築します。 TCPDF ライブラリには、PDF ドキュメントを生成するための参照として使用できる既製のテンプレートが多数用意されています。ただし、請求書は最初から作成させていただきます。

前のセクションですでに述べたように、TCPDF ライブラリには、ヘッダーとフッターを備えた汎用 PDF ファイルを生成できる既製のテンプレートが多数用意されています。これは、デフォルトの形式と設定に満足している場合に便利です。ただし、コンテンツだけでなくヘッダーとフッターもカスタマイズしたい場合は、TCPDF クラスを拡張し、対応するメソッドをオーバーライドする必要があります。

この例では、customPdfGenerator.phpexample.php という 2 つのファイルを作成します。 customPdfGenerator.php ファイルで、コアの TCPDF クラスを拡張し、いくつかのメソッドをオーバーライドする CustomPdfGenerator クラスを作成します。 example.php ファイルでは、CustomPdfGenerator クラスの使用方法を示します。

CustomPdfGenerator クラス

次の内容を含む customPdfGenerator.php ファイルの作成に進みます。

リーリー

CustomPdfGenerator クラスは TCPDF クラスを拡張するため、TCPDF クラスが提供するすべてのユーティリティ メソッドを使用して書式設定やフォーマットを行うことができることに注意してください。 PDFドキュメントを生成します。

TCPDF クラスを直接使用する代わりに独自のクラスを作成する唯一の目的は、組み込みのヘッダーおよびフッター コンポーネントを使用したくないことです。したがって、クラス内の header メソッドと footer メソッドをオーバーライドします。

ヘッダーメソッド

タイトルには、会社のロゴと所有者の名前を表示したいと考えています。ヘッダー メソッドを見て、その仕組みを理解しましょう。

リーリー

まず、Image メソッドを使用して、左側に会社のロゴを描画します。重要なのは、ロゴ画像への絶対パスを

Image メソッドに渡す必要があることです。次に、SetFont メソッドを使用して、タイトルに追加されるテキストのフォント ファミリーとフォント サイズを設定します。最後に、Cell メソッドを使用して、右側に所有者名を出力します。

これらのメソッドでは多くのパラメーターを渡すことができることがわかりますが、この記事ですべてのパラメーターについて説明することは不可能なので、詳しく調べることをお勧めします。

上記の設定により、タイトルは次のようになります:

PHPでPDFファイルを生成する方法

フッターメソッド

フッターには静的テキストを表示したいので、

Footer メソッドは次のコード スニペットに示すように非常に簡単です。 リーリー

フッターセクションは次のようになります:

PHPでPDFファイルを生成する方法

最後に

printTable メソッドがあります。このメソッドについては後で説明します。 printTable メソッドは、TCPDF クラスとは何の関係もありません。代わりに、プロジェクト情報を表示するテーブルを描画するために使用するカスタム ユーティリティ メソッドを使用します。

これは

CustomPdfGenerator クラスです。次のセクションでは、その使用方法と完全な PDF 請求書を生成するその他の方法を見ていきます。

example.php ファイル

前のセクションでは、カスタム ヘッダーとフッターを含む PDF ファイルを生成するために使用できる

CustomPdfGenerator ラッパー クラスを作成しました。このセクションでは、その使用方法を説明します。

次の内容を含む

example.php ファイルの作成に進みます。 リーリー

上記のファイルの重要なスニペットを見てみましょう。

まず、

autoload.php ファイルを追加して、TCPDF クラスが自動的にロードされるようにします。次に、カスタム クラスをロードするために customPdfGenerator.php ファイルを追加しました。

接下来,我们实例化了 CustomPdfGenerator 类以及默认设置。在实际开始写入 PDF 文件之前,我们还调用了一些方法来进行默认设置。

$pdf = new CustomPdfGenerator(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setFontSubsetting(true);
$pdf->SetFont('dejavusans', '', 12, '', true);

我们在上面代码片段中使用的常量已在 tcpdf_autoconfig.php 文件中定义。要覆盖这些常量之一,您只需在脚本中定义它,TCPDF 库将使用您的值。例如,PDF_PAGE_ORIENTATION 常量的默认值为 P(纵向),如果要将其更改为 L(横向),则只需包含 define ('PDF_PAGE_ORIENTATION', 'L ');脚本中的

接下来,有一个重要的片段,它调用 AddPage 方法,该方法实际上在 PDF 文档中添加一个新页面。

// start a new page
$pdf->AddPage();

现在我们已经添加了一个页面,我们可以开始在此页面上书写。

接下来,我们使用 WritewriteHTML 方法在左侧打印日期和发票号码。

// date and invoice no
$pdf->Write(0, "\n", '', 0, 'C', true, 0, false, false, 0);
$pdf->writeHTML("<b>DATE:</b> 01/01/2021");
$pdf->writeHTML("<b>INVOICE#</b>12");
$pdf->Write(0, "\n", '', 0, 'C', true, 0, false, false, 0);

Write 方法从当前位置开始打印文本,您可以使用它来打印纯文本。另一方面, writeHTML 方法允许您保留文本中的 HTML 格式。虽然 writeHTML 方法提供了有限的 HTML 格式支持,但它涵盖了日常开发中经常使用的所有 HTML 标签。

同样,我们在 writeHTML 方法的帮助下打印了地址和收单地址。

// address
$pdf->writeHTML("84 Norton Street,");
$pdf->writeHTML("NORMANHURST,");
$pdf->writeHTML("New South Wales, 2076");
$pdf->Write(0, "\n", '', 0, 'C', true, 0, false, false, 0);

// bill to
$pdf->writeHTML("<b>BILL TO:</b>", true, false, false, false, 'R');
$pdf->writeHTML("22 South Molle Boulevard,", true, false, false, false, 'R');
$pdf->writeHTML("KOOROOMOOL,", true, false, false, false, 'R');
$pdf->writeHTML("Queensland, 4854", true, false, false, false, 'R');
$pdf->Write(0, "\n", '', 0, 'C', true, 0, false, false, 0);

默认情况下,writeHTML 方法在左侧打印文本。如果要打印右对齐文本,可以传递 R 作为 writeHTML 方法的最后一个参数,如上面的代码片段所示。在我们的例子中,我们希望显示右对齐的收单地址。

让我们快速浏览一下到目前为止我们已经构建的内容。

PHPでPDFファイルを生成する方法

接下来,我们有一个代码片段,它负责打印项目信息表的繁重工作。

// invoice table starts here
$header = array('DESCRIPTION', 'UNITS', 'RATE $', 'AMOUNT');
$data = array(
   array('Item #1','1','100','100'),
   array('Item #2','2','200','400')
);
$pdf->printTable($header, $data);
$pdf->Ln();

还记得我们在customPdfGenerator.php类中定义的printTable方法吗?现在是时候详细探讨它了。让我们拉入 printTable 方法的代码。

public function printTable($header, $data)
{
    $this->SetFillColor(0, 0, 0);
    $this->SetTextColor(255);
    $this->SetDrawColor(128, 0, 0);
    $this->SetLineWidth(0.3);
    $this->SetFont('', 'B', 12);

    $w = array(110, 17, 25, 30);
    $num_headers = count($header);
    for($i = 0; $i < $num_headers; ++$i) {
        $this->Cell($w[$i], 7, $header[$i], 1, 0, 'C', 1);
    }
    $this->Ln();

    // Color and font restoration
    $this->SetFillColor(224, 235, 255);
    $this->SetTextColor(0);
    $this->SetFont('');

    // table data
    $fill = 0;
    $total = 0;

    foreach($data as $row) {
        $this->Cell($w[0], 6, $row[0], 'LR', 0, 'L', $fill);
        $this->Cell($w[1], 6, $row[1], 'LR', 0, 'R', $fill);
        $this->Cell($w[2], 6, number_format($row[2]), 'LR', 0, 'R', $fill);
        $this->Cell($w[3], 6, number_format($row[3]), 'LR', 0, 'R', $fill);
        $this->Ln();
        $fill=!$fill;
        $total+=$row[3];
    }

    $this->Cell($w[0], 6, '', 'LR', 0, 'L', $fill);
    $this->Cell($w[1], 6, '', 'LR', 0, 'R', $fill);
    $this->Cell($w[2], 6, '', 'LR', 0, 'L', $fill);
    $this->Cell($w[3], 6, '', 'LR', 0, 'R', $fill);
    $this->Ln();

    $this->Cell($w[0], 6, '', 'LR', 0, 'L', $fill);
    $this->Cell($w[1], 6, '', 'LR', 0, 'R', $fill);
    $this->Cell($w[2], 6, 'TOTAL:', 'LR', 0, 'L', $fill);
    $this->Cell($w[3], 6, $total, 'LR', 0, 'R', $fill);
    $this->Ln();

    $this->Cell(array_sum($w), 0, '', 'T');
}

首先,在实际开始打印发票表的标题行之前,我们调用了几个方法来设置字体大小、填充颜色、线宽和文本颜色。接下来,我们在 Cell 方法的帮助下循环遍历 $header 数组并打印表头标题。

Cell 方法允许您打印具有可选边框、背景颜色和字符串的单元格(矩形区域)。您还可以指定在单元格中打印的文本的对齐方式。因此,Cell 方法是构建表的完美候选方法。

打印表格标题标题后,我们循环遍历 $data 数组并打印它以完成整个表格。最后,我们多次调用 Cell 方法来打印总金额。

表格的快速预览应如下所示:

PHPでPDFファイルを生成する方法

现在,让我们回到 example.php 文件来查看最后几行代码。

在发票末尾,我们将打印一些评论和联系信息,如以下代码片段所示。

// comments
$pdf->SetFont('', '', 12);
$pdf->writeHTML("<b>OTHER COMMENTS:</b>");
$pdf->writeHTML("Method of payment: <i>PAYPAL</i>");
$pdf->writeHTML("PayPal ID: <i>katie@paypal.com");
$pdf->Write(0, "\n\n\n", '', 0, 'C', true, 0, false, false, 0);
$pdf->writeHTML("If you have any questions about this invoice, please contact:", true, false, false, false, 'C');
$pdf->writeHTML("Katie A Falk, (07) 4050 2235, katie@sks.com", true, false, false, false, 'C');

最后,我们使用 Output 方法将 PDF 文件保存到磁盘。如果您不想将 PDF 文件保存在磁盘上,而只想将其发送到浏览器,则需要在 Output 方法的第二个参数中使用 I

继续运行 example.php 文件,它应该生成如下屏幕截图所示的 PDF 文件。

PHPでPDFファイルを生成する方法

结论

这就是如何使用 TCPDF 库在 PHP 中创建 PDF 文档。我们创建了一个真实示例来演示 TCPDF 库提供的一些不同的 API。

TCPDF 官方文档提供了许多现成的模板,您可以探索它们以了解内置 API,我鼓励您探索它!

如果您想了解有关在网站中包含 PDF 的更多信息,请查看以下链接:

  • PHPでPDFファイルを生成する方法PHPでPDFファイルを生成する方法 JavaScript PDF ビューアを作成する方法 PHPでPDFファイルを生成する方法PHPでPDFファイルを生成する方法 アシュラフ・ハティベラガル 2021年8月16日
  • PHPでPDFファイルを生成する方法PHPでPDFファイルを生成する方法 WordPress プラグインを使用して PDF ファイルを埋め込み、保護する方法 PHPでPDFファイルを生成する方法PHPでPDFファイルを生成する方法 エスターは粘り強く続けた 2022年10月17日
  • PHPでPDFファイルを生成する方法PHPでPDFファイルを生成する方法 無料のプラグインを使用して WordPress ウェブサイトに PDF ファイルを埋め込む方法 PHPでPDFファイルを生成する方法PHPでPDFファイルを生成する方法 百人の息子 2019年7月29日
  • PHPでPDFファイルを生成する方法PHPでPDFファイルを生成する方法 WowBook jQuery Flipbook プラグインの使用方法 PHPでPDFファイルを生成する方法PHPでPDFファイルを生成する方法 アシュラフ・ハティベラガル 2019年1月16日

以上がPHPでPDFファイルを生成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPの現在のステータス:Web開発動向を見てくださいPHPの現在のステータス:Web開発動向を見てくださいApr 13, 2025 am 12:20 AM

PHPは、現代のWeb開発、特にコンテンツ管理とeコマースプラットフォームで依然として重要です。 1)PHPには、LaravelやSymfonyなどの豊富なエコシステムと強力なフレームワークサポートがあります。 2)パフォーマンスの最適化は、Opcacheとnginxを通じて達成できます。 3)PHP8.0は、パフォーマンスを改善するためにJITコンパイラを導入します。 4)クラウドネイティブアプリケーションは、DockerおよびKubernetesを介して展開され、柔軟性とスケーラビリティを向上させます。

PHP対その他の言語:比較PHP対その他の言語:比較Apr 13, 2025 am 12:19 AM

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。

PHP対Python:コア機能と機能PHP対Python:コア機能と機能Apr 13, 2025 am 12:16 AM

PHPとPythonにはそれぞれ独自の利点があり、さまざまなシナリオに適しています。 1.PHPはWeb開発に適しており、組み込みのWebサーバーとRich Functionライブラリを提供します。 2。Pythonは、簡潔な構文と強力な標準ライブラリを備えたデータサイエンスと機械学習に適しています。選択するときは、プロジェクトの要件に基づいて決定する必要があります。

PHP:Web開発の重要な言語PHP:Web開発の重要な言語Apr 13, 2025 am 12:08 AM

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHP:多くのウェブサイトの基礎PHP:多くのウェブサイトの基礎Apr 13, 2025 am 12:07 AM

PHPが多くのWebサイトよりも優先テクノロジースタックである理由には、その使いやすさ、強力なコミュニティサポート、広範な使用が含まれます。 1)初心者に適した学習と使用が簡単です。 2)巨大な開発者コミュニティと豊富なリソースを持っています。 3)WordPress、Drupal、その他のプラットフォームで広く使用されています。 4)Webサーバーとしっかりと統合して、開発の展開を簡素化します。

誇大広告を超えて:今日のPHPの役割の評価誇大広告を超えて:今日のPHPの役割の評価Apr 12, 2025 am 12:17 AM

PHPは、特にWeb開発の分野で、最新のプログラミングで強力で広く使用されているツールのままです。 1)PHPは使いやすく、データベースとシームレスに統合されており、多くの開発者にとって最初の選択肢です。 2)動的コンテンツ生成とオブジェクト指向プログラミングをサポートし、Webサイトを迅速に作成および保守するのに適しています。 3)PHPのパフォーマンスは、データベースクエリをキャッシュおよび最適化することで改善でき、その広範なコミュニティと豊富なエコシステムにより、今日のテクノロジースタックでは依然として重要になります。

PHPの弱い参照は何ですか、そしていつ有用ですか?PHPの弱い参照は何ですか、そしていつ有用ですか?Apr 12, 2025 am 12:13 AM

PHPでは、弱い参照クラスを通じて弱い参照が実装され、ガベージコレクターがオブジェクトの回収を妨げません。弱い参照は、キャッシュシステムやイベントリスナーなどのシナリオに適しています。オブジェクトの生存を保証することはできず、ごみ収集が遅れる可能性があることに注意する必要があります。

PHPで__invoke Magicメソッドを説明してください。PHPで__invoke Magicメソッドを説明してください。Apr 12, 2025 am 12:07 AM

\ _ \ _ Invokeメソッドを使用すると、オブジェクトを関数のように呼び出すことができます。 1。オブジェクトを呼び出すことができるように\ _ \ _呼び出しメソッドを定義します。 2。$ obj(...)構文を使用すると、PHPは\ _ \ _ Invokeメソッドを実行します。 3。ロギングや計算機、コードの柔軟性の向上、読みやすさなどのシナリオに適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。