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系统?
答案 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引用后,所有工作正常。