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