PDF ドキュメントの作成は、Web アプリケーション、特に請求書、領収書、証明書、チケット、およびさまざまなレポートを生成する場合の一般的な要件です。この包括的なチュートリアルでは、Laravel と DomPDF を使用して画像と CSS を含む PDF ドキュメントを生成する方法について詳しく説明します。構成オプション、設計上の考慮事項、出力サイズ、パフォーマンス、データベース クエリについて説明します。さらに、改ページの処理、base64 を使用した画像の読み込みなどに関するヒントやコツについても説明します。
始める前に、以下がインストールされていることを確認してください:
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 を使い始めることができます。
まず、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"
config/dompdf.php ファイルを開きます。構成ファイルには、PDF 出力をカスタマイズするためのさまざまなオプションが含まれています。ここでは、デフォルトの用紙サイズ、向き、フォントなどのさまざまなオプションを設定できます。
'default_paper_size' => 'a4',
'orientation' => 'portrait',
'default_font' => 'serif',
PDF 生成を処理するコントローラーを作成します:
php artisan make:controller PDFController
app/Http/Controllers/PDFController.php に次のコードを追加します:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use PDF; class PDFController extends Controller { public function generatePDF() { $data = [ 'title' => 'Laravel PDF Example', 'date' => date('m/d/Y'), ]; $pdf = PDF::loadView('myPDF', $data); return $pdf->download('document.pdf'); } }
PDF コンテンツの Blade テンプレートを作成します:
touch resources/views/myPDF.blade.php
次のコンテンツを myPDF.blade.php に追加します:
<title>Laravel PDF Example</title> <style> body { font-family: 'Arial, sans-serif'; } .container { margin: 0 auto; padding: 20px; } .header { text-align: center; margin-bottom: 20px; } .content { font-size: 12px; } </style> <div class="container"> <div class="header"> <h1>{{ $title }}</h1> <p>Date: {{ $date }}</p> </div> <div class="content"> <p>This is an example of a PDF document generated using Laravel and DomPDF.</p> </div> </div>
Routes/web.php で PDF 生成を処理するルートを追加します:
use App\Http\Controllers\PDFController; Route::get('generate-pdf', [PDFController::class, 'generatePDF']);
画像を Base64 でエンコードされた文字列として埋め込むか、URL を使用して PDF に追加できます。
画像は、base64 エンコードを使用して Blade テンプレートに直接埋め込むことができます。たとえば、public/images から画像を埋め込むには、次の方法で実行できます:
<img src="data:image/png;base64,%7B%7B%20base64_encode(file_get_contents(public_path('images/logo.png')))%20%7D%7D" alt="LaravelでPDFドキュメントを生成する">
または URL から直接:
<img src="%7B%7B%20asset('images/logo.png')%20%7D%7D" alt="LaravelでPDFドキュメントを生成する">
大規模なデータセット (1,000 以上のレコードなど) を扱う場合は、ページネーションまたはチャンクを使用してメモリ使用量を管理します。
$data = DB::table('users')->paginate(50); $pdf = PDF::loadView('myPDF', ['data' => $data]);
出力サイズを小さくするには、重い画像の使用を最小限に抑え、可能な場合はベクター グラフィックスを選択します。また、効率的な CSS を使用してください。
コンテンツが改ページのために適切に構造化されていることを確認します。 CSS を使用して改ページを処理します:
.page-break { page-break-after: always; }
Blade テンプレート内:
<div class="page-break"></div>
より高度な構成については、DomPDF ドキュメントを参照してください。余白からフォントの読み込み方法まで、ほぼすべてをカスタマイズできます。
カスタム フォントを使用するには、まずカスタム フォントをプロジェクトに追加し、それらを使用するように DomPDF を設定します。
'custom_font_dir' => base_path('resources/fonts/'), 'custom_font_data' => [ 'custom-font' => [ 'R' => 'CustomFont-Regular.ttf', 'B' => 'CustomFont-Bold.ttf', ] ],
Blade テンプレート内:
<style> body { font-family: 'custom-font', sans-serif; } </style>
By following this step-by-step guide, you can generate sophisticated PDF documents using Laravel and DomPDF, complete with images and CSS styling. This tutorial has covered essential configuration options, design considerations, performance optimization. You can expand this foundation to build a robust document generation system for your Laravel application.
This tutorial is part of a series on PDF generation with Laravel. A complete repository with various document templates (invoices, receipts, certificates, tickets, etc.) can be found here. Feel free to contribute and expand the collection.
Happy coding!
以上がLaravelでPDFドキュメントを生成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。