calvibert / wkhtmltopdf
为 CakePHP3 生成 WKHTMLTOPDF
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-26 11:44:02 UTC
README
安装
在您的系统上安装 wkhtmltopdf! (http://wkhtmltopdf.org).
通过 composer 安装
composer require grzegab/wkhtmltopdf
覆盖默认配置
在 config/boostrap.php 中写入配置
Configure::write('wkhtmltopdf.enableXvfb', false);
Configure::write('wkhtmltopdf.encoding', 'UTF-8');
可用选项包括
- 'enableXvfb' - 如果wkhtmltopdf应使用xvfb,则为布尔值
- 'xvfbRunBinary' - xvfb的二进制文件 - 默认 'xvfb-run'
- 'xvfbRunOptions' - xvfb使用的选项 - 默认 '-a -s "-screen 0 1024x678x16"'
- 'wkhtmltopdfBinary' - 二进制文件的路径 - 默认 '/usr/local/bin/wkhtmltopdf'
- 'encoding' - 编码的名称 - 默认 'UTF-8'
- 'layout' - 模板的名称(位于 Template/Layout/)
用法
在每个将使用pdf生成器的控制器上添加命名空间
use Grzegab\Wkhtmltopdf\PdfGenerator;
创建一个新的操作,返回PDF对象(例如invoicePdf):public function invoicePdf() {};
构建控制器,设置视图变量,使其看起来像您想要的样子。
初始化组件
$pdf = new PdfGenerator($this);
必须设置模板名称和视图文件(即使使用默认值):$this->viewBuilder()->layout('pdf')->template('invoice');
从控制器返回PDF作为响应
return $pdf->save('pdfName')->wkhtmltopdf('-O landscape')->generatePDF();
也可以从URL地址构建PDF文件
return $pdf->generateFromUrl('http://www.google.com')->generatePDF();
如果您只想保存PDF文件(而不是将其作为响应下载)
return $pdf->save('pdf_name')->downloadDisabled()->generatePDF();
响应将是保存文件的路径。
请注意
所有资产(图像、js等)必须具有绝对路径以便PDF生成器。PDF文件的名称应不带扩展名"pdf"。
使用示例
在 src/Controller/InvoiceController.php 中
use Grzegab\Wkhtmltopdf\PdfGenerator;
public function invoicePDF($id)
{
// ... 通过id查找发票和其他逻辑
$pdf = new PDF($this); $this->viewBuilder()->layout('pdf')->template('invoice'); return $pdf->save('name0123', 'pdf/names')->wkhtmltopdf('-O landscape')->generatePDF();
}
当执行 invoicePdf/{id} 时,将在 webroot/pdf/names 中保存名为 name0123 的pdf文件,并强制下载。
可用命令列表
基本命令
所有命令都是可链式的 $pdf->command1()->command2()->command3()->generatePDF();
结束命令
- $pdf->debugPDF(); 将返回PDF生成器的当前设置
- $pdf->generatePDF(); 将尝试生成PDF文件
设置
- $pdf->wkhtmltopdf(string); 添加wkhtmltopdf选项
- $pdf->setEncoding(string); 为PDF设置编码(默认UTF-8)
- $pdf->setTemplate(string); 设置视图文件(用于生成PDF的文件)
- $pdf->setLayout(string); 设置布局文件
- $pdf->downloadDisabled(); 不强制下载文件
- $pdf->savePdf(string1, string2 [可选]); 以名称(string1 -不带".pdf")和路径(string2 -路径位于webroot/)保存PDF文件
- $pdf->setWkhtmltopdfBinary(string1); 二进制文件的路径 - 默认 '/usr/local/bin/wkhtmltopdf'
- $pdf->xvfb(boolean, string1, string2); 第一个参数用于启用或禁用xvfb,第二个是二进制文件名称(默认xvfb-run)和第三个是xvfb的附加选项(默认:-a -s "-screen 0 1024x678x16")
- $pdf->generateFromHtml(string); 输入自己的HTML以生成PDF
- $pdf->generateFromUrl(string); 输入PDF应从中生成的URL
Wkhtmltopdf命令
wkhtmltopdf所有可用的命令列表(《http://wkhtmltopdf.org/usage/wkhtmltopdf.txt》)。
用法:return $pdf->wkhtmltopdf('-O landscape')->wkhtmltopdf('-l')->generatePDF();
许可协议
MIT 许可协议 (MIT)。请参阅许可文件获取更多信息。