nahidulhasan / html2pdf
一个简单易用的包,可以从HTML轻松生成PDF文档。此包专门为Laravel设计,但也可以在不使用Laravel的情况下使用。
1.4
2020-12-12 09:03 UTC
README
一个简单易用的包,可以从HTML轻松生成PDF文档。此包专门为Laravel设计,但也可以在不使用Laravel的情况下使用。
安装
安装wkhtmltopdf
该软件在以下操作系统上进行了测试:
- Ubuntu 14.04 x64
- Ubuntu 16.04 x64
sudo apt-get update sudo apt-get install xvfb libfontconfig wkhtmltopdf
对于Docker
RUN apt-get update && apt-get install xvfb libfontconfig wkhtmltopdf
更新Composer
composer require nahidulhasan/html2pdf
如果Laravel版本小于5.5,请在config/app.php中的providers数组中添加ServiceProvider
NahidulHasan\Html2pdf\Html2pdfServiceProvider::class,
您可以选择使用外观来缩短代码。将以下内容添加到您的外观中
'Pdf' => NahidulHasan\Html2pdf\Facades\Pdf::class,
基本用法
要在控制器中创建PDF,请添加如下内容。
use NahidulHasan\Html2pdf\Facades\Pdf; $document = Pdf::generatePdf('<h1>Test</h1>');
您还可以直接调用Laravel blade文件来创建PDF。假设您在view/mails文件夹中有一个名为greeting的邮件模板,并想要发送参数,那么您必须按照以下方式调用generatePdf方法。
<!-- mail template stored in resources/views/mails/greeting.blade.php --> $document = Pdf::generatePdf(view('mails.greeting', ['name' => 'James', 'testVar' => 'demo']));
现在,如果您想向客户发送带有PDF的邮件,可以按照以下代码进行。
/** * Build the message. * * @return $this */ public function build() { return $this->from('username@gmail.com') ->view('mails.demo') ->attachData($document, 'Invoice.pdf'); }
下载PDF
将PDF保存到指定文件夹中的文件,然后下载它
use NahidulHasan\Html2pdf\Pdf;
$obj = new Pdf();
$html = '<html><body>'
. '<p>Put your html here, or generate it with your favourite '
. 'templating system.</p>'
. '</body></html>';
$invoice = $obj->generatePdf($html);
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('<h1>测试</h1>') 在浏览器中打开PDF文件
不使用Laravel运行
您可以在不使用Laravel的情况下使用此库。
示例
use NahidulHasan\Html2pdf\Pdf;
$obj = new Pdf();
$document = $obj->generatePdf('<h1>Test</h1>');
许可证
Html2PDF for Laravel是开源软件,采用MIT许可证授权