【问题标题】:TCPDF font not embadding, showing "..." on adobe readerTCPDF 字体未嵌入,在 adobe 阅读器上显示“...”
【发布时间】:2016-05-18 01:15:20
【问题描述】:

我使用这行代码在TCPDF中添加了很多字体

TCPDF_FONTS::addTTFfont('fonts/ArchitectsDaughter.ttf', 'TrueTypeUnicode', '', 96);
$pdf->AddFont("ArchitectsDaughter");

许多其他字体都在工作,但是这个不工作。 当我在阅读器中打开这个 pdf 时,它会显示这样的错误

无法提取嵌入字体“ArchitectsDaughter”。一些字符 可能无法正确显示或打印。

我正在以 pdf 格式导入 svg 文件。 这是我在pdf中插入的SVG文件,您可以从here获取PDF,这里是font file

这是 pdf 如何生成的完整代码。

$fileName='export';
$uploadPath = Config::get('constants.paths.uploads.images.base').'/'.$fileName.'.svg';

$pdf = new TCPDF();

TCPDF_FONTS::addTTFfont(dirname(dirname(dirname(dirname(__FILE__)))).'/vendor/font-awesome/fonts/ArchitectsDaughter.ttf', 'TrueTypeUnicode', '', 96);
TCPDF_FONTS::addTTFfont(dirname(dirname(dirname(dirname(__FILE__)))).'/vendor/font-awesome/fonts/Archivor.ttf', 'TrueTypeUnicode', '', 96);

$pdf->AddFont("Archivor");
$pdf->AddFont("ArchitectsDaughter");

$pdf->SetPrintHeader(false);
$pdf->SetPrintFooter(false);
$pdf->AddPage();
$pdf->ImageSVG($uploadPath, $x='', $y='', $w='', $h='', $link='', $align='', $palign='', $border=0, $fitonpage=true);
$filename = 'export.pdf';
$pdf->output($filename, 'D');
exit; 

其他字体适合我。不知道某些字体会发生什么。 解决办法是什么?

【问题讨论】:

  • 您可以在本地系统中导入和使用该字体吗?那么它是一个有效且可用的字体文件吗?您能否引用该文件的下载位置供其他人在这里进行测试?
  • @arkascha 我编辑了我的问题,你可以在那里看到 svg 和 pdf。谢谢建议
  • 我询问的是字体文件,而不是任何 svg 或 pdf,因为错误消息表明字体文件已损坏。
  • @arkascha 附加字体也有问题,道歉。
  • 嗯,字体文件乍一看似乎有效,而且我在打开 PDF 时也没有收到任何错误。但是,该字体不会在该文档中使用...您能否在问题中发布您的 php 代码的相关部分?那么字体文件的包含和使用呢?

标签: php fonts tcpdf


【解决方案1】:

根据文档TCPDF_FONTS::addTTFfont() 将提供的字体永久添加到字体文件夹并返回其名称。所以没有理由每次都添加它,但必须使用正确名称的添加字体。

// ...

$pdf = new TCPDF();

$fontArchitectsDaughter = TCPDF_FONTS::addTTFfont(realpath(__DIR__ . '/../../../vendor/font-awesome/fonts/ArchitectsDaughter.ttf'), 'TrueTypeUnicode', '', 96);
$fontArchivor = TCPDF_FONTS::addTTFfont(realpath(__DIR__ . '/../../../vendor/font-awesome/fonts/Archivor.ttf'), 'TrueTypeUnicode', '', 96);

$pdf->AddFont($fontArchivor);
$pdf->AddFont($fontArchitectsDaughter);

// ...

【讨论】:

  • 做了同样的事情,但对我不起作用。还有其他解决方案吗?
【解决方案2】:

首先通过TCPDF_FONTS::addTTFfont() 设置字体或在字体目录中添加必要的文件(通过http://fonts.snm-portal.com 等TCPDF 字体转换器转换TTF 文件)

之后,激活字体:

$pdf->SetFont('FontAwesome','');

然后,用writeHTML函数写一个unicode字符,以开头,以;结尾 例如: 代表 f0c9(条形)图标 (http://fontawesome.io/icon/bars/):

$pdf->writeHTML('');

【讨论】:

    猜你喜欢
    • 2012-09-10
    • 2013-02-23
    • 2012-09-04
    • 2022-06-14
    • 2017-09-02
    • 2012-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    相关资源
    最近更新 更多