0

我正在尝试在 Zend 框架中使用 ZendPdf。我正在构建骨架应用程序。我曾经composer.phar获取 ZendPdf 所需的包,所有文件现在都zendpdf位于与目录相同的目录下zendframworkvendor因此我假设包更新有效。

这是我的 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 类?

4

3 回答 3

1

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

A. 如果从 composer 下载,请转到步骤 C。对于手动下载,请在 vendor\zendframework 上创建一个“zendpdf”文件夹:

例如:C:\mywww\zf2\vendor\zendframework\zendpdf

B. 将masterzip内容(库文件夹、测试文件夹、composer.json 等)复制到新的“zendpdf”文件夹中。

C. 从以下位置编辑 StandardAutoloader.php:

C:\mywww\zf2\vendor\zendframework\zendframework\library\Zend\Loader\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   
于 2014-05-30T18:45:02.193 回答
1

There is no class Pdf in ZendPdf, I think you probably meant PdfDocument:

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

Since you said you're new to namespaces, I'd recommend using the use command to help make your code a bit more readable. If you were to add:

use ZendPdf\PdfDocument;

to the top of your class, PHP then knows that PdfDocument refers to \ZendPdf\PdfDocument, so you can then just do:

PdfDocument::load($fileName);

in your controller action.

于 2013-10-23T10:37:05.370 回答
0

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

于 2014-10-17T08:29:23.800 回答