Sample code for 30+ languages & platforms
PowerShell Requires Chilkat v11.7.0+

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 PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

#  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

$fac = New-Object Chilkat.FileAccess
$json = New-Object Chilkat.JsonObject
$jsonOut = New-Object Chilkat.JsonObject

$pdf1 = New-Object Chilkat.Pdf
$success = $pdf1.LoadFile("qa_data/pdf/watersense_accomplishments.pdf")
if ($success -eq $false) {
    $($pdf1.LastErrorText)
    exit
}

$json.UpdateInt("compressionLevel",1)
$success = $pdf1.Optimize("optimize",$json,$jsonOut)
if ($success -eq $false) {
    $($pdf1.LastErrorText)
    exit
}

$success = $pdf1.WriteFile("qa_output/watersense_level1.pdf")
if ($success -eq $false) {
    $($pdf1.LastErrorText)
    exit
}

$("level 1: " + $fac.FileSize("qa_output/watersense_level1.pdf"))

$pdf9 = New-Object Chilkat.Pdf
$success = $pdf9.LoadFile("qa_data/pdf/watersense_accomplishments.pdf")
if ($success -eq $false) {
    $($pdf9.LastErrorText)
    exit
}

$json.UpdateInt("compressionLevel",9)
$success = $pdf9.Optimize("optimize",$json,$jsonOut)
if ($success -eq $false) {
    $($pdf9.LastErrorText)
    exit
}

$success = $pdf9.WriteFile("qa_output/watersense_level9.pdf")
if ($success -eq $false) {
    $($pdf9.LastErrorText)
    exit
}

$("level 9: " + $fac.FileSize("qa_output/watersense_level9.pdf"))

#  A level outside 1..9 fails, and LastErrorText says why.
$pdfBad = New-Object Chilkat.Pdf
$success = $pdfBad.LoadFile("qa_data/pdf/watersense_accomplishments.pdf")
if ($success -eq $false) {
    $($pdfBad.LastErrorText)
    exit
}

$json.UpdateInt("compressionLevel",12)
$success = $pdfBad.Optimize("optimize",$json,$jsonOut)
if ($success -eq $false) {
    $("compressionLevel 12 was refused, as it should be.")
}