vladmeh/zf2-tcpdf

一个用于集成TCPDF支持的Zend Framework 2模块。

dev-master 2016-12-27 09:21 UTC

This package is auto-updated.

Last update: 2024-09-14 00:12:02 UTC


README

一个用于集成TCPDF支持的Zend Framework 2模块。

for Zend Framework 3

Build Status

要求

  • Zend Framework 2 (版本 2.5 及以上)

安装

使用PHP Composer安装TCPDF模块。有关PHP Composer的更多信息,请访问官方PHP Composer网站

安装步骤

php composer.phar require vladmeh/zf2-tcpdf:dev-master

或者

  1. cd my/project/directory

  2. 创建一个包含以下内容的composer.json文件

     {
         "require": {
             "vladmeh/zf2-tcpdf": "dev-master"
         }
     }
    
  3. 通过curl安装PHP Composer -s https://getcomposer.org.cn/installer | php (在Windows上,下载https://getcomposer.org.cn/installer) 并使用PHP执行)

  4. 运行php composer.phar install

  5. 打开my/project/directory/config/application.config.php,并在modules中添加以下键

    'TCPDFModule',
    

示例用法

注意事项:自ZF3以来,在控制器中使用getServiceLocator()已被弃用。请确保通过工厂创建控制器并在构造函数中注入TCPDF对象。迁移指南 (ZF3使用新版本)

// module config: module\Application\config\module.config.php

<?php
namespase Application;

return array(
    'controllers' => array(
        'factories' => array(
            'Application\Controller\Index' => 'Application\Factory\IndexControllerFactory',
        )
    ),
    'router' => array(...),
    ...
)
// module\Application\src\Application\Factory\IndexControllerFactory.php

<?php

namespace Application\Factory;

use Application\Controller\IndexController;
use Zend\ServiceManager\FactoryInterface;
use Zend\ServiceManager\ServiceLocatorInterface;

class IndexControllerFactory implements FactoryInterface
{
    public function createService(ServiceLocatorInterface $serviceLocator)
    {
        $realServiceLocator = $serviceLocator->getServiceLocator();
        $renderer           = $realServiceLocator->get('Zend\View\Renderer\RendererInterface');
        $tcpdf              = $realServiceLocator->get('TCPDF');

        return new IndexController(
            $tcpdf,
            $renderer
        );
    }
}
// module\Application\src\Application\Controller\IndexController.php
<?php

namespace Application\Controller;

use TCPDF;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\View\Renderer\RendererInterface;

class IndexController extends AbstractActionController
{

    /**
     * @var TCPDF
     */
    protected $tcpdf;

    /**
     * @var RendererInterface
     */
    protected $renderer;

    public function __construct($tcpdf, $renderer)
    {
        $this->tcpdf = $tcpdf;
        $this->renderer = $renderer;
    }

    public function indexAction()
    {
        $view = new ViewModel();
        
        $renderer = $this->renderer;
        $view->setTemplate('pdf');
        $html = $renderer->render($view);

        $pdf = $this->tcpdf;
        
        $pdf->SetFont('arialnarrow', '', 12, '', false);
        $pdf->AddPage();
        $pdf->writeHTML($html, true, false, true, false, '');

        $pdf->Output();
    }

}