TCPDF - 在 iPad 上查看 PDF 时不显示嵌入的 ttf 字体
Posted
技术标签:
【中文标题】TCPDF - 在 iPad 上查看 PDF 时不显示嵌入的 ttf 字体【英文标题】:TCPDF - embedded ttf fonts not showing when PDF is viewed on iPad 【发布时间】:2013-02-23 05:01:48 【问题描述】:我创建了一个使用 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');
【问题讨论】:
“不显示”是什么意思 - 文本实际上完全不存在?您能否分享其中一个 PDF 以便查看? 您好,感谢您的回复,字体可以在 chrome pdf 阅读器和 safari 上看到,但不能通过 iPhone / iPad 上的标准查看器看到。这是一个选择字体的示例,所有字体都通过大多数查看器显示,iPhone 上缺少一些。根据 Acrobat 的说法,它们显然是“嵌入式子集”,任何想法都会非常有帮助。 s316279697.websitehome.co.uk/joe/banner790.pdf 我通过 callas pdfToolbox preflight 运行了您的文件(警告,我隶属于这家公司),我看到了两件可能很奇怪的事情。首先,您的文件还包含两种 Helvetica 字体,它们显然没有在页面上使用(并且没有嵌入)。您的文件还带有许多所使用的 Palatino 字体的错误。这是不显示的字体吗? 【参考方案1】:$subset 的参数错误。您将其设置为“假”(带引号)。它应该是布尔真值。
<?php
...
// Wrong
$pdf->SetFont($fontname, '', $fontPoints, '', 'false');
// Right
$pdf->SetFont($fontname, '', $fontPoints, '', true);
...
?>
为什么有效?
因为它嵌入了整个字体,而不仅仅是一个子集。 诀窍是将方法 $pdf->SetFont() 中的参数 $subset 设置为 true。
http://www.tcpdf.org/doc/code/classTCPDF.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
文件
Example PDF and a PHP Script to create it
【讨论】:
其实$subset应该设置为false(布尔型false,不在引号中),这样整个字体才能嵌入到文档中,并正确出现在El Capital Preview、iOS等中。以上是关于TCPDF - 在 iPad 上查看 PDF 时不显示嵌入的 ttf 字体的主要内容,如果未能解决你的问题,请参考以下文章