DomPDF - addInfo(base64_encode)和setEncryption

时间:2018-01-23 15:19:28

标签: php wordpress pdf pdf-generation dompdf

我遇到了使用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,所有元数据都会丢失。

我删除包裹base64_encode的{​​{1}}函数后,即可恢复元数据。

此外,如果我保留$title,但我会删除

base64_encode

一切似乎都在起作用,但我能够修改我不想要的PDF。

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

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

有没有人遇到类似问题?

1 个答案:

答案 0 :(得分:0)

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

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

在弦乐的末尾附近有一个开放的支架,它没有逃脱也没有平衡。

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