如何在TCPDF中添加自定义字体?

时间:2015-04-27 12:41:35

标签: php fonts tcpdf

我想在我使用TCPDF生成的pdf中添加自定义字体。我可能会遗漏一些东西,但the docs似乎已经过时了。它们引用了addTTFfont()函数,但我认为它已被弃用,并且在最新版本的TCPDF中不再存在。

我读到我需要转换ttf文件并将其放在fonts文件夹中,所以我跑了:

php/tcpdf/tools/tcpdf_addfont.php -i php/font/rumpelstiltskin-webfont.ttf

并生成这些文件,这些文件现在位于fonts文件夹中:

rumpelstiltskinwebfont.ctg.z
rumpelstiltskinwebfont.z
rumpelstiltskinwebfont.php

然后我尝试添加字体:

$pdf->addFont('rumpelstiltskin');
$pdf->SetFont('rumpelstiltskin', '', 14, '', false);

但是我收到了一个错误:

TCPDF ERROR: Could not include font definition file: rumpelstiltskin

3 个答案:

答案 0 :(得分:10)

我想出了我的问题,我几乎就在那里。

这是一步一步:

首先使用TCPDF工具文件夹中的tcpdf_addfont.php工具字体转换字体:

php/tcpdf/tools/tcpdf_addfont.php -i php/font/rumpelstiltskin-webfont.ttf

这将生成所需的文件并将它们放在TCPDF字体文件夹中。检查fonts文件夹并复制字体名称,在我的情况下是rumpelstiltskinwebfont

在您的代码中使用字体文件的名称设置字体并写下一行文字:

$pdf->SetFont('rumpelstiltskinwebfont', '', 14, '', false);
$pdf->Write(0, 'Fill text', '', 0, '', true, 0, false, false, 0);

就是这样。希望这有助于某人。 :)

答案 1 :(得分:3)

another question得到了这个答案并为我解决了。您只需要使用第一个参数,即字体文件的路径。使用TTF和OTF字体。

它生成一个用于$pdf->SetFont($fontname, '', $font_size);

的名称字符串

希望它有所帮助。

最新的TCPDF版本使用addTTFfont()方法自动将字体转换为TCPDF格式。例如:

// convert TTF font to TCPDF format and store it on the fonts folder
$fontname = TCPDF_FONTS::addTTFfont('/path-to-font/FreeSerifItalic.ttf', 'TrueTypeUnicode', '', 96);

// use the font
$pdf->SetFont($fontname, '', 14, '', false);

有关详细信息和示例,请查看TCPDF Fonts documentation page

注意:转换字体后,TCPDF不再需要TTF文件或以上对addTTFfont()的调用!

答案 2 :(得分:0)

您可以使用 http://fonts.palettize.me 转换 ttf 字体,然后将字体文件夹中未压缩的结果放入 tcpdf 类。然后你可以添加它 $pdf->SetFont('rumpelstiltskinwebfont', '', 14);使用文件名