18

我正在使用 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

编辑:已解决

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

编辑:更新

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

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

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

4

4 回答 4

2

更改以下行:

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

然后检查。

于 2014-04-21T12:07:41.237 回答
1

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

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

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

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

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

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

于 2014-06-06T13:12:20.847 回答
0

检查您正在使用的字体类型,就像 html,但它不会回退。

于 2014-02-28T06:09:12.627 回答
0

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

于 2014-03-11T07:32:40.587 回答