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

vbkedwbf  于 2023-09-29  发布在  PHP
关注(0)|答案(4)|浏览(276)

我想添加一个自定义字体的PDF我使用TCPDF生成。我可能错过了一些东西,但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
8hhllhi2

8hhllhi21#

我发现了我的问题,我几乎在那里。
下面是一个步骤:
首先通过命令行使用TCPDF tools文件夹中的tcpdf_addfont.php工具字体转换字体:

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);

就这样。希望这能帮上忙。:)

bxpogfeg

bxpogfeg2#

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()的调用!

xwbd5t1u

xwbd5t1u3#

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

avwztpqn

avwztpqn4#

从TCPDF(版本6.2.6)开始,您可以直接使用TCPDF_FONTS::addTTFfont而不是AddFont
TCPDF从ttf中生成三个文件,并将它们放入TCPDF的“font”目录中。一旦创建了这些,它们就可以用于所有未来的PDF。

**示例:**首先(为了简单起见)我在TCPDF的font文件夹中创建了一个新字体的文件夹,在我的示例中为 “arialuni”,并将我的 ttf 复制到其中。

如果我想在一个单独的文件中创建字体文件,而不使用Composer自动加载,我必须包含一次TCPDF,并指定ttf的正确路径。

require_once('vendor/tecnickcom/tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$fontname = TCPDF_FONTS::addTTFfont('vendor/tecnickcom/tcpdf/fonts/arialuni/arialuni.ttf', 'TrueTypeUnicode', '', 32);

相关问题