使用tcpdf创建PDF在iphone上显示为空白

时间:2013-01-17 20:15:51

标签: php tcpdf

我使用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复制到该目录。

Blank PDF

修改:已解决

我发现这是我用来制作PDF的字体。 iPhone无法读取dejavusans :)我将其更改为'次'并且工作正常

修改:更新

由于这篇文章我不得不用tcpdf创建更多PDF文件,而我无法解释为什么有些字体不起作用,而我最近在http://www.tcpdf.org/fonts.php处应用了一些建议并且应用了< / p>

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

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

4 个答案:

答案 0 :(得分: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);

然后检查。

答案 1 :(得分:1)

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

  

$ subset(mixed)如果为true,则仅嵌入字体的子集(仅限存储   与使用过的字符有关的信息);如果错误嵌入   字体;如果'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的想法相同,但只需要进行一次更改。

答案 2 :(得分:0)

检查您使用的字体类型,就像html一样,但它不会后退。

答案 3 :(得分:0)

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