php TCPDF,“无法包含OpenType字体的字体定义文件”

trnvg8h3  于 2023-11-16  发布在  PHP
关注(0)|答案(8)|浏览(123)

我是一个网页程序员,对字体没有深入的了解,我正在努力让TCPDF包含我们自定义的OpenType字体。我们已经购买了OpenType字体文件(.oft),这些文件不受任何类型的DRM保护。
很多关于这个错误消息的问题最终得到了相同的建议。我已经为TCPDF(755)使用的文件夹设置了正确的文件权限,并且我使用addTTFfont()来包含.ttf TrueType字体没有问题,如下所示:
$pdf->addTTFfont('/path-to-font/DejaVuSans.ttf', 'TrueTypeUnicode', '', 32);
所以我编写了以下代码来包含OpenFont类型。addTTFfont()文档似乎表明支持OpenTypeUnicode和OpenType参数。
$pdf->addTTFfont('/path-to-font/customfont.otf', 'OpenTypeUnicode', '', 96);
结果是:
TCPDF ERROR: Could not include font definition file:
我们使用的是TCPDF v6.0.020,到目前为止,我一直在阅读TCPDF Fonts information page,但没有运气。我注意到TCPDF也有addFont()函数(文档在这里),它似乎更容易使用,因为它不包含任何对任何字体类型的引用。然而,我无法让这个函数使用它的小文档。
如有任何帮助,我们将不胜感激。

zpjtge22

zpjtge221#

你确定你在调用addTTFfont()的时候得到了这个错误吗?我问这个问题的原因是因为我检查了TCPDF代码(刚刚在“Could not include font definition file”上进行了全局搜索),并且该消息只出现在addFont()方法中。
这两种方法可能有点混乱,但我几个月前写了一些笔记,我将在下面部分复制,希望它能以某种方式帮助你:

  • addTTFfont()-此方法的主要功能是将字体从TTF(或OTF)转换为TCPDF需要的“原始”版本。理论上,使用它作为你的主要方法添加字体到一个文件.它会检查tcppdf字体文件夹第一,如果转换的文件不存在,它会继续进行转换.这只是一点点更多的开销,但仍然不是我的首选方法添加字体到文件,因为你需要知道什么风格的字体,你正在转换的过程中,甚至成功地工作。海事组织,最好使用这种方法来预转换任何字体,你计划使用和简单地使用addFont()添加“原始”版本的文档。
  • AddFont()-这将为文档添加一个“原始”(即已经转换的)字体,这意味着它可以用于编写文本。
  • SetFont()-设置你要写的下一段文字的字体。

因此,我会使用addTTFfont()将字体预转换为“原始”版本,然后在实际创建PDF的代码中使用addFont()setFont()
如果addFont()失败并出现上面的错误消息,这意味着它找不到字体定义文件。请记住,如果您使用样式集('i','b','bi'等)调用addFont(),它所做的就是将其附加到文件名(在扩展名之前)。
最重要的是,你需要确保你对addTTFFont()的调用是生成“原始”字体文件并将其保存到你的字体文件夹中。每个样式应该有三个文件,扩展名为.php.z.ctg.z。所以如果你转换了一个名为blah.ttf的字体,你最终会得到blah.phpblah.zblah.ctg.z。如果您转换blah bold.ttf,TCPDF将发现它是粗体字体,并将'b'附加到文件名的末尾:blahb.phpblahb.zblahb.ctg.z
希望会有一些金块在这里,将有助于!祝你好运!

pexxcrt2

pexxcrt22#

TCPDF新字体添加和土耳其字符问题的解决方法。
使用转换器链接:

  1. http://fonts.snm-portal.com
    1.下载3个文件,
    1.复制TCPDF-master/fonts
    1.文件大小:$pdf->SetFont('roboto','',14);
    x1c 0d1x的数据
woobm2wo

woobm2wo3#

用生成字体来解决这个问题。
确保所有路径正确。
使用此link
记住把文件夹make_font放在html2pdf的文件夹里
记住正确的路径:html2pdf.class.php在index.php文件夹make_font

如果您有其他问题- font:无法包含字体定义文件:
这是一个新字体的正确名称的问题。
例如,在生成PDF时使用:
正确:$html2pdf->addFont('lato i', '', 'latoi.php');
错误:$html2pdf->addFont('lato', '', 'latoi.php');
请记住,只有2个文件生成:
latoi.php
latoi.z
你不需要ctg文件。
我希望它能帮助

yk9xbfzb

yk9xbfzb4#

在我的情况下,问题是,字体路径不可写。我通过更改文件夹的权限修复了它:var_dump(K_PATH_FONTS);

olhwl3o2

olhwl3o25#

在我的例子中,它只是一个错误的路径到(没有更多的发现).ttf字体文件。为了测试,我成功地使用了驱动器D:/,但我忘记了在我的php文件中使用addTTFfont('C:/...')命令的代码行中将其更改回prod驱动器C:/
不幸的是,TCPDF错误消息没有输出任何关于源文件和产生问题的代码行的信息。

ewm0tg9j

ewm0tg9j6#

将dejavusans.php文件添加到font文件夹中tcppdf库中codeingiter库文件夹中。

5f0d552i

5f0d552i7#

“0jp”此字体支持日文和中文。

n3schb8v

n3schb8v8#

对我来说,HTML2PDF生成的字体只与«字体重量»

.font-bold {
    font-family: calibri_b;
    font-weight: 700;
}

字符串

相关问题