我正在寻找一种解决方案,为使用 tcpdf 创建的 PDF 文档设置不止一种字体。
我想做这样的事情:
$pdf->SetFont('verdana_bold', 'B', 12);
$pdf->SetFont('verdana', '', 12);
我的文档需要粗体字体和常规字体。上面的例子不起作用。当我切换两行时,文本都是粗体的。当我使用上面的示例时,文本只是常规的。
我想font-weight
用常规的 CSS 样式表设置。
希望你有解决办法。
您可以像这样在 html 中使用自定义字体:
$fontname=$pdf->addTTFfont('path/myfont.ttf', '', '', 32);
//echo $fontname;
$html='<span style="font-family:'.$fontname'.;font-weight:bold">my text in bold</span>: my normal text';
$pdf->writeHTMLCell($w=0,$h=0,$x=11,$y=201,$html,$border=0,$ln=0,$fill=false,$reseth=true,$align='L',$autopadding=false);
将 Verdana 转换为 TCPDF 使用:
$fontname = $pdf->addTTFfont('/path-to-font/verdana.ttf', 'TrueTypeUnicode', '', 32);
下面的行将在您的字体文件夹中生成 3 个文件
rotisserifi56.php, rotisserifi56.ctg, rotisserifi56.rar
使用它来生成文件
$fontname = $this->pdf->addTTFfont('fonts/Rotis Serif Italic 56.ttf', 'TrueTypeUnicode', '', 32);
// use the font
$this->pdf->SetFont($fontname, '', 14, '', false);
现在,使用这样的字体:
$this->pdf->AddFont('rotisserifi56', '', 'rotisserifi56.php');
$this->pdf->SetFont('rotisserifi56');
我知道这个问题已经很老了,但我遇到了同样的问题并修复了它。
你可以做但不应该做的是:
$pdf->SetFont('verdana_bold', 'B', 12);
$pdf->SetFont('verdana', '', 12);
您在这里基本上要做的是定义 2 种字体。一个名称为 verdana,另一个名称为 verdana_bold。当您将 B 指定为粗体时,它找不到此 ttf。因为 TCPDF 基本上会检查字体目录中名为 verdana_boldb.ttf 的文件。这不存在,所以它需要 verdana_bold.ttf (乍一看似乎是正确的行为)。
对我来说,在我尝试在表格中同时使用粗体和非粗体样式后,这个问题变得很明显,我要么只将整个表格设为粗体,要么将整个表格设为非粗体(删除或添加 B 样式说明符不会做出改变)。
你应该做什么:
添加新的字体类型:
$fontname = TCPDF_FONTS::addTTFfont($fontfile, 'TrueType', '', 32);
当你想使用字体时:
$pdf->SetFont('verdana', '', 10, '', false);
当您希望在 HTML 单元格中以粗体显示项目时,请使用 html b 标签:
<b>myvalue</b>
如果您有 verdanab.ttf 文件,您可以检查字体目录。
$ ls fonts/verdanab.
verdanab.ctg.z verdanab.php verdanab.z
我希望这对其他人有帮助:)
我刚刚解决了我的问题。问题是,字体必须以正确的方式命名。verdana_bold 是错误的 - 它必须是 verdanab。然后我只需要注册 verdana 字体和 tcpdf 自动获取该字体的粗体版本的 verdanab.ttf。
包括自定义字体的步骤:
$pdf->addTTFfont('C://wamp/www/projectname/...path to .ttf file', 'TrueTypeUnicode', '', 32);
$pdf->SetFont('custom_font_name');
您的自定义字体已准备好使用。