所以我现在正在用PDFlib编写一个PHP程序,在生成PDF时得到了以下错误:"PDFlib异常发生:1434font:选项‘info_textline’有坏的字体句柄0“。
下面是出现错误的函数:
function createHeaderText(PDFlib $p, int $textStartLeft, int $fontMedium, int $fontRegular) {
$y = 719;
$x = $textStartLeft;
$pageHeading = "Lorem ipsum dolor sit amet, consetetur sadipscing";
$reference = "Referenzobjekt";
$optlist = "font=" . $fontMedium .
" fontsize=16" .
" fillcolor=white" .
" wordspacing=0";
$infoHeight = $p->info_textline($pageHeading, 'objectheight', $optlist);
$p->fit_textline($pageHeading, $x, $y, $optlist);
$y = $y - ($infoHeight + 11);
$optlist = "font=" . $fontRegular .
" fontsize=12" .
" fillcolor=white" .
" wordspacing=0";
$infoHeight = $p->info_textline($pageHeading, 'objectheight', $optlist);
$p->fit_textline($pageHeading, $x, $y, $optlist);
return $y - ($infoHeight + 27.5);
}这是我的字体句柄:
$fontMedium = $p->load_font('fonts/NotoSerif-Medium', 'unicode', 'embedding');
$fontRegular = $p->load_font('fonts/NotoSerif-Regular', 'unicode', 'embedding');
$fontItalic = $p->load_font('fonts/NotoSerif-Italic', 'unicode', 'embedding');也许有人能帮我解决这个问题,这会对我有很大帮助。
发布于 2021-08-18 06:55:05
您必须始终检查load_font()返回的字体句柄是否实际有效。在PHP绑定中,必须检查load_font()返回的字体句柄是否是非零。如果为零,则发生错误,您必须通过调用$p->get_errmsg()来检索错误原因,以找出错误所在。
显式检查句柄的另一种方法是设置选项errorpolicy=exception,如下所示:
$p->set_option("errorpolicy=exception");那么像加载字体失败这样的错误就会导致异常。
现在来看看问题的潜在根源:可能PHP进程没有访问fonts目录的权限,这是因为PHP进程的当前工作目录不是存储您的Noto字体的fonts目录的父目录,或者因为权限问题。
在任何情况下,检查load_font()的返回值并检索错误消息都是解决问题的第一步。
https://stackoverflow.com/questions/68822326
复制相似问题