8

我创建了一个使用 tcpdf 动态创建 PDF 并将字体嵌入 PDF 的网站。用户可以从一系列标准字体中进行选择,如 Arial、Verdana 等。然后系统直接从我的服务器中选择一个 ttf 字体并使用下面的代码嵌入。在大多数 pdf 查看器上可以很好地看到带有该字体的文本,但iPad/iPhone's查看器没有显示它。我下载了 Arial.ttf 的新(随机)版本作为测试(不确定文件中的差异,但现在似乎显示正常。

我需要为多种字体执行此操作,但我有点在黑暗中拍摄,因为我不知道字体中的什么可能导致它不被嵌入。有谁知道 ttf 字体中的什么会导致它不显示?在其他查看器上显示正常并显示嵌入到 Acrobat 文档属性中?

谢谢

$fontname = $pdf->addTTFfont('/tcpdf/fonts/custom/'.$ttfFile.'.ttf', 'TrueTypeUnicode', '', 32);

// 使用字体

$pdf->SetFont($fontname, '', $fontPoints, '', 'false');
4

1 回答 1

3

您的 $subset 参数错误。您将其设置为“假”(带引号)。它应该是布尔真。

    <?php
          ...
          // Wrong
          $pdf->SetFont($fontname, '', $fontPoints, '', 'false');

          // Right
          $pdf->SetFont($fontname, '', $fontPoints, '', true); 
          ...
    ?>

为什么它有效?

因为它嵌入了整个字体,而不仅仅是一个子集。诀窍是将方法 $pdf->SetFont() 中的参数 $subset 设置为 true。

http://www.tcpdf.org/doc/code/classTCPPDF.html#a471562985997be1573d387f0aeae6964

PDF 正在使用

iPad (IOS 7)、iPhone (IOS 7)、Windows 7、MACOSX 10.9。

我的 PDF 创建环境

MAC 10.9 上的 Apache 2、PHP 5.3.x、TCPDF v6.0.078

文件

示例 PDF 和创建它的 PHP 脚本

于 2014-05-22T16:15:31.877 回答