【问题标题】:URL embedded with <a href= in PDF file not working在 PDF 文件中嵌入 <a href= 的 URL 不起作用
【发布时间】:2021-12-29 09:04:28
【问题描述】:

我使用 PDFlib 使用 PHP 创建 PDF 文件。我正在尝试打印一个带有外部网站链接的新行。代码sn-p是:

     $slilink = 'a href="https://www.linkedin.com/in/watkanaidoo/">link to LinkedIn page /a>';
     //(I leave off the preceding '<' notation to display correctly here)
     $ly = $ly + 12;
     pdf_show_xy($pdf, "", 12, $ly);
     pdf_show_xy($pdf, "", 100, $ly);
     pdf_show_xy($pdf, "", 180, $ly);
     pdf_show_xy($pdf, $slilink, 320, $ly);

这会在 PDF 中显示一个显示整个字段的行,包括

如果我不使用 &lt;a href=,那么 URL 会正确显示,但无法点击!

【问题讨论】:

    标签: php pdf pdflib


    【解决方案1】:

    PDFlib 不是 HTML 到 PDF 的转换器,因此不会直接转换 HTML 元素。

    不过,您当然可以创建链接注释。

    • 首先使用create_action() 创建一个动作,
    • 然后使用fit_textline()输出文本。在那里,您可以在选项列表中指定带有名称的 matchbox 选项。
    • 这会将文本所需的空间计算为匹配框,然后您可以将带有create_annotation() 的链接注释应用于此匹配框。

    所以可能的代码片段如下所示:

    /* Create URI action */
    $optlist = "url={https://www.linkedin.com/in/watkanaidoo/}";
    $act = $pdf->create_action("URI", $optlist);
    
    $pdf->fit_textline('link to LinkedIn page', 320, $y, "matchbox {name=link}");
    
    /* Create Link annotation on matchbox "link" */
    $optlist = "action={activate " . $act . 
        "} linewidth=0 usematchbox={link}";
    $pdf->create_annotation(0, 0, 0, 0, "Link", $optlist);
    

    (另见https://www.pdflib.com/pdflib-cookbook/textflow/weblink_in_text/php/

    请注意,对于文本输出,我建议使用功能更强大的 fit_textline() 函数而不是 show_xy()

    功能性 PDFlib API(自 PDFlib 8 起已弃用)将 将在下一个 PDFlib 主要版本中删除,以支持面向对象的界面。因此,我相应地修改了代码示例。

    【讨论】:

    • Rainer - 谢谢你,但不幸的是我的主机服务器运行 PDFlib Lite,它不支持这个代码。有什么想法吗?
    • 此代码也适用于过时且受限的 PDFlib 7 Lite。您需要做的是使用旧的基于前缀的接口而不是 OOP 接口。 (即PDF_ 而不是$pdf-&gt;)。 fit_textline() 和火柴盒也适用于 PDFlib 7 Lite。但请注意,PDFlib 7 已于 2011 年 10 月达到 EOL。您不想再在公开可用的系统上使用此版本。
    猜你喜欢
    • 2017-04-28
    • 2019-03-01
    • 1970-01-01
    • 2017-10-01
    • 2012-01-29
    • 2012-11-21
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多