Есть несколько вопросов, с вашим вопросом.
Во-первых, упомянутый выше Zend_Pdf
принадлежит ZF1, а не ZF2. Если вы действительно говорите о ZF2, то класс называется ZendPdf
и может использоваться как отдельный компонент - вам не нужно иметь полную копию ZF2, доступную для автозагрузки (композитор будет генерировать автозагрузчик - вам просто нужно будет 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');
Вы, очевидно, необходимо скорректировать пути в коде выше, для того, чтобы заставить его работать правильно, но когда-то вы делаете это и запускаете скрипт, вы должны создать пример .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, установленную просто для получения рабочего автозагрузчика.
Какой замечательный ответ, большое вам спасибо. Я имел в виду ZF2, но не понял, что Zend_Pdf был только в ZF1. После тестирования это выглядит так: ZendPdf не имеет возможности редактировать текстовые поля, а только рисовать. Полагаю, я буду играть с координатами какое-то время. Спасибо вам за помощь! – howdoisysadmin
Добро пожаловать - рад, что я мог бы помочь. Удачи вам в кодировании! – JamesG
У меня есть еще один вопрос, если вы все еще можете мне помочь. '$ filename =' new.pdf '; $ pdf-> save ($ filename); ' работает в то время как '$ filename =' /forms/new.pdf '; $ pdf-> save ($ filename); ' не делает. как сохранить/открыть в других каталогах? – howdoisysadmin