如何在 TCPDF 中添加自定义字体?
How do you add custom fonts in TCPDF?
我想向使用 TCPDF 生成的 pdf 添加自定义字体。我可能遗漏了一些东西,但 the docs 似乎已经过时了。他们引用了 addTTFfont()
函数,但我认为它已被弃用,并且在最新版本的 TCPDF 中不再存在。
我读到我需要转换 ttf 文件并将其放在 fonts 文件夹中,所以我 运行:
php/tcpdf/tools/tcpdf_addfont.php -i php/font/rumpelstiltskin-webfont.ttf
它生成了这些文件,这些文件现在位于字体文件夹中:
rumpelstiltskinwebfont.ctg.z
rumpelstiltskinwebfont.z
rumpelstiltskinwebfont.php
然后我尝试添加字体:
$pdf->addFont('rumpelstiltskin');
$pdf->SetFont('rumpelstiltskin', '', 14, '', false);
但我收到一个错误:
TCPDF ERROR: Could not include font definition file: rumpelstiltskin
我解决了我的问题,我快到了。
这里是一个步骤:
首先使用 TCPDF 工具文件夹中的 tcpdf_addfont.php 工具字体转换您的字体:
php/tcpdf/tools/tcpdf_addfont.php -i php/font/rumpelstiltskin-webfont.ttf
这将生成所需的文件并将它们放入 TCPDF 字体文件夹中。检查字体文件夹并复制字体名称,在我的例子中是 rumpelstiltskinwebfont
.
在您的代码中使用字体文件的名称设置字体并写入一行文本:
$pdf->SetFont('rumpelstiltskinwebfont', '', 14, '', false);
$pdf->Write(0, 'Fill text', '', 0, '', true, 0, false, false, 0);
就是这样。希望这对某人有帮助。 :)
在 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()
!
的调用
您可以使用http://fonts.palettize.me转换ttf字体,然后将字体文件夹中的未压缩结果放入tcpdf class。然后你可以用 $pdf->SetFont('rumpelstiltskinwebfont', '', 14); 添加它使用文件名
自 TCPDF(版本 6.2.6)起,您可以直接使用 TCPDF_FONTS::addTTFfont
而不是 AddFont
。
TCPDF从ttf中制作出三个文件,并将它们放入TCPDF的“font”目录中。一旦创建这些,它们就可以用于所有未来的 PDF。
示例:
首先(为简单起见)我在 TCPDF 的字体文件夹中使用新字体的名称创建了一个文件夹,在我的示例中 "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);
我想向使用 TCPDF 生成的 pdf 添加自定义字体。我可能遗漏了一些东西,但 the docs 似乎已经过时了。他们引用了 addTTFfont()
函数,但我认为它已被弃用,并且在最新版本的 TCPDF 中不再存在。
我读到我需要转换 ttf 文件并将其放在 fonts 文件夹中,所以我 运行:
php/tcpdf/tools/tcpdf_addfont.php -i php/font/rumpelstiltskin-webfont.ttf
它生成了这些文件,这些文件现在位于字体文件夹中:
rumpelstiltskinwebfont.ctg.z
rumpelstiltskinwebfont.z
rumpelstiltskinwebfont.php
然后我尝试添加字体:
$pdf->addFont('rumpelstiltskin');
$pdf->SetFont('rumpelstiltskin', '', 14, '', false);
但我收到一个错误:
TCPDF ERROR: Could not include font definition file: rumpelstiltskin
我解决了我的问题,我快到了。
这里是一个步骤:
首先使用 TCPDF 工具文件夹中的 tcpdf_addfont.php 工具字体转换您的字体:
php/tcpdf/tools/tcpdf_addfont.php -i php/font/rumpelstiltskin-webfont.ttf
这将生成所需的文件并将它们放入 TCPDF 字体文件夹中。检查字体文件夹并复制字体名称,在我的例子中是 rumpelstiltskinwebfont
.
在您的代码中使用字体文件的名称设置字体并写入一行文本:
$pdf->SetFont('rumpelstiltskinwebfont', '', 14, '', false);
$pdf->Write(0, 'Fill text', '', 0, '', true, 0, false, false, 0);
就是这样。希望这对某人有帮助。 :)
在 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()
!
您可以使用http://fonts.palettize.me转换ttf字体,然后将字体文件夹中的未压缩结果放入tcpdf class。然后你可以用 $pdf->SetFont('rumpelstiltskinwebfont', '', 14); 添加它使用文件名
自 TCPDF(版本 6.2.6)起,您可以直接使用 TCPDF_FONTS::addTTFfont
而不是 AddFont
。
TCPDF从ttf中制作出三个文件,并将它们放入TCPDF的“font”目录中。一旦创建这些,它们就可以用于所有未来的 PDF。
示例: 首先(为简单起见)我在 TCPDF 的字体文件夹中使用新字体的名称创建了一个文件夹,在我的示例中 "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);