Go Requires Chilkat v11.7.0+
Go
Audit a PDF First, Optimize Only If It Is Worth It
See more PDF Optimization Examples
Demonstrates deciding whether to rewrite a PDF at all. "audit" costs a fraction of a second and changes nothing, so a batch job can audit every file and optimize only those where enough would be saved. Here the threshold is a tenth of the file; a file already as small as it can be is left alone.Chilkat Go Downloads
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
pdf := chilkat.NewPdf()
success = pdf.LoadFile("qa_data/pdf/watersense_accomplishments.pdf")
if success == false {
fmt.Println(pdf.LastErrorText())
pdf.DisposePdf()
return
}
json := chilkat.NewJsonObject()
jsonOut := chilkat.NewJsonObject()
success = pdf.Optimize("audit",json,jsonOut)
if success == false {
fmt.Println(pdf.LastErrorText())
pdf.DisposePdf()
json.DisposeJsonObject()
jsonOut.DisposeJsonObject()
return
}
fileSize := jsonOut.IntOf("fileSize")
estimated := jsonOut.IntOf("estimatedSavings.total")
fmt.Println("fileSize: ", fileSize)
fmt.Println("estimated: ", estimated)
// Only bother when at least a tenth of the file would go.
if estimated > (fileSize / 10) {
fmt.Println("Worth optimizing.")
success = pdf.Optimize("optimize",json,jsonOut)
if success == false {
fmt.Println(pdf.LastErrorText())
pdf.DisposePdf()
json.DisposeJsonObject()
jsonOut.DisposeJsonObject()
return
}
success = pdf.WriteFile("qa_output/watersense_optimized.pdf")
if success == false {
fmt.Println(pdf.LastErrorText())
pdf.DisposePdf()
json.DisposeJsonObject()
jsonOut.DisposeJsonObject()
return
}
fmt.Println("bytesSaved: ", jsonOut.IntOf("bytesSaved"))
} else {
fmt.Println("Already small enough; left as it is.")
}
pdf.DisposePdf()
json.DisposeJsonObject()
jsonOut.DisposeJsonObject()