nahidulhasan/html2pdf

一个简单易用的包,可以从HTML轻松生成PDF文档。此包专门为Laravel设计,但也可以在不使用Laravel的情况下使用。

1.4 2020-12-12 09:03 UTC

This package is auto-updated.

Last update: 2024-09-12 17:54:27 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

一个简单易用的包,可以从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许可证授权