PDF yang dilindungi kata laluan tidak boleh dibuka dalam PHP DOMPDF
P粉950128819
P粉950128819 2024-03-26 13:33:59
0
1
407

Saya mencipta perlindungan kata laluan menggunakan kod berikut,

$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);

Ia berfungsi dengan baik apabila saya memuat turun fail.

Saya juga menyimpan fail ini dalam pelayan sebelum memuat turun. Tetapi apabila saya cuba memuat turun fail itu kemudian, ia tidak boleh dibuka dengan kata laluan yang betul. Jika saya tidak menetapkan perlindungan kata laluan ia berfungsi dengan lancar

Boleh sesiapa tolong saya?

P粉950128819
P粉950128819

membalas semua(1)
P粉428986744

Mendapati masalah. Terdapat kunci bernama "p" pada tatasusunan maklumat yang disulitkan, yang mereka panggil "nilai-p". Apabila PDF distrim, nilai p berubah daripada 252 kepada -4. Bahagian kod yang melakukan ini diulas:

Memandangkan nilai-p berubah semasa output pertama, kali kedua anda mengeluarkan pdf, ia menulis fail dengan nilai yang salah.

Nampaknya anda mempunyai dua penyelesaian. Cara pertama ialah mengeluarkan PDF ke fail dahulu dan kemudian menulis kod anda sendiri untuk menggemakan fail itu ke penyemak imbas, atau anda boleh menetapkan semula nilai-p antara aliran dan output seperti ini:

#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();

Semoga membantu.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan