2

我有一个很长的字符串,例如:

Lorem ipsum dolor sit amet, consetetur 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,而是类似的东西?

谢谢!

4

3 回答 3

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()不幸的是,这个版本的类并不能完全满足您的要求,但是修改方法以实现您所追求的字体更改系统应该不会太难。

于 2012-03-04T22:19:19.103 回答
1

我也在寻找类似的东西。我们有一些使用 Zend PDF 呈现 PDF 的遗留代码。它非常复杂。

我过去使用过一种叫做 DomPDF 的东西——这可能是你需要的,因为它只是为你将 HTML 转换为 PDF——非常易于使用!

http://dompdf.github.io/

于 2015-05-29T09:38:11.750 回答
1

可以做到,查看zend.pdf.drawing; http://framework.zend.com/manual/1.12/en/zend.pdf.drawing.html

您需要分解 PHP 字符串,然后在每个 PHP 字符串之间更改 Zend PDF 绘图样式。

$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(....);
于 2015-11-09T13:06:17.600 回答