tfpdf - 无法打开文件C:\ webprojects \ www \ diners / font / unifont / DejaVuSansCondensed.ttf

时间:2015-11-14 18:38:16

标签: php

tfpdf -Can't open file C:\webprojects\www\diners/font/unifont/DejaVuSansCondensed.ttf此文件名来自我的Windows本地系统?并在尝试从Web主机运行时显示。

require('tfpdf.php');
class PDF extends tFPDF {
    function Header(){
        global $title;
        // Select Arial bold 15
        $this->SetFont('Arial','B',15);
        // Move to the right
        $this->Cell(20);
        // Framed title
        $this->Cell(150,10,$title,1,0,'C');
        // Line break
        $this->Ln(20);
    }
}
// Which pdf are we going to produce
$report=$_POST['report'];
$pdf = new PDF();
$pdf->AddPage();
$pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->AddFont('DejaVu','B','DejaVuSansCondensed-Bold.ttf',true);
//$pdf->SetTitle($title);
$jmcFont='Times';
switch($report) { 
    case "list":
    $pdf->SetFont($jmcFont,'B',14);$pdf->Cell(40,10,'Diners');$pdf->Ln(10); 
    foreach($diners as $d) {
        if ($d['attending']==1) {
            $x=explode('|',$d['menuchoice']);  
            $pdf->SetFont($jmcFont,'B',10);
            $pdf->Write(5, $d['fname'].' '.$d['sname'].':-');
            $pdf-setfont($jmcFont,'',10);
            $pdf->Write(5, $starter[$x[0]].'-'.$mains[$x[1]].'-'.$sweet[$x[2]].'Note:'.$d['apology']);
            $pdf->Ln(7);           
        }
    }

如果

,代码可以正常工作
$pdf->AddFont('DejaVu','','DejaVuSansCondensed.ttf',true);
$pdf->AddFont('DejaVu','B','DejaVuSansCondensed-Bold.ttf',true); 
    lines are commented out.

为什么要尝试引用我的Windows系统?

2 个答案:

答案 0 :(得分:6)

项目中有一个内部缓存。在第一次运行时,程序保存字体的路径,在Dejavu字体情况下它是DejaVuSansCondensed.mtx.php

$ttffile='/Users/user/WebstormProjects/php/pdf/tfpdf/font/unifont/DejaVuSansCondensed.ttf';

这是一个大问题,明智的开发人员应该避免这种情况,因为您的本地配置可能出现在生产中。 对于快速解决方案,只需在发布之前删除*.mtx.php文件,或者永远不要将它们提交到源存储库。

答案 1 :(得分:0)

该链接位于生成的字体文件DejaVuSansCondensed-Bold.mtx.php和DejaVuSansCondensed.mtx.php中。删除Windows引用后,所有工作正常。