如何在TCPDF中实现自定义字体

本文概述

  • 重要事项, 请继续
  • 1.下载所需字体的源文件
  • 2.生成TCPDF使用的字体文件
  • A.使用免费的在线服务
  • B.在更新版本的TCPDF中使用命令行工具
  • 例子
并非每个公司都使用相同的字体。通常, 每一种东西都有需要字体的字体, 例如徽标, 标语, 传单, 访问卡和发票。由于TCPDF的简单性, 它被广泛用于从HTML即时生成PDF。 TCPDF最令人敬畏的功能之一是你可以嵌入几乎任何类型的Font(TrueType格式), 但是并不是每个开发人员都知道如何轻松地实现它。在本文中, 我们想向你展示向TCPDF添加新的自定义字体有多么容易。
重要事项, 请继续 你只能将TTF或OTF字体导入到TCPDF中, 这意味着你将使用UTF-8编码, 因此请确保使用设置为true和utf-8的unicode格式实例化PDF:
< ?php$unicode = true; $format = "UTF-8"; $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, "letter", $unicode, $format, false);

否则, 当你生成PDF时, 你会看到奇怪的字符, 而不是所需的字符。话虽如此, 让我们继续吧!
1.下载所需字体的源文件 为了使该示例易于理解并说明向TCPDF添加自定义字体有多么容易, 我们将使用一种非常奇怪的自定义字体, 即Just Beautiful Simplicity。值得一说的是, 也许没有人想要在PDF上使用这种字体:
如何在TCPDF中实现自定义字体

文章图片
但是如上所述, 这只是一个演示。你可以自由选择想要的字体类型, 例如Roboto, Arial等。从字体的源文件中, 你将需要带有TTF扩展名的文件, 因为在你可以找到的每种字体上都很容易找到这些文件。如果你在Google上搜索字体的源文件, 就可以很容易地找到它, 通常会找到带有几个文件的zip文件, 这些文件代表不同字体类型的字体。
注意 在使用字体之前进行验证非常重要, 它也支持特殊字符(TrueType unicode)。
2.生成TCPDF使用的字体文件 TCPDF不能直接使用字体文件来嵌入TrueType字体(.TTF)文件, 而是需要提取字体规格并使用TCPDF库上提供的实用程序来构建所需的表。有2个选项可以从TCPDF字体生成3个必需文件, 你可以使用适用于任何TCPDF版本的免费在线服务, 也可以使用更新版本的TCPDF上的命令行工具:
A.使用免费的在线服务 对于任何版本的TCPDF, 你都可以依靠免费的在线服务来生成该版本所需的文件。如果检查TCPDF库的fonts文件夹, 将看到3种文件类型:
  • 字体文件已压缩([fontname] .z)
  • CIDToGIDMap已创建并压缩([字体名称] .ctg.z)
  • 生成的字体定义文件([fontname] .php)
例如, 对于我们的字体, 你将需要3个文件:
  • justbeatifulsimplicity.ctg.z
  • justbeatifulsimplicity.z
  • justbeatifulsimplicity.php
你可以使用此在线工具从TTF文件生成提到的文件。上传文件并下载服务生成的文件后, 将它们存储在tcpdf / fonts文件夹中。按照上述任何步骤以及任何版本进行操作之后, 你将在tcpdf / fonts文件夹中找到一些新文件。它们以TCPDF所需的格式表示字体。现在, 你只需在PDF的SetFont方法中键入字体的名称, 就可以了。
B.在更新版本的TCPDF中使用命令行工具 使用更新版本的TCPDF, 有两种方法可以实现你的目标:
B.A使用命令行实用程序
在tcpdf / tools文件夹中, 你将找到tcpdf_addfont.php文件。可以通过以下方式在命令行中使用它:
php tcpdf_addfont.php i- [your-font.ttf]

该命令将在项目的tcpdf / fonts文件夹内自动创建所需的文件, 并显示可在代码中使用的字体名称。例如, 使用其他字体(“ 爱丽丝与邪恶的怪物” )时, 命令行显示以下输出:
如何在TCPDF中实现自定义字体

文章图片
B.B手动编写脚本
如果你不愿意使用命令行创建文件, 则可以手动使用命令行使用的类。 TCPDF_FONTS类提供了静态方法addTTFfont来创建文件。你可以使用以下代码, 将其存储到PHP文件(build-fonts.php)中, 然后使用php build-fonts.php运行它。请注意, 你需要替换字体路径:
< ?php // Add more files if the font offers for// Bold styles, Oblique etc.$pathTTFFiles = array('justbeautifulsimplicity.ttf'); foreach($pathTTFFiles as $ttfFile){$fontname = TCPDF_FONTS::addTTFfont($ttfFile, 'TrueTypeUnicode', '', 96); echo "The processed font '$ttfFile' can be used with the name: $fontname"; }

注意 通常, 你不使用单一字体格式, 而是使用诸如Bold, Oblique等之类的更多表示形式。pathTTFFiles是一个数组, 其中包含要导入的所有字体的路径。
例子 要使用先前的字体生成PDF, 我们只需要在PDF的SetFont方法中设置生成字体的名称即可:
< ?php // Create new PDF$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // Set Font, not the TTF file but the php filename inside tcpdf/fonts$pdf-> SetFont("justbeautifulsimplicity", '', 10);

在打印一些HTML的情况下, 在使用之前的代码生成PDF之后, 你将获得带有自定义字体的PDF:
如何在TCPDF中实现自定义字体

文章图片
【如何在TCPDF中实现自定义字体】编码愉快!

    推荐阅读