Sample code for 30+ languages & platforms
Visual FoxPro 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 Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loFac
LOCAL loJson
LOCAL loJsonOut
LOCAL loPdf1
LOCAL loPdf9
LOCAL loPdfBad

lnSuccess = 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

loFac = CreateObject('Chilkat.FileAccess')
loJson = CreateObject('Chilkat.JsonObject')
loJsonOut = CreateObject('Chilkat.JsonObject')

loPdf1 = CreateObject('Chilkat.Pdf')
lnSuccess = loPdf1.LoadFile("qa_data/pdf/watersense_accomplishments.pdf")
IF (lnSuccess = 0) THEN
    ? loPdf1.LastErrorText
    RELEASE loFac
    RELEASE loJson
    RELEASE loJsonOut
    RELEASE loPdf1
    CANCEL
ENDIF

loJson.UpdateInt("compressionLevel",1)
lnSuccess = loPdf1.Optimize("optimize",loJson,loJsonOut)
IF (lnSuccess = 0) THEN
    ? loPdf1.LastErrorText
    RELEASE loFac
    RELEASE loJson
    RELEASE loJsonOut
    RELEASE loPdf1
    CANCEL
ENDIF

lnSuccess = loPdf1.WriteFile("qa_output/watersense_level1.pdf")
IF (lnSuccess = 0) THEN
    ? loPdf1.LastErrorText
    RELEASE loFac
    RELEASE loJson
    RELEASE loJsonOut
    RELEASE loPdf1
    CANCEL
ENDIF

? "level 1: " + STR(loFac.FileSize("qa_output/watersense_level1.pdf"))

loPdf9 = CreateObject('Chilkat.Pdf')
lnSuccess = loPdf9.LoadFile("qa_data/pdf/watersense_accomplishments.pdf")
IF (lnSuccess = 0) THEN
    ? loPdf9.LastErrorText
    RELEASE loFac
    RELEASE loJson
    RELEASE loJsonOut
    RELEASE loPdf1
    RELEASE loPdf9
    CANCEL
ENDIF

loJson.UpdateInt("compressionLevel",9)
lnSuccess = loPdf9.Optimize("optimize",loJson,loJsonOut)
IF (lnSuccess = 0) THEN
    ? loPdf9.LastErrorText
    RELEASE loFac
    RELEASE loJson
    RELEASE loJsonOut
    RELEASE loPdf1
    RELEASE loPdf9
    CANCEL
ENDIF

lnSuccess = loPdf9.WriteFile("qa_output/watersense_level9.pdf")
IF (lnSuccess = 0) THEN
    ? loPdf9.LastErrorText
    RELEASE loFac
    RELEASE loJson
    RELEASE loJsonOut
    RELEASE loPdf1
    RELEASE loPdf9
    CANCEL
ENDIF

? "level 9: " + STR(loFac.FileSize("qa_output/watersense_level9.pdf"))

*  A level outside 1..9 fails, and LastErrorText says why.
loPdfBad = CreateObject('Chilkat.Pdf')
lnSuccess = loPdfBad.LoadFile("qa_data/pdf/watersense_accomplishments.pdf")
IF (lnSuccess = 0) THEN
    ? loPdfBad.LastErrorText
    RELEASE loFac
    RELEASE loJson
    RELEASE loJsonOut
    RELEASE loPdf1
    RELEASE loPdf9
    RELEASE loPdfBad
    CANCEL
ENDIF

loJson.UpdateInt("compressionLevel",12)
lnSuccess = loPdfBad.Optimize("optimize",loJson,loJsonOut)
IF (lnSuccess = 0) THEN
    ? "compressionLevel 12 was refused, as it should be."
ENDIF

RELEASE loFac
RELEASE loJson
RELEASE loJsonOut
RELEASE loPdf1
RELEASE loPdf9
RELEASE loPdfBad