一个简单的包,用于把HTML页面生成为PDF文档。该程序包专门用于laravel,但您可以在不使用laravel的情况下使用。 此包是基于 nahidulhasan/laravel-pdf 上修改的。
经以下系统测试:
- Ubuntu 18.04.3 x64
- Windows 10 x64
wkhtmltopdf ≥ 0.12.5
官网安装包包含 qt,可以直接运行 wkhtmltopdf 而不需要额外安装 vxfb
https://wkhtmltopdf.org/downloads.html
sudo apt-get update
sudo apt-get install xvfb libfontconfig wkhtmltopdf
RUN apt-get update && apt-get install xvfb libfontconfig wkhtmltopdf
composer require oyswonder/html2pdf
如果 laravel 版本<5.5,请将 ServiceProvider 添加到 config/app.php 中的 providers 数组中
oyswonder\Html2pdf\Html2pdfServiceProvider::class,
您可以选择将 facade 用于较短的代码。把这个加到你的 facades 上:
'Pdf' => oyswonder\Html2pdf\Facades\Pdf::class,
要创建PDF,请向您的一个 Controller 中添加类似的内容。
use oyswonder\Html2pdf\Facades\Pdf;
$document = Pdf::generatePdf('http://bantouren.com/html/table/sample.html');
将PDF保存到特定文件夹中的文件中,然后下载
use oyswonder\Html2pdf\Pdf;
$obj = new Pdf();
$url = 'http://bantouren.com/html/table/sample.html';
$invoice = $obj->generatePdf($url);
define('INVOICE_DIR', public_path('uploads/invoices'));
if (!is_dir(INVOICE_DIR)) {
mkdir(INVOICE_DIR, 0755, true);
}
$outputName = str_random(10);
$pdfPath = INVOICE_DIR.'/'.$outputName.'.pdf';
File::put($pdfPath, $invoice);
$headers = [
'Content-Type' => 'application/pdf',
'Content-Disposition' => 'attachment; filename="'.'filename.pdf'.'"',
];
return response()->download($pdfPath, 'filename.pdf', $headers);
也可以使用以下方法 :
pdf::stream('http://bantouren.com/html/table/sample.html')
在浏览器中打开PDF文件
您可以不在 Laravel 上使用此库。
例如:
use oyswonder\Html2pdf\Pdf;
$obj = new Pdf();
$document = $obj->generatePdf('http://bantouren.com/html/table/sample.html');
Html2PDF for Laravel 是根据 MIT license 许可证许可的。