Objective-C Requires Chilkat v11.7.0+
Objective-C
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 Objective-C Downloads
#import <CkoPdf.h>
#import <CkoJsonObject.h>
BOOL success = NO;
// 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
CkoPdf *pdf = [[CkoPdf alloc] init];
// 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 == NO) {
NSLog(@"%@",pdf.LastErrorText);
return;
}
CkoJsonObject *json = [[CkoJsonObject alloc] init];
CkoJsonObject *jsonOut = [[CkoJsonObject alloc] init];
success = [pdf Protection: @"getInfo" jsonIn: json jsonOut: jsonOut];
if (success == NO) {
NSLog(@"%@",pdf.LastErrorText);
return;
}
NSLog(@"%@%d",@"encrypted, as loaded: ",[jsonOut BoolOf: @"loaded.encrypted"]);
NSLog(@"%@%@",@"algorithm: ",[jsonOut StringOf: @"loaded.algorithm"]);
success = [pdf Protection: @"removeEncryption" jsonIn: json jsonOut: jsonOut];
if (success == NO) {
NSLog(@"%@",pdf.LastErrorText);
return;
}
NSLog(@"%@%d",@"will be saved encrypted: ",[jsonOut BoolOf: @"pending.encrypted"]);
success = [pdf WriteFile: @"qa_output/minutes_unprotected.pdf"];
if (success == NO) {
NSLog(@"%@",pdf.LastErrorText);
return;
}
// The result is an ordinary PDF that opens without a password.
CkoPdf *reader = [[CkoPdf alloc] init];
CkoJsonObject *info = [[CkoJsonObject alloc] init];
success = [reader PreLoadCheck: @"qa_output/minutes_unprotected.pdf" jsonOut: info];
if (success == NO) {
NSLog(@"%@",reader.LastErrorText);
return;
}
NSLog(@"%@%d",@"encrypted: ",[info BoolOf: @"encrypted"]);
success = [reader LoadFile: @"qa_output/minutes_unprotected.pdf"];
if (success == NO) {
NSLog(@"%@",reader.LastErrorText);
return;
}
NSLog(@"%@%d",@"pages: ",[reader.NumPages intValue]);
// Sample output:
// encrypted, as loaded: True
// algorithm: rc4-128
// will be saved encrypted: False
// encrypted: False
// pages: 1