用tcpdf创建PDF在iPhone上显示为空白?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (85)

我使用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的字体。iPhone的不能读取dejavusans:)我把它改成了‘Time’,它工作得很好。

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

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

提问于
用户回答回答于

不确定它在没有AddFont方法的情况下是如何工作的,但是我有相同的问题,并添加了第四个Param$Set=false修复了它。

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

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

dejavusans修复了许多多字节字符的问题,因此不可能简单地更改Helvetica。通过进行此更改,我们发现PDF文件的大小超过了原来的两倍。

这与@user3548394的想法差不多,但只需要做一次更改。

用户回答回答于

更改以下行:

$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);

然后检查一下。

扫码关注云+社区

领取腾讯云代金券