PDFlib 错误字体句柄
PDFlib bad font handle
所以我目前正在用 PDFlib 编写 PHP 程序,在生成 PDF 时出现以下错误:
“发生 PDFlib 异常:[1434] info_textline:选项 'font' 有错误的字体句柄 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');
也许有人可以帮我解决这个问题,这对我有很大帮助。
您必须始终检查 load_font()
编辑的 return 字体句柄是否确实有效。在 PDFlib PHP 绑定中,您必须检查由 load_font()
编辑的字体句柄 return 是否为非零。如果为零,则发生错误,您必须通过调用 $p->get_errmsg()
来检索错误原因以找出问题所在。
显式检查句柄的另一种方法是像这样设置选项 errorpolicy=exception
:
$p->set_option("errorpolicy=exception");
那么会出现加载字体失败之类的错误导致异常
现在是问题的潜在根本原因:可能是 PHP 进程无法访问 fonts
目录,或者是因为 PHP 进程的当前工作目录不是存储 Noto 字体的 fonts
目录的父目录,或者因为权限问题。
无论如何,检查 load_font()
的 return 值并检索错误消息是解决问题的第一步。
所以我目前正在用 PDFlib 编写 PHP 程序,在生成 PDF 时出现以下错误: “发生 PDFlib 异常:[1434] info_textline:选项 'font' 有错误的字体句柄 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');
也许有人可以帮我解决这个问题,这对我有很大帮助。
您必须始终检查 load_font()
编辑的 return 字体句柄是否确实有效。在 PDFlib PHP 绑定中,您必须检查由 load_font()
编辑的字体句柄 return 是否为非零。如果为零,则发生错误,您必须通过调用 $p->get_errmsg()
来检索错误原因以找出问题所在。
显式检查句柄的另一种方法是像这样设置选项 errorpolicy=exception
:
$p->set_option("errorpolicy=exception");
那么会出现加载字体失败之类的错误导致异常
现在是问题的潜在根本原因:可能是 PHP 进程无法访问 fonts
目录,或者是因为 PHP 进程的当前工作目录不是存储 Noto 字体的 fonts
目录的父目录,或者因为权限问题。
无论如何,检查 load_font()
的 return 值并检索错误消息是解决问题的第一步。