Zend PDF: как напечатать полужирный текст или текст другим цветом и т. Д.?

У меня длинная строка, например:

Lorem ipsum dolor sit amet, contetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. В vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

Некоторые слова должны быть выделены жирным шрифтом, а некоторые - другим цветом и так далее. Можно ли каким-то образом передать функции drawText строку, которая уже содержит правильный синтаксис, чтобы в PDF-файле был текст, выделенный жирным шрифтом, и так далее? Что-то вроде этого:

$text = "my <b>text</b>...";
$page->drawText($text, 100, ($page->getHeight() - 100));

Он не работает с HTML, но что-то похожее?

Спасибо!


person EOB    schedule 02.03.2012    source источник


Ответы (3)


Короткий ответ на ваш вопрос - нет, Zend Framework не предоставляет функции форматирования, которые вам нужны.

Zend_Pdf предоставляет примитивные функции для рисования текста, линий, кругов и т. Д. На странице, но это все. Если вы хотите выделить текст в середине строки жирным шрифтом, вам нужно нарисовать первый фрагмент текста, изменить стиль шрифта на полужирный, нарисовать фрагмент текста, который вы хотите выделить жирным, вернуться к исходному стилю шрифта, а затем нарисовать остаток строки. И вы должны сами следить за переносом строк, разрывами страниц и т. Д.

Некоторое время назад я написал сообщение в блоге, в котором более подробно рассказывается об этих проблемах, и разместил на github класс-оболочку, который делает Zend_Pdf немного проще в использовании. Сообщение находится здесь: http://yetanotherprogrammingblog.com/content/zend_pdf-wrapper-and-sample-code, а класс-оболочка находится здесь: https://github.com/jamesggordon/Wrap_Pdf. К сожалению, эта версия класса не делает именно то, что вы хотите, но не должно быть слишком сложно изменить метод writeText() для реализации системы изменения шрифта, которая вам нужна.

person JamesG    schedule 04.03.2012

Я тоже ищу нечто подобное. У нас есть устаревший код, который отображает PDF с помощью Zend PDF ... это очень сложно.

Раньше я использовал что-то под названием DomPDF - вероятно, это то, что вам нужно, поскольку оно просто превращает HTML в PDF - очень просто!

http://dompdf.github.io/

person John Hunt    schedule 29.05.2015

Это можно сделать, посмотрите zend.pdf.drawing; http://framework.zend.com/manual/1.12/en/zend.pdf.drawing.html

Вам нужно будет разбить ваши строки PHP, а затем изменить стили рисования Zend PDF между каждой строкой PHP.

$style->setFont(\Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_TIMES_BOLD), 12);
$page->setStyle($style);
$page->drawText(....);
$style->setFont(\Zend_Pdf_Font::fontWithName(\Zend_Pdf_Font::FONT_TIMES), 10);
$page->setStyle($style);
$page->drawText(....);
person Ricky Odin Matthews    schedule 09.11.2015