Pdf 門面
Pdf 門面提供一個方便的靜態代理,對應 TcpdfServiceProvider 所註冊的 PdfDocumentInterface 綁定。config/tcpdf-next.php 中的所有設定值都會自動套用。
php
use Yeeefang\TcpdfNext\Laravel\Facades\Pdf;建立文件
Pdf::create() 從容器解析一個全新的 Document 實例,並預先套用所有設定預設值:
php
$pdf = Pdf::create();
$pdf->addPage()
->setFont('Helvetica', '', 12)
->cell(0, 10, '來自 Laravel 的 PDF!')
->save(storage_path('app/hello.pdf'));每次呼叫 create() 都會回傳一個新的實例。文件不會在呼叫之間共享。
流式 API
所有 Document 方法都可透過門面使用,並回傳 static 以支援鏈式呼叫:
php
$pdf = Pdf::create()
->setTitle('季度報告')
->setAuthor('財務團隊')
->setMargins(left: 15, top: 20, right: 15)
->setAutoPageBreak(enabled: true, margin: 25)
->addPage()
->setFont('Helvetica', 'B', 18)
->cell(0, 12, '2026 年第一季報告')
->ln()
->setFont('Helvetica', '', 11)
->multiCell(0, 6, $reportBody);設定綁定
門面從 config/tcpdf-next.php 讀取預設值。您可以針對個別文件覆寫任何設定:
php
// 使用設定預設值(A4 直式、Helvetica 11pt)
$default = Pdf::create();
// 僅對此文件覆寫頁面格式
$receipt = Pdf::create()
->setPageFormat('A5')
->setMargins(left: 10, top: 10, right: 10);完整設定選項請參閱 Laravel 設定。
門面類別參考
php
namespace Yeeefang\TcpdfNext\Laravel\Facades;
use Illuminate\Support\Facades\Facade;
/**
* @method static \Yeeefang\TcpdfNext\Core\Document create()
* @method static void fake()
* @method static void assertCreated()
* @method static void assertCreatedCount(int $count)
*
* @see \Yeeefang\TcpdfNext\Core\Document
*/
class Pdf extends Facade
{
protected static function getFacadeAccessor(): string
{
return \Yeeefang\TcpdfNext\Contracts\PdfDocumentInterface::class;
}
}使用 Pdf::fake() 進行測試
將真實綁定替換為假實作,無需產生實際 PDF 位元組即可進行斷言:
php
use Yeeefang\TcpdfNext\Laravel\Facades\Pdf;
public function test_invoice_generates_pdf(): void
{
Pdf::fake();
$response = $this->get('/invoices/42/pdf');
$response->assertOk();
// 斷言文件已被建立
Pdf::assertCreated();
// 斷言恰好建立了一份文件
Pdf::assertCreatedCount(1);
}檢查假文件
假實作會記錄每個方法呼叫,讓您驗證流式鏈的內容:
php
Pdf::fake();
$this->get('/invoices/42/pdf');
Pdf::assertCreated(function ($pdf) {
return $pdf->getTitle() === '發票 #42'
&& $pdf->getPageCount() >= 1;
});在測試中替換綁定
若整合測試需要真實的 PDF 輸出,可綁定自訂實作:
php
use Yeeefang\TcpdfNext\Contracts\PdfDocumentInterface;
use Yeeefang\TcpdfNext\Core\Document;
$this->app->bind(PdfDocumentInterface::class, function () {
return Document::create()->setCompression(false);
});下一步
- HTTP 回應 — 安全地將 PDF 傳遞至瀏覽器
- 佇列任務 — 將產生工作交給背景工作者
- Laravel 設定 — 所有可用的設定鍵