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

使用Zend_PDF和Zend Framework,在PHP中加载库?,php,pdf,zend-framework,zend-pdf,Php,Pdf,Zend Framework,Zend Pdf,我是PHP新手,只使用过一点LAMP堆栈。我想使用Zend_PDF使用PHP填写表单。我遇到了一些问题,我认为我不知道如何正确加载Zend框架(或一般的外部库)。以下是我目前的情况: <?php include_path='.:/var/www/html/lib/'; require_once'.:/var/www/html/lib/Zend/Loader/ClassMapAutoloader.php'; $pdf = Zend_Pdf::load('.:/var/www/html/f

我是PHP新手,只使用过一点LAMP堆栈。我想使用Zend_PDF使用PHP填写表单。我遇到了一些问题,我认为我不知道如何正确加载Zend框架(或一般的外部库)。以下是我目前的情况:

<?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,那么该类被称为
ZendPdf
,可以作为一个独立组件使用-您不需要为自动加载提供ZF2的完整副本(composer将生成一个自动加载程序-您只需要在脚本中使用
require
)。上次我检查时(无可否认,这是几年前的事),这两个版本在功能上是等效的,所以您可能应该只使用与您实际使用的Zend Framework版本相匹配的版本

这就引出了下一个问题。因为我不完全确定您所指的是哪个版本,所以我进行了快速文本搜索,发现
setTextField()
方法只存在于ZF1的
Zend_Pdf
中,而不是与ZF2相关的
ZendPdf
类中,所以我不确定您为什么在问题中提到ZF2。但无论如何,在我发现之前,我已经知道了如何让ZF2版本工作,因此为了完整性,我在下面介绍了这两种方法

另外,您的
require_once
语句中有一个错误-它不应该在开始时包含“:”。现在来看看我的实际答案

从Zend Framework 1单机版加载
Zend\u 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单机版加载
ZendPdf

使用项目页面上的说明从github()下载
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的完整副本就可以获得一个正常工作的自动加载器。

这是一个多么令人惊讶的答案,非常感谢。我指的是ZF2,但没有意识到Zend_Pdf仅在ZF1中。经过测试,ZendPdf似乎没有编辑文本字段的能力,只能绘制。我想我会玩一会儿坐标。谢谢你的帮助!不客气,很高兴我能帮上忙。祝你的编码好运!如果你还能帮我的话,我还有一个问题$文件名='new.pdf'$pdf->保存($filename);'在“$filename=”/forms/new.pdf”时工作$pdf->保存($filename);'不。如何在其他目录中保存/打开?当您尝试保存到/forms目录时会发生什么情况?您是否收到一条消息说“无法打开“/forms/new.pdf”进行写作”?如果是这样,很可能是文件权限有问题。您需要确保您试图将文件保存到的目录(A)存在,并且(B)可由脚本运行的用户(或组)写入。看起来就是这样,同时将其更改为“forms/new.pdf”。谢谢