如何在Zend Framework 2中使用ZendPdf \ Pdf

时间:2013-10-23 09:58:13

标签: php zend-framework zend-framework2

我正在尝试在Zend Framework中使用ZendPdf。我正在构建骨架应用程序。我使用composer.phar来获取ZendPdf所需的包,所有文件现在位于zendpdf目录下的zendframwork目录下的vendor目录下,所以我假设包更新有效。

这是我的IndexController.php

<?php

namespace Application\Controller;

use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Json\Json;

class IndexController extends AbstractActionController
{
        public function indexAction()
        { 


                    $fileName = 'foo.pdf';
                    $pdf = \ZendPdf\Pdf::load($fileName);   


                    // Some JSON stuff etc
                    // …
        }   
}

我收到以下错误:

Fatal error: Class 'ZendPdf\Pdf' not found in /mnt/host-home/websites/mywebsite.com/module/Application/src/Application/Controller/IndexController.php on line 16

我仍然试图了解名称空间等问题。感谢任何帮助。

编辑:

我知道ZF2不包含PDF功能,这就是我使用composer.phar来获取它的原因。我真的想知道的是如何实例化ZendPDF类?

3 个答案:

答案 0 :(得分:1)

Pdf中没有课程ZendPdf,我想你可能意味着PdfDocument

\ZendPdf\PdfDocument::load($fileName);

由于您说您是名词空间新手,我建议您使用use命令来帮助您的代码更具可读性。如果您要添加:

use ZendPdf\PdfDocument;

到你的班级顶部,然后PHP知道PdfDocument引用了\ZendPdf\PdfDocument,所以你可以这样做:

PdfDocument::load($fileName);

在你的控制器动作中。

答案 1 :(得分:1)

带着同样的错误来到这里;我这样解决了:

一个。如果从作曲家下载,请转到步骤C.对于手动下载,请创建一个&#34; zendpdf&#34; vendor \ zendframework上的文件夹:

例如: C:\ mywww \ ZF2 \厂商\ zendframework \ zendpdf

B中。将masterzip内容(Library文件夹,test文件夹,composer.json等)复制到新的&#34; zendpdf&#34;文件夹中。

℃。从以下位置编辑StandardAutoloader.php:

C:\ mywww \ ZF2 \厂商\ zendframework \ zendframework \库\ Zend的\装载机\ StandardAutoloader.php

    .
    .
    .
    foreach ($options as $type => $pairs) {
switch ($type) {                
    case self::AUTOREGISTER_ZF:                    
        if ($pairs) {
            $this->registerNamespace('Zend', dirname(__DIR__));
            $this->registerNamespace('ZendXml', dirname(dirname((__DIR__))) . '/ZendXml');
            $this->registerNamespace('ZendPdf', dirname(dirname((__DIR__))) . '/ZendPdf');  //add this line.                      
        }
        break;
    .
    .
    .

全部;现在我们可以使用Pdf函数:

    use ZendPdf\PdfDocument; //dont' forget to add this at start   ;)
    $pdf1 = new PdfDocument(); // Create a new PDF document
    //$fileName = 'test.pdf';
    //$pdf2 = Zend_Pdf::load($fileName);// Load a PDF document from a file
    //$pdf3 = Zend_Pdf::parse($pdfString);// Load a PDF document from a string   

答案 2 :(得分:0)

问题是您使用的是ZendPdf \ pdf :: load()。这已在zf2 v> 2.0中修改为ZendPdf \ PdfDocument :: load()。 希望这能解决问题。