【问题标题】:DomPDF - addInfo (base64_encode) and setEncryptionDomPDF - addInfo (base64_encode) 和 setEncryption
【发布时间】:2018-07-02 11:21:19
【问题描述】:

我在使用 setEncryption 函数的 DomPDF 和 base64_encode 方面遇到问题。

这是我的代码示例。

    // Render the HTML as PDF
    $dompdf->render();

    //Encode title into base64 and add it to PDF Meta
    $title_64 = base64_encode( $title );
    $dompdf->getCanvas()->get_cpdf()->addInfo( 'Subject' , $title_64 );

    //Locking pdf to allow printing only
    $dompdf->getCanvas()->get_cpdf()->setEncryption( '' , '' , array( 'print' ) );

    // Output the generated PDF to Browser
    $dompdf->stream( $post->post_name . ".pdf" , array( "Attachment" => TRUE ) );

下载 PDF 后,几乎所有元数据都丢失了。

一旦我删除了包装$title 元数据的base64_encode 函数,它就回来了。

如果我保留base64_encode 但我删除了

$dompdf->getCanvas()->get_cpdf()->setEncryption( '' , '' , array( 'print' ) );

似乎一切正常,但我可以修改我不想要的 PDF。

作为我的最终结果,我应该只能打印我现在拥有的 PDF + 所有元数据

base64_encoded

有人遇到过类似的问题吗?

【问题讨论】:

  • 为什么元数据应该是base-64编码的?这没有任何意义......
  • 这是一个客户请求,必须这样做。
  • 你能分享一个示例输出“与”“缺失”数据吗?

标签: php wordpress pdf pdf-generation dompdf


【解决方案1】:

这是 DomPDF 使用的 CPDF 类/版本中的一个错误。加密字符串未正确转义:

/Producer (Œa6Sq©åðÇ9Å—ÙÒ°Çl¡ÿÝøVóVѪ!Õñ¶7(Þýä¡)

在字符串的末尾附近有一个左括号,它没有转义也没有平衡。

these lines 中的逻辑错误。字符串在加密之前被转义,这是完全错误的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多