takeoo/zend-pdf

该包最新版本(v0.2.1)没有提供许可证信息。

在Zend Framework 2中从视图创建PDF

v0.2.1 2017-05-04 11:26 UTC

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);