PHP ActiveX Requires Chilkat v11.7.0+
PHP ActiveX
Remove the Password and Encryption from a PDF
See more PDF Protection Examples
Demonstrates the removeEncryption operation, which saves the PDF with no encryption at all: no password, no restrictions. It needs owner rights, so the PDF is loaded with its owner password. As with every Protection operation, the change is applied when the file is written.Chilkat PHP ActiveX Downloads
<?php
$success = 0;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
// The PDF used in this example is available at encrypted_user_password.pdf
$pdf = new COM("Chilkat.Pdf");
// Removing the encryption needs owner rights: load with the owner password.
$pdf->OwnerPassword = 'owner-secret';
$success = $pdf->LoadFile('qa_data/pdf/encrypted_user_password.pdf');
if ($success == 0) {
print $pdf->LastErrorText . "\n";
exit;
}
$json = new COM("Chilkat.JsonObject");
$jsonOut = new COM("Chilkat.JsonObject");
$success = $pdf->Protection('getInfo',$json,$jsonOut);
if ($success == 0) {
print $pdf->LastErrorText . "\n";
exit;
}
print 'encrypted, as loaded: ' . $jsonOut->BoolOf('loaded.encrypted') . "\n";
print 'algorithm: ' . $jsonOut->stringOf('loaded.algorithm') . "\n";
$success = $pdf->Protection('removeEncryption',$json,$jsonOut);
if ($success == 0) {
print $pdf->LastErrorText . "\n";
exit;
}
print 'will be saved encrypted: ' . $jsonOut->BoolOf('pending.encrypted') . "\n";
$success = $pdf->WriteFile('qa_output/minutes_unprotected.pdf');
if ($success == 0) {
print $pdf->LastErrorText . "\n";
exit;
}
// The result is an ordinary PDF that opens without a password.
$reader = new COM("Chilkat.Pdf");
$info = new COM("Chilkat.JsonObject");
$success = $reader->PreLoadCheck('qa_output/minutes_unprotected.pdf',$info);
if ($success == 0) {
print $reader->LastErrorText . "\n";
exit;
}
print 'encrypted: ' . $info->BoolOf('encrypted') . "\n";
$success = $reader->LoadFile('qa_output/minutes_unprotected.pdf');
if ($success == 0) {
print $reader->LastErrorText . "\n";
exit;
}
print 'pages: ' . $reader->NumPages . "\n";
// Sample output:
// encrypted, as loaded: True
// algorithm: rc4-128
// will be saved encrypted: False
// encrypted: False
// pages: 1
?>