Objective-C Requires Chilkat v11.7.0+
Objective-C
Deflate Compression Level When Optimizing a PDF
See more PDF Optimization Examples
Demonstrates compressionLevel, which is the deflate level (1 to 9, 9 by default) used for every stream the optimizer re-encodes. Level 9 is the smallest and the slowest; level 1 is the quickest. The difference is usually a percent or two, so level 9 is the right default for a file that will be downloaded many times, and a lower level is worth considering only when a server optimizes PDFs on the fly. A value outside 1 to 9 is an error.Chilkat Objective-C Downloads
#import <CkoFileAccess.h>
#import <CkoJsonObject.h>
#import <CkoPdf.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 watersense_accomplishments.pdf
CkoFileAccess *fac = [[CkoFileAccess alloc] init];
CkoJsonObject *json = [[CkoJsonObject alloc] init];
CkoJsonObject *jsonOut = [[CkoJsonObject alloc] init];
CkoPdf *pdf1 = [[CkoPdf alloc] init];
success = [pdf1 LoadFile: @"qa_data/pdf/watersense_accomplishments.pdf"];
if (success == NO) {
NSLog(@"%@",pdf1.LastErrorText);
return;
}
[json UpdateInt: @"compressionLevel" value: [NSNumber numberWithInt: 1]];
success = [pdf1 Optimize: @"optimize" jsonIn: json jsonOut: jsonOut];
if (success == NO) {
NSLog(@"%@",pdf1.LastErrorText);
return;
}
success = [pdf1 WriteFile: @"qa_output/watersense_level1.pdf"];
if (success == NO) {
NSLog(@"%@",pdf1.LastErrorText);
return;
}
NSLog(@"%@%d",@"level 1: ",[[fac FileSize: @"qa_output/watersense_level1.pdf"] intValue]);
CkoPdf *pdf9 = [[CkoPdf alloc] init];
success = [pdf9 LoadFile: @"qa_data/pdf/watersense_accomplishments.pdf"];
if (success == NO) {
NSLog(@"%@",pdf9.LastErrorText);
return;
}
[json UpdateInt: @"compressionLevel" value: [NSNumber numberWithInt: 9]];
success = [pdf9 Optimize: @"optimize" jsonIn: json jsonOut: jsonOut];
if (success == NO) {
NSLog(@"%@",pdf9.LastErrorText);
return;
}
success = [pdf9 WriteFile: @"qa_output/watersense_level9.pdf"];
if (success == NO) {
NSLog(@"%@",pdf9.LastErrorText);
return;
}
NSLog(@"%@%d",@"level 9: ",[[fac FileSize: @"qa_output/watersense_level9.pdf"] intValue]);
// A level outside 1..9 fails, and LastErrorText says why.
CkoPdf *pdfBad = [[CkoPdf alloc] init];
success = [pdfBad LoadFile: @"qa_data/pdf/watersense_accomplishments.pdf"];
if (success == NO) {
NSLog(@"%@",pdfBad.LastErrorText);
return;
}
[json UpdateInt: @"compressionLevel" value: [NSNumber numberWithInt: 12]];
success = [pdfBad Optimize: @"optimize" jsonIn: json jsonOut: jsonOut];
if (success == NO) {
NSLog(@"%@",@"compressionLevel 12 was refused, as it should be.");
}