【问题标题】:How do you add custom fonts in TCPDF?如何在 TCPDF 中添加自定义字体?
【发布时间】:2015-07-05 22:15:28
【问题描述】:

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

我读到我需要转换 ttf 文件并将其放在字体文件夹中,所以我运行了:

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

【问题讨论】:

  • 也许您必须为 addFont 函数提供文件的完整路径。好像没有找到文件。
  • @Loopo 这不是它需要的完整路径,但您已经很接近了。我正在使用字体的名称,它想要文件名。感谢您的评论,它帮助我弄清楚了。
  • 我想你可以这样走:stackoverflow.com/questions/5263588/…

标签: php fonts tcpdf


【解决方案1】:

从 TCPDF(版本 6.2.6)开始,您可以直接使用 TCPDF_FONTS::addTTFfont 而不是 AddFont

TCPPDF 从 ttf 中制作三个文件,并将它们放入 TCPDF 的“字体”目录中。创建这些文件后,它们可用于所有未来的 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);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案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()的调用!

      【讨论】:

        【解决方案4】:

        我发现了我的问题,我快到了。

        这是一步一步的:

        首先使用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);
        

        就是这样。希望这可以帮助某人。 :)

        【讨论】:

        • 这个解决方案有效,但我不得不稍微修改命令行部分。我将 Arial 字体文件从 windows 字体目录复制到 TCPDF 中的字体目录。一旦我在命令行的 TCPDF 文件夹中运行: php tools/tcpdf_addfont.php -i fonts/arial.ttf
        猜你喜欢
        • 2011-07-12
        • 2019-08-22
        • 2022-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-06
        • 2020-04-19
        相关资源
        最近更新 更多