使用 Zend_PDF 和 Zend Framework,在 PHP 中加载库?

Using Zend_PDF and Zend Framework, Loading Libraries in PHP?

我是 PHP 的新手,只使用过一点 LAMP 堆栈。我想使用 Zend_PDF 来填写使用 PHP 的表格。我有问题并且相信我不知道如何正确加载 Zend Framework(或一般的外部库)。这是我目前拥有的:

<?php 
include_path='.:/var/www/html/lib/'; 
require_once'.:/var/www/html/lib/Zend/Loader/ClassMapAutoloader.php';
$pdf = Zend_Pdf::load('.:/var/www/html/forms/test.pdf');

echo count($pdf->pages);
?>

我正在使用 count(); 作为测试,但我希望使用 setTextField(); 函数。我没有某些指南中提到的“/Loader/Autoloader.php”。

如何正确加载库以便我可以使用 setTextField(); 函数?

PHP 5.4.16, Zend 框架 2.4.4, CentOS7

你的问题有几个问题。

首先,你上面提到的Zend_Pdf属于ZF1,不是ZF2。如果你真的在谈论 ZF2,那么 class 被称为 ZendPdf 并且可以用作独立组件 - 你不需要有 ZF2 的完整副本可用于自动加载(作曲家将生成一个自动加载器 - 你只需要 require 在你的脚本中)。上次我检查时(诚然,那是几年前),这两个版本在功能上是相同的,因此您应该只使用与您实际使用的 Zend Framework 版本相匹配的版本。

这让我进入下一期。因为我不完全确定你指的是哪个版本,所以我进行了快速文本搜索,发现 setTextField() 方法仅存在于 ZF1 的 Zend_Pdf 中,而不存在于 ZendPdf class 与 ZF2 相关,所以我不确定您为什么在问题中提到 ZF2。但无论如何,在我做出那个发现之前,我想出了如何让 ZF2 版本工作,所以为了完整性,我在下面包括了这两种方法。

此外,您的 require_once 语句中有一个错误 - 它不应该在开头包含“.:”。现在开始我的实际回答。

从 Zend Framework 1 Standalone 加载 Zend_Pdf

这应该有效:

set_include_path( '/path/to/zf1/library' . PATH_SEPARATOR . get_include_path());
require_once( '/path/to/zf1/library/Zend/Loader/Autoloader.php' );
Zend_Loader_Autoloader::getInstance();

$pdf = new Zend_Pdf();

$pdf->pages[0] = new Zend_Pdf_Page( Zend_Pdf_Page::SIZE_A4 );
$pdf->pages[0]->setFont(Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA), 24 );

$pdf->pages[0]->drawText( "Hello world!", 240, 400 );

$pdf->save( 'example.pdf' );

您显然需要调整上面代码中的路径以使其正常工作,但是一旦您这样做并且 运行 脚本,您应该以 example.pdf 结束已创建。

从 Zend Framework 2 Standalone 加载 ZendPdf

使用项目页面上的说明从 github (https://github.com/zendframework/ZendPdf) 下载 ZendPdf 项目,或者如果您愿意,可以直接使用 git 克隆存储库。

进入ZendPdf所在目录,运行composer install下载支持文件

在同一目录(即 ZendPdf 的项目根目录)中,创建一个名为 test.php 的文件,内容如下:

require 'vendor/autoload.php';

use ZendPdf\PdfDocument;
use ZendPdf\Page;
use ZendPdf\Font;

$pdf = new PdfDocument();

$pdf->pages[0] = new Page( Page::SIZE_A4 );
$pdf->pages[0]->setFont( Font::fontWithName( Font::FONT_HELVETICA ), 24 );
$pdf->pages[0]->drawText( 'Hello world!', 240, 400 );

$pdf->save( 'example.pdf' );

运行 php test.php 并且应该创建 example.pdf 文件。

第二个解决方案的神奇之处在于 composer,它会为您创建 autoload.php 文件。使用这种方法有很多很多好处,其中之一是您不必安装完整的 Zend Framework 2 副本即可获得工作的自动加载器。