laravel 使用擴展包生成 PDF

導語

關於 PDF 的擴展包有很多,此次選擇的是 DOMPDF,下面是具體操做。代碼可查看 GitHubphp

composer 安裝以及配置

依然使用 composer 安裝,根據文檔進行便可html

  1. 執行 composer require barryvdh/laravel-dompdf
  2. 接下來是註冊服務,在 config/app.php 中添加 Barryvdh\DomPDF\ServiceProvider::class,,以下

註冊服務

  1. 添加門面,一樣是在 config/app.php 中添加 'PDF' => Barryvdh\DomPDF\Facade::class,,以下

添加門面

  1. 通過以上三個步驟,能夠正常使用了。爲了修改配置方便,能夠在 config 目錄下生成配置文件,執行 php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider",成功後可查看 config/dompdf.php 配置文件。根據本身的需求進行修改,也支持動態修改。

使用

定義好路由以後,新建控制器進行測試。根據官方文檔,能夠使用 App::make('dompdf.wrapper') 或者 PDF 門面進行實例化,效果是同樣的,使用門面注意 use PDFlaravel

使用文檔中的第一個示例git

$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML('<h1>Test</h1>');// 根據 HTML 代碼生成 PDF
return $pdf->stream();

效果以下github

展現 PDF

再來試下文檔中的第二個示例web

$pdf = PDF::loadView('pdf', ['date' => date('Y-m-d')]);// 根據視圖文件生成 PDF
return $pdf->download('date.pdf');// 參數爲文件名

打開連接後,能夠下載名爲 date.pdf 的文件,內容以下app

date.pdf

以上使用了 loadHTML()loadView() 兩種方法,分別是根據 HTML 代碼和視圖生成。使用 loadFile() 來試下composer

$file = storage_path('app/public/pdf/name.html');
$pdf = PDF::loadFile($file);
return $pdf->stream();

展現 PDF

也能夠鏈式調用多個方法,下面的代碼是根據視圖生成 PDF,而後保存到指定路徑,最後在進行展現dom

return PDF::loadView('pdf', ['date' => date('Y-m-d')])->save(storage_path('app/public/pdf/date.pdf'))->stream('date.pdf');

參考資料:DOMPDFide

相關文章
相關標籤/搜索