繁体   English   中英

使用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 Framework 2.4.4,CentOS7

您的问题有几个问题。

首先,您上面提到的Zend_Pdf属于ZF1,而不是ZF2。 如果您真的在谈论ZF2,则该类称为ZendPdf ,可以用作独立组件-您不需要具有可用于自动加载的ZF2的完整副本(编写者将生成一个自动加载器-您只需要在您的脚本中require )。 上次我检查(承认是几年前)时,这两个版本在功能上是等效的,因此您可能应该只使用与实际使用的Zend Framework版本相匹配的版本。

这把我带到下一个问题。 因为我不确定您要指的是哪个版本,所以进行了快速文本搜索,发现setTextField()方法仅存在于ZF1的Zend_Pdf ,而不存在于与ZendPdf相关的ZendPdf类中,因此我没有确定为什么在问题中提到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放置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副本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM