亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

受密碼保護(hù)的 PDF 無法在 PHP 中打開 DOMPDF
P粉950128819
P粉950128819 2024-03-26 13:33:59
0
1
658

我使用以下代碼創(chuàng)建了密碼保護(hù),

$dompdf = new Dompdf(array('enable_remote' => true));
$dompdf->loadHtml($html_print);
#(Optional) Setup the paper size and orientation
$dompdf->setPaper('A4', 'landscape');
#Render the HTML as PDF
$dompdf->render();
#PASSWORD PROTECTION
$dompdf->getCanvas()
    ->get_cpdf()
    ->setEncryption(1234, 5678, ['print', 'modify', 'copy', 'add']);
#Output the generated PDF to Browser
$dompdf->stream($filename);
#SAVE THE FILE TO SERVER
$output = $dompdf->output();
$filename =  $filename.'-'.time().'.pdf';
file_put_contents('../documents/'.$filename, $output);

當(dāng)我下載文件時(shí)它工作得很好。

在下載之前,我也將此文件保存在服務(wù)器中。但是當(dāng)我稍后嘗試下載該文件時(shí),它無法使用正確的密碼打開。如果我沒有設(shè)置密碼保護(hù),它可以順利工作

誰能幫我嗎?

P粉950128819
P粉950128819

全部回復(fù)(1)
P粉428986744

發(fā)現(xiàn)問題了。加密信息數(shù)組上有一個(gè)名為“p”的密鑰,他們將其稱為“p 值”。當(dāng) PDF 被流式傳輸時(shí),p 值從 252 變?yōu)?-4。執(zhí)行此操作的代碼部分有注釋:

由于 p 值在第一次輸出期間發(fā)生變化,因此第二次輸出 pdf 時(shí),它會(huì)使用錯(cuò)誤的值寫入文件。

在我看來,你有兩種解決方法。第一種方法是先將 PDF 輸出到文件,然后編寫自己的代碼將該文件回顯到瀏覽器,或者您可以重置流和輸出之間的 p 值,如下所示:

#PASSWORD PROTECTION
$cpdf = $dompdf->getCanvas()
    ->get_cpdf();

$cpdf->setEncryption(1234, 5678, ['print', 'modify', 'copy', 'add']);

#Output the generated PDF to Browser
$infoB4 = $cpdf->objects[$cpdf->arc4_objnum]['info'];
$dompdf->stream($filename);

#SAVE THE FILE TO SERVER
$cpdf->objects[$cpdf->arc4_objnum]['info'] = $infoB4;
$output = $dompdf->output();

希望對(duì)您有所幫助。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板