使用 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 副本即可获得工作的自动加载器。
我是 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 副本即可获得工作的自动加载器。