如何将TTF字体添加到html2pdf PHP程序


How to add TTF font to html2pdf PHP program

我正在尝试将 4.03 HTML2PDF与以下代码一起使用:

<?php
$content = "..."; # my HTML code
require_once(dirname(__FILE__).'/html2pdf_v4.03/html2pdf.class.php');
$html2pdf = new HTML2PDF('P','A4','en', true, 'utf-8', array(15,20,15,20) );
# here I'm trying to add my arial.ttf
$html2pdf->pdf->AddTTFFont('arial.ttf');
$html2pdf->WriteHTML($content);
$html2pdf->Output('exemple.pdf');
?>

现在程序是这样死的:

PHP Fatal error:  Call to undefined method HTML2PDF_myPdf::AddTTFFont()

如何将 TTF 字体添加到我的 PDF 文件中?

我已经使用以下方法设法将 1 种自定义字体添加到我的设置中。

首先使用以下方法将.ttf文件转换为 3 个单独的文件(.php .z 和 .ufm)字体转换器 将此系统生成的 3 个文件放入 TCPDF 的字体文件夹中。

现在,您可以使用以下命令为 PDF 设置默认字体

$html2pdf->setDefaultFont("the_name_you_called_your_font");

这很容易开始工作,尽管通过这种方法使用 2 种单独的字体,但我遇到了问题。不过我会想办法的

要在转换字体时扩展所选答案(按o11y_75),您需要使用特定名称来包括粗体和斜体变体。这样,您只能像这样添加一个字体定义

$html2pdf->AddFont('opensans', 'normal', 'opensans.php');
$html2pdf->setDefaultFont('opensans');

转换字体时,请命名它们,例如,如下所示:

default: opensans
bold: opensansb
italic: opensansi
bold italic: opensansbi
请注意,在

原始名称后面,您在每种情况下添加了 B、I 和 BI。我没有找到关于这个问题的文档,但我遵循了 TCPDF 已经附带的字体上的命名法,并且它有效。

如果要

添加多种字体,只需使用:

$html2pdf->addFont('opensansregular', '', 'opensansregular');
$html2pdf->addFont('opensansbold', '', 'opensansbold');

我建议您不要在上面指定的字体转换器中使用特殊字符。

然后在您的 CSS 中只需键入:

<style type="text/css">
<!--
.uppercase {
    text-transform: uppercase;
}
* {
    font-family: opensansregular;
}
h1, h2, h3, strong {
    font-family: opensansbold;
}
-->
</style>
HTML2PDF内部

与TCPDF一起工作。自版本 6.2.6 开始,TCPDF 有自己的对象来创建HTML2PDF所需的字体:TCPDF_FONTS

我已经解决了这个问题,如下所示:我在供应商目录中搜索了TCPDF,并在那里找到了字体目录。然后我创建了自己的单独PDF脚本,并使用它一次从ttf创建必要的字体文件。

usage: $fontname = TCPDF_FONTS::addTTFfont('vendor/tecnickcom/tcpdf/fonts/arialuni/arialuni.ttf', 'TrueTypeUnicode', '', 32);

有关更多详细信息,请参阅:https://stackoverflow.com/a/70337995/2320007