首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PDFlib错误的字体句柄

PDFlib错误的字体句柄
EN

Stack Overflow用户
提问于 2021-08-17 18:23:30
回答 1查看 71关注 0票数 0

所以我现在正在用PDFlib编写一个PHP程序,在生成PDF时得到了以下错误:"PDFlib异常发生:1434font:选项‘info_textline’有坏的字体句柄0“。

下面是出现错误的函数:

代码语言:javascript
复制
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);
}

这是我的字体句柄:

代码语言:javascript
复制
$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');

也许有人能帮我解决这个问题,这会对我有很大帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-18 06:55:05

您必须始终检查load_font()返回的字体句柄是否实际有效。在PHP绑定中,必须检查load_font()返回的字体句柄是否是非零。如果为零,则发生错误,您必须通过调用$p->get_errmsg()来检索错误原因,以找出错误所在。

显式检查句柄的另一种方法是设置选项errorpolicy=exception,如下所示:

代码语言:javascript
复制
$p->set_option("errorpolicy=exception");

那么像加载字体失败这样的错误就会导致异常。

现在来看看问题的潜在根源:可能PHP进程没有访问fonts目录的权限,这是因为PHP进程的当前工作目录不是存储您的Noto字体的fonts目录的父目录,或者因为权限问题。

在任何情况下,检查load_font()的返回值并检索错误消息都是解决问题的第一步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68822326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档