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

时间:2015-07-21 22:39:58

标签: php pdf zend-framework zend-pdf

我是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 Framework 2.4.4, CentOS7

1 个答案:

答案 0 :(得分:1)

您的问题存在一些问题。

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

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

此外,您的require_once声明中有错误 - 它不应该包含&#39;。:&#39;包括在一开始。现在回答我的实际答案。

从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的完整副本只是为了得到一个可用的自动加载器。