takeoo / zend-pdf
在Zend Framework 2中从视图创建PDF
Requires
- zendframework/zend-servicemanager: ^3.0.3
- zendframework/zend-view: ^2.6.3
This package is auto-updated.
Last update: 2024-09-29 04:49:17 UTC
README
在ZendFramework 3中从视图创建PDF
支持zend framework v3.*
如果您想与旧版本一起使用,请使用之前的标签之一
需求
-
您的服务器上已安装wkhtmltopdf
- Debian, Ubuntu
sudo apt-get install wkhtmltopdf
- *Debian服务器上wkhtmltopdf库存在已知错误,因此如果您遇到类似错误,请
wkhtmltopdf: cannot connect to X server
安装xvfb
sudo apt-get install xvfb
-
作为依赖项已安装zend-view 2.3*
-
zf3的3.*版本已安装zend-service-manager
安装
-
Composer install
composer require takeoo/zend-pdf
-
将 "Takeoo\Pdf" 添加到 application.config.php 中的 'modules' 数组
使用
-
Takeoo\Zend-pdf将通过服务管理器创建服务,因此它作为 'PdfCreator' 在服务定位器中可用;
-
实例化
$pdfCreator = $serviceManager->get('PdfCreator');
注意: PdfCreator 不是共享服务,所以每次调用服务管理器都会创建新实例。
PdfCreator使用ViewResolver,如果具有MVC应用程序,则会自动将其注入到PhpRenderer,因此您可以使用应用程序中任何视图或布局!
-
设置布局
$pdfCreator->setLayoutTemplate('layout/pdf-template');
- 像在响应中添加视图一样添加视图,只需将名称和变量传递给 createHtml() 函数即可
$pdfCreator->createHtml('path/to/view', ['variableName' => $variableValue]);
或者,您可以直接传递已创建的视图模型
$pdfCreator->createHtmlFromViewModel($viewModel);
-
输出
-
所有现代浏览器都支持直接将PDF输出到浏览器
$pdfCreator->output();
-
获取文件句柄
$pdfCreator->writePdf();
注意: 以上两个函数都会将文件保存到您的磁盘
-
-
获取文件路径
$pdfCreator->getFilePath();
-
默认情况下,所有文件都生成到您的项目根目录,名为 "{Ymd_His}.pdf"
-
更改文件目标位置
$pdfCreator->setPdfFileName('path/to/desired/folder/nameofyourfile.pdf');
注意: 所有公共作用域的函数(除了output()和writePdf()之外)都是流畅的,因此您可以链式调用所有函数
$pdfCreator->setLayoutTemplate('layout/pdf-layout') ->createHtml('view', ['variable1' => $variable1Value]) ->setPdfFileName('./../file.pdf') ->setHasXvfb(false) ->output();
注意: 默认情况下,所有wkhtmltopdf转换都使用 setHasXvfb(true) 创建,因此您必须在服务器上安装 Xvfb!如果您想关闭它,只需这样做
$pdfCreator->setHasXvfb(false);