Perl Requires Chilkat v11.7.0+
Perl
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 Perl Downloads
use chilkat();
$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 = chilkat::CkPdf->new();
# Removing the encryption needs owner rights: load with the owner password.
$pdf->put_OwnerPassword("owner-secret");
$success = $pdf->LoadFile("qa_data/pdf/encrypted_user_password.pdf");
if ($success == 0) {
print $pdf->lastErrorText() . "\r\n";
exit;
}
$json = chilkat::CkJsonObject->new();
$jsonOut = chilkat::CkJsonObject->new();
$success = $pdf->Protection("getInfo",$json,$jsonOut);
if ($success == 0) {
print $pdf->lastErrorText() . "\r\n";
exit;
}
print "encrypted, as loaded: " . $jsonOut->BoolOf("loaded.encrypted") . "\r\n";
print "algorithm: " . $jsonOut->stringOf("loaded.algorithm") . "\r\n";
$success = $pdf->Protection("removeEncryption",$json,$jsonOut);
if ($success == 0) {
print $pdf->lastErrorText() . "\r\n";
exit;
}
print "will be saved encrypted: " . $jsonOut->BoolOf("pending.encrypted") . "\r\n";
$success = $pdf->WriteFile("qa_output/minutes_unprotected.pdf");
if ($success == 0) {
print $pdf->lastErrorText() . "\r\n";
exit;
}
# The result is an ordinary PDF that opens without a password.
$reader = chilkat::CkPdf->new();
$info = chilkat::CkJsonObject->new();
$success = $reader->PreLoadCheck("qa_output/minutes_unprotected.pdf",$info);
if ($success == 0) {
print $reader->lastErrorText() . "\r\n";
exit;
}
print "encrypted: " . $info->BoolOf("encrypted") . "\r\n";
$success = $reader->LoadFile("qa_output/minutes_unprotected.pdf");
if ($success == 0) {
print $reader->lastErrorText() . "\r\n";
exit;
}
print "pages: " . $reader->get_NumPages() . "\r\n";
# Sample output:
# encrypted, as loaded: True
# algorithm: rc4-128
# will be saved encrypted: False
# encrypted: False
# pages: 1