我目前正在构建一个 PDF 编辑器。我在实现标签处理时遇到了问题。
我想允许以下标签:[h1],[h2],[h3],[h4],[h4],[h5],[h6],[strong]
我用一个名为drawText(下面的代码)的方法构建了一个类。
[h1] 标签会改变字体大小和字体粗细。正如您在代码中看到的那样,我正在输出文本行。示例文本行:这是您的[strong]登机牌[/strong],请将此 PDF 文件保存在您的智能手机或平板电脑上并[strong]在登机口出示[/strong]。
我想让 [strong] 粗体之间的文本。要使用 Zend_PDF 执行此操作,我需要使用粗体文本设置 TTF 文件,然后找到当前 X 坐标并调用 $this->pdf()->drawText(text, X-coordinate, Y-coordinate, charset)。我已经思考并尝试了几个小时来编写使这成为可能的代码(尝试使用explode,preg_match_all等),但我无法让它工作......
我相信我不是唯一一个遇到这个问题的人,我希望有人已经考虑过这一点,并且可以通过告诉他或她是如何做到的来提供一点帮助......
希望收到某人的来信,并提前致谢!
/**
* drawSplittedText()
*
* @param array $text
* @return object Application_Plugin_PdfPlugin
*/
public function drawSplittedText(Array $text)
{
// Count the number of rows.
$textRowCount = count($text);
$i = 0;
foreach ($text as $row)
{
// Replace tabs, because they're not outputted properly.
$row = str_replace("\t", ' ', $row);
// If the character encoding of the currrent row not is UTF-8, convert the row characters to UTF-8.
if (($rowEncoding = mb_detect_encoding($row)) != 'UTF-8') {
$row = iconv($rowEncoding, 'UTF-8', $row);
}
// Output row on PDF
$this->pdf()->drawText($row, $this->_defaultMarginleft, $this->currentY, 'UTF-8');
$this->newLine();
++$i;
}
return $this;
}