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

Add an Image (Logo) Watermark to a PDF

See more PDF Watermark Examples

Demonstrates an image watermark placed in a corner of every page. The image is a PNG or JPEG given either by path ("image.path") or, as here, as base64 in the JSON itself ("image.base64"), which suits a server that keeps its logo in a database rather than on disk. PNG transparency is kept. Giving only a width keeps the aspect ratio, and the units member says those numbers are inches rather than points.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loPdf
LOCAL loJson
LOCAL loJsonOut

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 four_pages.pdf

loPdf = CreateObject('Chilkat.Pdf')
lnSuccess = loPdf.LoadFile("qa_data/pdf/four_pages.pdf")
IF (lnSuccess = 0) THEN
    ? loPdf.LastErrorText
    RELEASE loPdf
    CANCEL
ENDIF

loJson = CreateObject('Chilkat.JsonObject')
loJson.UpdateString("type","image")

*  A small PNG logo, base64 encoded.  Use "image.path" instead to name a PNG or JPEG file:
*     ignore = json.UpdateString("image.path","logo.png");
loJson.UpdateString("image.base64","iVBORw0KGgoAAAANSUhEUgAAAGAAAAAgCAYAAADtwH1UAAAApElEQVR42u3a7QmAIBgAYTdpo/ZphhZti6IBylLrlXoO/G3cIeFHSgAAFDKM08rCy8Jzg6Ug8UJ0JF+EDuSXRGgxX8+jufxlTk0nFuCCiF360aidXICMiDP5uQgCXAxQI782ggAHEu7IP4sgQOcBIMA35ItgBQhQEqBmtbX6xl//hAUI3gcIELwTFiD4LEiA4NNQAYLvA+BGzJ0wvIrwLggA8DgbwPbrr8c7+lkAAAAASUVORK5CYII=")

*  The size to draw it at.  Give only the width and the height follows the aspect ratio.
loJson.UpdateString("units","in")
loJson.UpdateNumber("image.width","1.5")

*  Bottom-right, half an inch in from the page edges.
loJson.UpdateString("position.align","bottomRight")
loJson.UpdateNumber("position.margin","0.5")
loJson.UpdateNumber("opacity","0.85")
loJson.UpdateString("id","logo")

loJsonOut = CreateObject('Chilkat.JsonObject')
lnSuccess = loPdf.Watermark("add",loJson,loJsonOut)
IF (lnSuccess = 0) THEN
    ? loPdf.LastErrorText
    RELEASE loPdf
    RELEASE loJson
    RELEASE loJsonOut
    CANCEL
ENDIF

? "id: " + loJsonOut.StringOf("id") + " pages: " + loJsonOut.StringOf("pages")

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

*  Sample output:

*  id: logo pages: 1-4

RELEASE loPdf
RELEASE loJson
RELEASE loJsonOut