Tcl Requires Chilkat v11.7.0+
Tcl
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 Tcl Downloads
load ./chilkat.dll
set 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 watersense_accomplishments.pdf
set fac [new_CkFileAccess]
set json [new_CkJsonObject]
set jsonOut [new_CkJsonObject]
set pdf1 [new_CkPdf]
set success [CkPdf_LoadFile $pdf1 "qa_data/pdf/watersense_accomplishments.pdf"]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdf1]
delete_CkFileAccess $fac
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
delete_CkPdf $pdf1
exit
}
CkJsonObject_UpdateInt $json "compressionLevel" 1
set success [CkPdf_Optimize $pdf1 "optimize" $json $jsonOut]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdf1]
delete_CkFileAccess $fac
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
delete_CkPdf $pdf1
exit
}
set success [CkPdf_WriteFile $pdf1 "qa_output/watersense_level1.pdf"]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdf1]
delete_CkFileAccess $fac
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
delete_CkPdf $pdf1
exit
}
puts "level 1: [CkFileAccess_FileSize $fac qa_output/watersense_level1.pdf]"
set pdf9 [new_CkPdf]
set success [CkPdf_LoadFile $pdf9 "qa_data/pdf/watersense_accomplishments.pdf"]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdf9]
delete_CkFileAccess $fac
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
delete_CkPdf $pdf1
delete_CkPdf $pdf9
exit
}
CkJsonObject_UpdateInt $json "compressionLevel" 9
set success [CkPdf_Optimize $pdf9 "optimize" $json $jsonOut]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdf9]
delete_CkFileAccess $fac
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
delete_CkPdf $pdf1
delete_CkPdf $pdf9
exit
}
set success [CkPdf_WriteFile $pdf9 "qa_output/watersense_level9.pdf"]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdf9]
delete_CkFileAccess $fac
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
delete_CkPdf $pdf1
delete_CkPdf $pdf9
exit
}
puts "level 9: [CkFileAccess_FileSize $fac qa_output/watersense_level9.pdf]"
# A level outside 1..9 fails, and LastErrorText says why.
set pdfBad [new_CkPdf]
set success [CkPdf_LoadFile $pdfBad "qa_data/pdf/watersense_accomplishments.pdf"]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdfBad]
delete_CkFileAccess $fac
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
delete_CkPdf $pdf1
delete_CkPdf $pdf9
delete_CkPdf $pdfBad
exit
}
CkJsonObject_UpdateInt $json "compressionLevel" 12
set success [CkPdf_Optimize $pdfBad "optimize" $json $jsonOut]
if {$success == 0} then {
puts "compressionLevel 12 was refused, as it should be."
}
delete_CkFileAccess $fac
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
delete_CkPdf $pdf1
delete_CkPdf $pdf9
delete_CkPdf $pdfBad