【问题标题】:Creating PDF with tcpdf shows blank on iphone使用 tcpdf 创建 PDF 在 iphone 上显示为空白
【发布时间】:2013-01-01 11:34:01
【问题描述】:

我正在使用 tcpdf 从 HTML 生成 PDF。一切正常,当我在计算机上查看 PDF 时,我可以正常查看,但由于某种原因,当我在 iPhone 上查看 PDF 时,它显示为空白。我只能看到我创建的边框,其中包含值,但没有显示任何值。

这是我的代码

require_once('/tcpdf/tcpdf/config/lang/eng.php');
require_once('/tcpdf/tcpdf/tcpdf.php');
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setLanguageArray($l);
$pdf->SetFont('dejavusans', '', 10);
$pdf->AddPage();
$html = file_get_contents('http://www.website.com/invoice.php?invoice_id='.$invoice_id);
$pdf->writeHTML($html, true, false, true, false, '');
$pdf->lastPage();
$pdf->Output('/html/admin/emailattachements/invoice.pdf', 'F');

在最后一行。当我稍后使用电子邮件脚本抓取 PDF 并将其发送给客户时,我会将其复制到该目录。

编辑:已解决

我发现这是我用来生成 PDF 的字体。 iPhone 无法读取 dejavusans :) 我将其更改为“times”,它工作正常

编辑:更新

自从这篇文章以来,我不得不用 tcpdf 创建更多的 PDF,虽然我无法真正解释为什么有些字体不起作用,而另一些字体我最近在 http://www.tcpdf.org/fonts.php 上应用了一些建议并应用了

$fontname = $pdf->addTTFfont('/path-to-font/DejaVuSans.ttf', 'TrueTypeUnicode', '', 32);

通过手动添加字体并设置字体文件路径并手动上传文件,我能够获得现有的不起作用的字体并真正让它们工作。

【问题讨论】:

  • Ummmm...你的代码是什么,所以我们也许可以重复这项工作。
  • 现在看了不知道是不是字体
  • 哈哈,就是这样。是字体 :) 我把它改成了 'times' 就可以了
  • 我不太确定它为什么不工作那么容易解释......我有两个几乎相同的文件。一个与 dejavusans 一起工作,另一个则不。更改为 helvetica 有效。
  • 我在 akeebasubs 发票上也遇到过这个问题(它使用 tcpdf)。问题出现在运行 ios5 的 iphone 和运行 ios7 的 ipad 上。

标签: php tcpdf


【解决方案1】:

更改以下行:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

$pdf->SetFont('dejavusans', '', 10);

收件人:

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, false, 'ISO-8859-1', false);

$pdf->SetFont('helvetica', '', 10, '', true);

然后检查。

【讨论】:

    【解决方案2】:

    如果没有 AddFont 方法,不确定它如何为您工作,但我遇到了同样的问题,添加第四个参数 $subset = false 解决了它。

    $subset (mixed) if true 仅嵌入字体的子集(仅存储 与所用字符有关的信息);如果假嵌入满 字体;如果 'default' 使用设置的默认值 设置字体子设置()。此选项仅对 TrueTypeUnicode 有效 字体。如果要允许用户更改文档,请设置此 参数为假。如果您对字体进行子集化,则接收人 您的 PDF 需要使用相同的字体才能更改 你的PDF。 PDF 的文件大小也会更小,因为您 只嵌入字体的一部分。

    $pdf->AddFont('dejavusans', '', 'dejavusans', false);
    $pdf->AddFont('dejavusans', 'B', 'dejavusans', false);
    
    $pdf->SetFont('dejavusans', '', 10);
    

    dejavusans 修复了多字节字符的一些问题,因此无法简单地更改为 helvetica。通过进行此更改,我们发现 PDF 的大小增加了一倍以上。

    这与@user3548394 的想法有点相同,但只需进行一次更改。

    【讨论】:

    • 哇大小增加了一倍多 16kb 到 734kb
    【解决方案3】:

    检查您使用的字体类型,类似于 html,但不会回退。

    【讨论】:

      【解决方案4】:

      使用静态文本创建 pdf 并检查。

      【讨论】:

        猜你喜欢
        • 2015-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-10
        • 1970-01-01
        • 2014-05-15
        • 2015-03-22
        相关资源
        最近更新 更多