「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > LaravelでPDFドキュメントを生成する

LaravelでPDFドキュメントを生成する

2024 年 8 月 16 日に公開
ブラウズ:666

Generating PDF documents in Laravel

Laravel と DomPDF: 画像と CSS を含む PDF ドキュメントを生成するためのステップバイステップガイド

PDF ドキュメントの作成は、Web アプリケーション、特に請求書、領収書、証明書、チケット、およびさまざまなレポートを生成する場合の一般的な要件です。この包括的なチュートリアルでは、Laravel と DomPDF を使用して画像と CSS を含む PDF ドキュメントを生成する方法について詳しく説明します。構成オプション、設計上の考慮事項、出力サイズ、パフォーマンス、データベース クエリについて説明します。さらに、改ページの処理、base64 を使用した画像のロードなどに関するヒントやコツについても説明します。

前提条件

始める前に、以下がインストールされていることを確認してください:

  • PHP >=8.2
  • 作曲家 2
  • Laravel 10

導入

DomPDF は、HTML コンテンツから PDF ドキュメントを生成できる人気の PHP ライブラリです。 CSS スタイル、画像、さまざまな構成オプションをサポートしています。 DomPDF を Laravel と統合することで、Blade テンプレートと Laravel の強力な機能を使用して洗練された PDF ドキュメントを簡単に作成できます。

その他の一般的な PDF ライブラリには、TCPDF、FPDF、Snappy などがあります。

ただし、DomPDF は、統合の容易さと堅牢な機能セットにより広く使用されています。

このチュートリアルでは、Laravel プロジェクトのセットアップ、DomPDF の構成、PDF 生成を処理するコントローラーの作成、PDF コンテンツ用の Blade テンプレートの設計、ルートの追加、パフォーマンスの最適化のプロセスを順を追って説明します。また、高度な構成オプションについても説明し、高品質の PDF ドキュメントを生成するためのヒントやテクニックも提供します。

仮定

このチュートリアルは、Laravel と PHP の基本を理解していることを前提としています。 Laravel を初めて使用する場合は、Laravel の公式ドキュメントを読んでフレームワークに慣れることを検討してください。それ以外の場合は、Laravel ブートキャンプに従って Laravel を使い始めることができます。

ステップ 1: Laravel プロジェクトのセットアップ

まず、新しい Laravel プロジェクトをまだ作成していない場合は作成するか、既存のプロジェクトを使用します。もちろん、すでに Laravel プロジェクトがある場合は、この手順をスキップできます。

composer create-project --prefer-dist laravel/laravel pdf-tutorial
cd pdf-tutorial

次に、DomPDF をインストールします:

composer require barryvdh/laravel-dompdf

構成ファイルを公開します:

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

ステップ 2: DomPDF の構成

config/dompdf.php ファイルを開きます。構成ファイルには、PDF 出力をカスタマイズするためのさまざまなオプションが含まれています。ここでは、デフォルトの用紙サイズ、向き、フォントなどを含むさまざまなオプションを設定できます。

  • 用紙サイズ: デフォルトの用紙サイズを設定できます。
  'default_paper_size' => 'a4',
  • Orientation: デフォルトの方向 (縦または横) を設定します。
  'orientation' => 'portrait',
  • フォント: デフォルトのフォントを指定したり、カスタム フォントを追加したりできます。
  'default_font' => 'serif',

ステップ 3: コントローラーの作成

PDF 生成を処理するコントローラーを作成します:

php artisan make:controller PDFController

app/Http/Controllers/PDFController.php に次のコードを追加します:

 'Laravel PDF Example',
            'date' => date('m/d/Y'),
        ];

        $pdf = PDF::loadView('myPDF', $data);

        return $pdf->download('document.pdf');
    }
}

ステップ 4: ブレード テンプレートの作成

PDF コンテンツの Blade テンプレートを作成します:

touch resources/views/myPDF.blade.php

次のコンテンツを myPDF.blade.php に追加します:



    Laravel PDF Example

{{ $title }}

Date: {{ $date }}

This is an example of a PDF document generated using Laravel and DomPDF.

ステップ 5: ルートの追加

routes/web.php:
で PDF 生成を処理するルートを追加します。

use App\Http\Controllers\PDFController;

Route::get('generate-pdf', [PDFController::class, 'generatePDF']);

ステップ 6: 画像を追加する

画像を Base64 でエンコードされた文字列として埋め込むか、URL を使用して PDF に追加できます。

画像は、base64 エンコーディングを使用して Blade テンプレートに直接埋め込むことができます。たとえば、public/images から画像を埋め込むには、次の方法で実行できます:

Logo

または URL から直接:

Logo

ステップ 7: パフォーマンスの最適化

データベースクエリ

大規模なデータセット (1,000 レコードなど) を扱う場合は、ページネーションまたはチャンク化を使用してメモリ使用量を管理します。

$data = DB::table('users')->paginate(50);

$pdf = PDF::loadView('myPDF', ['data' => $data]);

出力サイズ

出力サイズを小さくするには、重い画像の使用を最小限に抑え、可能な場合はベクター グラフィックスを選択します。また、効率的な CSS を使用してください。

改ページ

コンテンツが改ページに合わせて適切に構造化されていることを確認します。 CSS を使用して改ページを処理する:

.page-break {
    page-break-after: always;
}

Blade テンプレート内:

ステップ 8: 高度な構成

さらに高度な構成については、DomPDF ドキュメントを参照してください。余白からフォントの読み込み方法まで、ほぼすべてをカスタマイズできます。

カスタムフォントの使用

カスタム フォントを使用するには、まずカスタム フォントをプロジェクトに追加し、それらを使用するように DomPDF を設定します。

'custom_font_dir' => base_path('resources/fonts/'),
'custom_font_data' => [
    'custom-font' => [
        'R' => 'CustomFont-Regular.ttf',
        'B' => 'CustomFont-Bold.ttf',
    ]
],

Blade テンプレート内:

結論

このステップバイステップガイドに従うことで、Laravel と DomPDF を使用して、画像と CSS スタイルを備えた洗練された PDF ドキュメントを生成できます。このチュートリアルでは、重要な構成オプション、設計上の考慮事項、パフォーマンスの最適化について説明しました。この基盤を拡張して、Laravel アプリケーション用の堅牢なドキュメント生成システムを構築できます。

潜在的なシリーズとリポジトリ

このチュートリアルは、Laravel を使用した PDF 生成に関するシリーズの一部です。さまざまなドキュメント テンプレート (請求書、領収書、証明書、チケットなど) を含む完全なリポジトリは、ここにあります。自由に貢献してコレクションを拡張してください。

コーディングを楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/alphaolomi/generated-pdf-documents-in-laravel-n07?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3