最近在開發一個 laravel 項目,需要生成包含中文內容的 PDF 報表。然而,直接使用 TCPDF 生成的 PDF 文件卻出現了中文亂碼的問題,嚴重影響了用戶體驗。為了解決這個問題,我嘗試了各種方法,例如修改字體、設置編碼等等,但效果都不理想。后來,我發現了 elibyy/tcpdf-laravel 這個擴展包,它簡化了 TCPDF 的集成,并且提供了一些方便的配置選項,最終解決了我的問題。
elibyy/tcpdf-laravel 是一個 Laravel 的服務提供者,它封裝了 TCPDF 庫,讓你可以在 Laravel 項目中更方便地使用 TCPDF 生成 PDF 文件。它支持 Laravel 6、7、8、9、10 和 11 等多個版本。
安裝
使用 composer 安裝非常簡單:
composer require elibyy/tcpdf-laravel
Laravel 5.5+ 支持自動發現,所以安裝完成后,通常不需要手動注冊服務提供者和 Facade。如果你的 Laravel 版本低于 5.5,或者禁用了自動發現,則需要在 config/app.php 中手動注冊:
'providers' => [ //... ElibyyTCPDFServiceProvider::class, ], 'aliases' => [ //... 'PDF' => ElibyyTCPDFFacadesTCPDF::class ]
使用
安裝完成后,你就可以在你的代碼中使用 PDF Facade 來調用 TCPDF 的方法了。例如:
use PDF; PDF::SetTitle('你好,世界'); PDF::AddPage(); PDF::Write(0, '你好,世界'); PDF::Output('hello_world.pdf');
配置
elibyy/tcpdf-laravel 提供了一些基本的配置選項,你可以通過發布配置文件來修改默認配置:
php artisan vendor:publish --provider="ElibyyTCPDFServiceProvider"
發布后,你可以在 config/tcpdf.php 文件中修改配置。其中一些常用的配置選項包括:
- use_original_header:是否使用 TCPDF 原始的 Header 方法。
- use_original_footer:是否使用 TCPDF 原始的 Footer 方法。
- font_directory:字體目錄。你可以在這里指定包含中文支持的字體文件。
解決中文亂碼
要解決中文亂碼問題,你需要確保使用支持中文的字體,并在代碼中設置正確的字體。例如:
use PDF; PDF::SetFont('simhei', '', 14); // 設置字體為 simhei,大小為 14 PDF::SetTitle('你好,世界'); PDF::AddPage(); PDF::Write(0, '你好,世界'); PDF::Output('hello_world.pdf');
其中,simhei 是一種常用的中文黑體字體。你需要將 simhei.ttf 字體文件復制到 config/tcpdf.php 文件中 font_directory 配置項指定的目錄下。
總結
elibyy/tcpdf-laravel 簡化了 TCPDF 在 Laravel 項目中的集成,并提供了一些便捷的配置選項,可以幫助你輕松解決中文亂碼等問題。如果你需要在 Laravel 項目中生成包含中文內容的 PDF 文件,那么 elibyy/tcpdf-laravel 是一個非常不錯的選擇。它讓你能夠專注于業務邏輯的開發,而無需花費大量時間在 TCPDF 的配置上。