Menjana dokumen PDF dalam Laravel

WBOY
Lepaskan: 2024-07-17 13:09:06
asal
977 orang telah melayarinya

Generating PDF documents in Laravel

Laravel dan DomPDF: Panduan langkah demi langkah untuk menjana Dokumen PDF dengan Imej dan CSS

Mencipta dokumen PDF ialah keperluan biasa dalam aplikasi web, terutamanya untuk menjana invois, resit, sijil, tiket dan pelbagai laporan. Dalam tutorial komprehensif ini, kami akan mendalami penggunaan Laravel dan DomPDF untuk menjana dokumen PDF dengan imej dan CSS. Kami akan merangkumi pilihan konfigurasi, pertimbangan reka bentuk, saiz output, prestasi dan pertanyaan pangkalan data. Selain itu, kami akan membincangkan petua dan kiat untuk mengendalikan pemisah halaman, memuatkan imej menggunakan base64 dan banyak lagi.

Prasyarat

Sebelum kami mula, pastikan anda telah memasang yang berikut:

  • PHP >=8.2
  • Komposer 2+
  • Laravel 10+

pengenalan

DomPDF ialah perpustakaan PHP popular yang membolehkan anda menjana dokumen PDF daripada kandungan HTML. Ia menyokong gaya CSS, imej, dan pelbagai pilihan konfigurasi. Dengan menyepadukan DomPDF dengan Laravel, anda boleh membuat dokumen PDF yang canggih dengan mudah menggunakan templat Blade dan ciri hebat Laravel.

Perpustakaan PDF popular lain termasuk TCPDF, FPDF dan Snappy.

Walau bagaimanapun, DomPDF digunakan secara meluas kerana kemudahan penyepaduan dan set ciri yang mantap.

Dalam tutorial ini, kami akan melalui proses menyediakan projek Laravel, mengkonfigurasi DomPDF, mencipta pengawal untuk mengendalikan penjanaan PDF, mereka bentuk templat Blade untuk kandungan PDF, menambah laluan dan mengoptimumkan prestasi. Kami juga akan membincangkan pilihan konfigurasi lanjutan dan menyediakan petua dan kiat untuk menjana dokumen PDF berkualiti tinggi.

Andaian

Tutorial ini menganggap anda mempunyai pemahaman asas tentang Laravel dan PHP. Jika anda baru menggunakan Laravel, pertimbangkan untuk menyemak dokumentasi Laravel rasmi untuk membiasakan diri anda dengan rangka kerja tersebut. Dari segi lain, anda boleh mengikuti Bootcamp Laravel untuk bermula dengan Laravel.

Langkah 1: Menyediakan Projek Laravel

Mula-mula, buat projek Laravel baharu jika anda belum memilikinya, atau gunakan projek sedia ada, Sudah tentu, anda boleh melangkau langkah ini jika anda sudah mempunyai projek Laravel.

composer create-project --prefer-dist laravel/laravel pdf-tutorial
cd pdf-tutorial
Salin selepas log masuk

Seterusnya, pasang DomPDF:

composer require barryvdh/laravel-dompdf
Salin selepas log masuk

Terbitkan fail konfigurasi:

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
Salin selepas log masuk

Langkah 2: Mengkonfigurasi DomPDF

Buka fail config/dompdf.php. Fail konfigurasi mengandungi pelbagai pilihan untuk menyesuaikan output PDF. Di sini anda boleh menetapkan pelbagai pilihan termasuk saiz kertas lalai, orientasi, fon dan banyak lagi.

  • Saiz kertas: Anda boleh menetapkan saiz kertas lalai.
  'default_paper_size' => 'a4',
Salin selepas log masuk
  • Orientasi: Tetapkan orientasi lalai (potret atau landskap).
  'orientation' => 'portrait',
Salin selepas log masuk
  • Fon: Anda boleh menentukan fon lalai dan menambah fon tersuai.
  'default_font' => 'serif',
Salin selepas log masuk

Langkah 3: Mencipta Pengawal

Buat pengawal untuk mengendalikan penjanaan PDF:

php artisan make:controller PDFController
Salin selepas log masuk

Dalam app/Http/Controllers/PDFController.php, tambahkan kod berikut:

<?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');
    }
}
Salin selepas log masuk

Langkah 4: Mencipta Templat Blade

Buat templat Blade untuk kandungan PDF:

touch resources/views/myPDF.blade.php
Salin selepas log masuk

Tambah kandungan berikut pada 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>


Salin selepas log masuk

Langkah 5: Menambah Laluan

Tambah laluan untuk mengendalikan penjanaan PDF dalam route/web.php:

use App\Http\Controllers\PDFController;

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

Langkah 6: Menambah Imej

Anda boleh menambah imej pada PDF dengan membenamkannya sebagai rentetan berkod base64 atau menggunakan URL.

Imej boleh dibenamkan terus dalam templat Blade menggunakan pengekodan base64. Sebagai contoh, untuk membenamkan imej daripada orang ramai/imej ini ialah cara anda boleh melakukannya:

<img src="data:image/png;base64,%7B%7B%20base64_encode(file_get_contents(public_path('images/logo.png')))%20%7D%7D" alt="Menjana dokumen PDF dalam Laravel">
Salin selepas log masuk

Atau terus dari URL:

<img src="%7B%7B%20asset('images/logo.png')%20%7D%7D" alt="Menjana dokumen PDF dalam Laravel">
Salin selepas log masuk

Langkah 7: Mengoptimumkan Prestasi

Pertanyaan Pangkalan Data

Apabila berurusan dengan set data yang besar (cth., 1,000+ rekod), gunakan penomboran atau chunking untuk mengurus penggunaan memori:

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

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

Saiz Output

Untuk mengurangkan saiz output, kurangkan penggunaan imej berat dan pilih grafik vektor apabila boleh. Juga, gunakan CSS yang cekap.

Pecah Halaman

Pastikan kandungan disusun dengan baik untuk pemisah halaman. Gunakan CSS untuk mengendalikan pemisah halaman:

.page-break {
    page-break-after: always;
}
Salin selepas log masuk

Dan dalam templat Blade anda:

<div class="page-break"></div>
Salin selepas log masuk

Langkah 8: Konfigurasi Lanjutan

Untuk konfigurasi lanjutan, rujuk dokumentasi DomPDF. Anda boleh menyesuaikan hampir semua perkara, daripada jidar hingga cara fon dimuatkan.

Menggunakan Fon Tersuai

Untuk menggunakan fon tersuai, pertama, tambahkannya pada projek anda dan konfigurasikan DomPDF untuk menggunakannya:

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

Dalam templat Blade anda:

<style>
    body {
        font-family: 'custom-font', sans-serif;
    }
</style>
Salin selepas log masuk

Conclusion

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.

Potential Series and Repository

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!

Atas ialah kandungan terperinci Menjana dokumen PDF dalam Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan