Gói DOMPDF có các tính năng phong phú để chuyển đổi HTML thành PDF trong Laravel. Trong bài viết này, chúng tôi sẽ học cách sử dụng HTML đến PDF bằng gói DOMPDF. Trong hầu hết các trang web, cần phải chuyển đổi HTML thành PDF hoặc xuất dữ liệu ở định dạng PDF, DOMPDF thực hiện công việc này một cách hoàn hảo. DOMPDF có khả năng chuyển đổi HTML thành PDF và cũng phải tạo PDF theo chương trình.
Laravel DOMPDF Gói thư viện theo kiểu dựa trên Php, phù hợp với bố cục CSS CSS 2.1 HTML. Sử dụng thư viện này, bạn có thể nhập CSS từ bên ngoài hoặc bên trong.
Trong ví dụ này, chúng tôi sẽ tạo một ví dụ đơn giản để xuất bảng cơ sở dữ liệu ở định dạng PDF. Đối với điều này, chúng tôi sẽ tạo một cơ sở dữ liệu, bảng, mô hình, bộ điều khiển và chế độ xem đơn giản cho HTML.
Hãy để hiểu về HTML chuyển đổi thành PDF trong Laravel 8/9 với ví dụ đơn giản
Bước 1: Cài đặt gói
Tôi giả sử bạn đã cài đặt kết nối Laravel và cơ bản của nó như kết nối và nhà soạn nhạc cơ sở dữ liệu.
Bây giờ cài đặt gói bằng Trình soạn thảo trong thư mục Root Laravel, mở đầu cuối trong thư mục gốc của Laravel và chạy bên dưới để cài đặt gói DOMPDF
composer require barryvdh/laravel-dompdf
Bước 2: Tạo bảng, mô hình và điền dữ liệu
Bây giờ, cho một ví dụ, tôi đang tạo ở đây một bảng sử dụng di chuyển và sau đó tôi sẽ điền vào dữ liệu trong đó, vì vậy hãy tạo mô hình và di chuyển
php artisan make:model Article -m
Điều này sẽ tạo ra mô hình và tệp di chuyển
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Article extends Model { use HasFactory; }
và tệp di chuyển php artisan make:model Article -m2php artisan make:model Article -m2
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; class CreateArticlesTable extends Migration { /** * Run the migrations. * * @return void */ public function up() { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('email')->unique();; $table->string('title'); $table->string('body'); $table->timestamps(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::dropIfExists('products'); } }
Và sau đó di cư di cư
Bây giờ hãy tạo SEEDER trong cơ sở dữ liệu/người gieo hạt/databaseseeder.phpdatabase/seeders/DatabaseSeeder.php
<?php namespace Database\Seeders; use Illuminate\Database\Seeder; // Import DB and Faker services use Illuminate\Support\Facades\DB; use Faker\Factory as Faker; class DatabaseSeeder extends Seeder { /** * Seed the application's database. * * @return void */ public function run() { $faker = Faker::create(); for ($i=0;$i<=100;$i++) { DB::table('articles')->insert([ 'title' => $faker->name, 'body' => $faker->text, 'email' => $faker->email, 'updated_at' =>$faker->datetime, 'created_at' => $faker->datetime ]); } } }
Chạy gieo hạt trong dòng lệnh
Bước 3: Tạo bộ điều khiển
Hãy để tạo ra một bộ điều khiển và thêm một phương thức showarticleandexport và cũng thêm điều kiện cho bài viết xuất khẩu tại đâyshowArticleAndExport and also add condition for export article here
php artisan make:controller ArticleController
và thêm mã dưới đây
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Article; use PDF; class ArticleController extends Controller { // Show products public function showArticleAndExport(Request $request){ // added searching as well $product = Article::when($request->has("title"),function($q)use($request){ return $q->where("title","like","%".$request->get("title")."%"); })->get(); // or // $product = Article::all(); if($request->get("export")==1){ $pdf = PDF::loadView('articles.article', ['articles'=>$articles]); return $pdf->download('articles.pdf'); } return view('articles.article',['articles'=>$articles]); } }
Ở đây chúng tôi đã thêm Phương pháp ShowarticleandExport để hiển thị danh sách các bài viết để xuất bài viết về điều kiện của các thông số yêu cầu.showArticleAndExport method to show the list of articles as well to export the article on the condition of request params.
Bước 5: Tạo các chế độ xem
Tạo tài nguyên xem/bài viết/bài báo.blade.phpresource/articles/article.blade.php
<!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Readerstacks Laravel html to pdf conversion</title> <script src="//code.jquery.com/jquery-3.6.0.min.js" crossorigin="anonymous"></script> <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.min.js"></script> <link href="//netdna.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" /> </head> <body class="antialiased"> <div class="container"> <!-- main app container --> <div class="readersack"> <div class="container"> <div class="row"> <div class="col-md-12 "> <h3>Convert html to pdf in laravel 8 / 9 - Readerstacks</h3> @if(request("export")!=1) <a class='btn btn-info' href='{{url("html-to-pdf?export=1")}}'>Export PDF</a> <div id="search"> <form id="searchform" name="searchform"> <div class="form-group"> <label>Search by Title</label> <input type="text" name="title" value="{{request()->get('title','')}}" class="form-control" /> </div> <div class="form-group"> <label>Search by body</label> <input type="text" name="body" value="{{request()->get('body','')}}" class="form-control" /> </div> <button class='btn btn-success' >Search</button> </form> </div> @endif <div id="pagination_data"> <table class="table table-striped table-dark table-bordered"> <tr> <th>Sr No.</th> <th>Title</th> <th>Body</th> <th>Date</th> </tr> @foreach($articles as $article) <tr> <td>{{$article->id}}</td> <td>{{$article->title}}</td> <td>{{substr($article->body,0,50)}}</td> <td>{{$article->created_at}}</td> </tr> @endforeach </table> </div> </div> </div> </div> </div> <!-- credits --> <div class="text-center"> <p> <a href="#" target="_top">Laravel html to pdf conversion </a> </p> <p> <a href="//readerstacks.com" target="_top">readerstacks.com</a> </p> </div> </div> </body> </html>
Bước 6: Tạo các tuyến đường
Bước cuối cùng là tạo các tuyến đường để hiển thị biểu mẫu và gửi biểu mẫu
<?php use Illuminate\Support\Facades\Route; use \App\Http\Controllers\ArticleController; Route::get('/html-to-pdf',[ArticleController::class, 'showArticleAndExport']);
Ảnh chụp màn hình
Chuyển đổi HTML đơn giản sang PDF khi đang bay
Nếu bạn muốn chuyển đổi HTML đơn giản thành PDF thì bạn chỉ cần tạo một tuyến đường và thêm mã này
Route::get("/html-to-pdf-simple",function(){ $pdf = \App::make('dompdf.wrapper'); $pdf->loadHTML('<h2>Test</h2>'); return $pdf->stream(); });
Lưu để lưu trữ
Bạn có thể lưu vào lưu trữ ứng dụng của mình và sau đó bạn có thể tải xuống mà không cần xử lý chuyển đổi
php artisan make:model Article -m0
Thêm trang phá vỡ trang
php artisan make:model Article -m1