php – 不能用tcpdf生成pdf

在我的网站上,用户可以打印(以pdf格式)他接受的nda
由于某种原因我无法显示pdf

这里的逻辑

首先重写规则

.htaccess
RewriteRule ^nda/?$ndapdf.PHP?useSessionUser=1 [L]

然后PHP

<?PHP

$html = file_get_contents("/lib/nda.txt");
$html = str_replace("##user##",$_SESSION["currentUser"]);
$html = str_replace("##date##",date("Y-m-d h:i:s"));

require("/lib/web/tcpdf/config/lang/eng.PHP");
require("/lib/web/tcpdf/tcpdf.PHP");
$pdf = new TCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMAT,true,"UTF-8",false);
$pdf->SetCreator("mysite");
$pdf->SetAuthor("author_name");
$pdf->SetTitle("NDA");
$pdf->SetSubject("Accepted NDA");

$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN,"",PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA,PDF_FONT_SIZE_DATA));

$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetAutopageBreak(TRUE,PDF_MARGIN_BottOM);
$pdf->setLanguageArray(array("w_page" => ""));
$fontname = $p->addTTFfont("/fonts/AveriaSans-light.ttf","TrueTypeUnicode",32);
$pdf->SetFont("arial",10);
$pdf->AddPage();
$pdf->writeHTML($html,false,"");
$pdf->lastPage();

$pdf->Output("/home/comp/pdf/nda/$currentUser.pdf","F");
header("Content-Type: application/pdf\n");
read("/home/comp/pdf/nda/$currentUser.pdf");

我得到:

“TCPDF错误:无法包含字体定义文件:AveriaSans-light”

字体是:ll / fonts /

-rw-r--r-- 1 root root  85084 2011-11-02 17:51 AveriaSans-Light.ttf

谢谢

我认为问题是,TCPDF的目录缓存和字体(驻留在文件夹中的路径存储在常量K_PATH_MAIN中,认情况下是TCPDF目录)不能由您的Web服务器写入.不要将自己的字体目录与TCPDF内部使用的字体混淆.

fonts目录必须是可写的,因为addTTFfont首先转换TTF文件,并将转换的输出写入fonts目录.如果稍后将SetFont与“AveriaSans-light”一起使用,则会尝试包含这些文件,如果未找到,则会尝试使用“无法包含字体定义文件”.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...