【问题标题】:pdf_load_font() function, fatal errorpdf_load_font() 函数,致命错误
【发布时间】:2025-12-04 01:15:02
【问题描述】:
<?php  
     $pdf = pdf_new();  

     pdf_open_file($pdf, "philosophy.pdf");  

     pdf_begin_page($pdf, 595, 842);  

     $arial = pdf_load_font($pdf, "Arial", "host", "embedding=true"); 
     pdf_setfont($pdf, $arial, 10);  

     pdf_show_xy($pdf, "There are more things in heaven and earth, Horatio,", 50, 750); 
     pdf_show_xy($pdf, "than are dreamt of in your philosophy", 50, 730);  

     pdf_end_page($pdf);  

     pdf_close($pdf);  
?>

我在互联网上找到了这段代码,只是为了观察 PDFLib 是如何工作的。但是,它给了我以下错误:

致命错误:未捕获的异常“PDFlibException”和消息“字体” 带有编码“host”的“Arial”:字体文件(AFM、PFM、TTF、OTF 等)或 在 C:\xampp\htdocs\test\pdf.php:8 中找不到主机字体' 堆栈跟踪:#0 C:\xampp\htdocs\test\pdf.php(8): pdf_load_font(资源 id #2, 'Arial', 'host', 'embedding=true') #1 {main} 投入 C:\xampp\htdocs\test\pdf.php 在第 8 行

【问题讨论】:

  • 好像没有安装那个字体。
  • 阅读错误信息,它会告诉您问题所在。您需要上述格式之一的字体文件。
  • 我的电脑中安装了 Arial 字体。而且是TTF格式
  • 尝试跟踪 PHP 解释器以查看它试图在哪里找到字体。 IE。在 Linux 上:strace php myscript.php

标签: php pdflib


【解决方案1】:

我认为 PDFLib 默认不查看 windows 的字体目录,这里是建议:

$fontdir = "C:\WINDOWS\Fonts"; 
pdf_set_parameter($pdf, "FontOutline", "arialMyName=$fontdir\arial.ttf");
$arial = PDF_findfont($pdf,"arialMyName","host",0 );

然后,您可以使用 pdf_setfont() 设置字体。

【讨论】: