pdf — Использование Zend_PDF и Zend Framework, загрузка библиотек в 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

0

Решение

Есть несколько вопросов с вашим вопросом.

Во-первых, Zend_Pdf Вы упомянули выше, принадлежит ZF1, а не ZF2. Если вы действительно говорите о ZF2, то класс называется ZendPdf и может использоваться в качестве автономного компонента — вам не нужно иметь полную копию ZF2, доступную для автозагрузки (composer сгенерирует автозагрузчик — вам просто нужно require что в вашем сценарии). В прошлый раз, когда я проверял (что, по общему признанию, было пару лет назад), две версии были функционально эквивалентны, так что вам, вероятно, следует просто использовать версию, которая соответствует версии Zend Framework, которую вы фактически используете.

Что подводит меня к следующему вопросу. Поскольку я не был полностью уверен, на какую версию вы ссылались, я сделал быстрый текстовый поиск и обнаружил, что setTextField() метод существует только в Zend_Pdf от ZF1, а не ZendPdf класс, который связан с ZF2, поэтому я не уверен, почему вы упомянули ZF2 в своем вопросе. Но в любом случае, я выяснил, как заставить работать версию ZF2 до того, как сделал это открытие, поэтому я включил оба метода ниже для полноты картины.

Кроме того, у вас есть ошибка в вашем require_once утверждение — оно не должно содержать «.:» в начале. Теперь перейдем к моему актуальному ответу.

загрузка Zend_Pdf от Zend Framework 1 Standalone

Это должно работать:

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.

загрузка ZendPdf от Zend Framework 2 Standalone

Скачать ZendPdf проект от github (https://github.com/zendframework/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 просто для того, чтобы получить работающий автозагрузчик.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]