个性化阅读
专注于IT技术分析

如何在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文件夹内自动创建所需的文件, 并显示可在代码中使用的字体名称。例如, 使用其他字体(“爱丽丝与邪恶的怪物”)时, 命令行显示以下输出:

命令行字体生成

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自定义字体示例

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在TCPDF中实现自定义字体

评论 抢沙发

评论前必须登录!