php – 不能用tcpdf生成pdf

前端之家收集整理的这篇文章主要介绍了php – 不能用tcpdf生成pdf前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的网站上,用户可以打印(以pdf格式)他接受的nda
由于某种原因我无法显示pdf

这里的逻辑

首先重写规则

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

然后PHP

  1. <?PHP
  2.  
  3. $html = file_get_contents("/lib/nda.txt");
  4. $html = str_replace("##user##",$_SESSION["currentUser"]);
  5. $html = str_replace("##date##",date("Y-m-d h:i:s"));
  6.  
  7. require("/lib/web/tcpdf/config/lang/eng.PHP");
  8. require("/lib/web/tcpdf/tcpdf.PHP");
  9. $pdf = new TCPDF(PDF_PAGE_ORIENTATION,PDF_UNIT,PDF_PAGE_FORMAT,true,"UTF-8",false);
  10. $pdf->SetCreator("mysite");
  11. $pdf->SetAuthor("author_name");
  12. $pdf->SetTitle("NDA");
  13. $pdf->SetSubject("Accepted NDA");
  14.  
  15. $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN,"",PDF_FONT_SIZE_MAIN));
  16. $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA,PDF_FONT_SIZE_DATA));
  17.  
  18. $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
  19. $pdf->SetAutoPageBreak(TRUE,PDF_MARGIN_BOTTOM);
  20. $pdf->setLanguageArray(array("w_page" => ""));
  21. $fontname = $p->addTTFfont("/fonts/AveriaSans-light.ttf","TrueTypeUnicode",32);
  22. $pdf->SetFont("arial",10);
  23. $pdf->AddPage();
  24. $pdf->writeHTML($html,false,"");
  25. $pdf->lastPage();
  26.  
  27. $pdf->Output("/home/comp/pdf/nda/$currentUser.pdf","F");
  28. header("Content-Type: application/pdf\n");
  29. read("/home/comp/pdf/nda/$currentUser.pdf");

我得到:

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

字体是:ll / fonts /

  1. -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”一起使用,则会尝试包含这些文件,如果未找到,则会尝试使用“无法包含字体定义文件”.

猜你在找的PHP相关文章