我使用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 :)我将其更改为'次'并且工作正常
修改:更新
由于这篇文章我不得不用tcpdf创建更多PDF文件,而我无法解释为什么有些字体不起作用,而我最近在http://www.tcpdf.org/fonts.php处应用了一些建议并且应用了< / p>
$fontname = $pdf->addTTFfont('/path-to-font/DejaVuSans.ttf', 'TrueTypeUnicode', '', 32);
通过手动添加字体并设置字体文件路径并手动上传文件,我能够获得不起作用的现有字体并实际让它们起作用。
答案 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并检查。