Zend PDF:如何打印粗体文本或其他颜色的文本等?
Posted
技术标签:
【中文标题】Zend PDF:如何打印粗体文本或其他颜色的文本等?【英文标题】:Zend PDF: How do I print bold text or text in another color etc? 【发布时间】:2012-03-20 23:38:11 【问题描述】:我有一个很长的字符串,比如:
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,而是类似的东西?
谢谢!
【问题讨论】:
【参考方案1】:您的问题的简短回答是否定的,Zend Framework 不提供您正在寻找的格式化功能。
Zend_Pdf
提供了在页面上绘制文本、线条、圆圈等的原始函数,仅此而已。如果你想在一行中间加粗一些文本,你必须先绘制文本的第一位,将字体样式更改为粗体,绘制你想要加粗的文本,切换回原来的字体样式然后绘制该行的其余部分。您还必须自己处理换行、分页符等。
我前段时间写了一篇博文,更深入地讨论了这些挑战,并在 github 上发布了一个包装类,使Zend_Pdf
更易于使用。帖子在这里:http://yetanotherprogrammingblog.com/content/zend_pdf-wrapper-and-sample-code,包装类在这里:https://github.com/jamesggordon/Wrap_Pdf。不幸的是,这个版本的类并不能完全满足您的需求,但修改 writeText()
方法以实现您所追求的字体更改系统应该不会太难。
【讨论】:
【参考方案2】:我也在寻找类似的东西。我们有一些使用 Zend PDF 呈现 PDF 的遗留代码。它非常复杂。
我过去使用过一种叫做 DomPDF 的东西——这可能是你需要的,因为它只是为你将 HTML 转换为 PDF——非常容易使用!
http://dompdf.github.io/
【讨论】:
【参考方案3】:可以,查看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(....);
【讨论】:
以上是关于Zend PDF:如何打印粗体文本或其他颜色的文本等?的主要内容,如果未能解决你的问题,请参考以下文章