Sample code for 30+ languages & platforms
Objective-C Requires Chilkat v11.7.0+

Put a Letterhead Behind the First Page of a PDF

See more PDF Watermark Examples

Demonstrates the pdfPage type, which places a page of another PDF as the watermark. It is the way to use a letterhead, a cover overlay or a vector logo that was saved as a PDF, and unlike an image it stays sharp at any size because it is drawn, not resampled. "zOrder" set to back puts it behind the existing content, where a letterhead belongs, and "pages" set to first restricts it to page one.

Chilkat Objective-C Downloads

Objective-C
#import <CkoPdf.h>
#import <CkoJsonObject.h>

BOOL success = NO;

//  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 two_page_memo.pdf

//  The PDF used in this example is available at letterhead.pdf

CkoPdf *pdf = [[CkoPdf alloc] init];
success = [pdf LoadFile: @"qa_data/pdf/two_page_memo.pdf"];
if (success == NO) {
    NSLog(@"%@",pdf.LastErrorText);
    return;
}

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateString: @"type" value: @"pdfPage"];
[json UpdateString: @"pdf.path" value: @"qa_data/pdf/letterhead.pdf"];

//  The page of the source PDF to use (1 by default).  "match" instead of a number places source
//  page n on target page n, which suits a set of per-page backgrounds.
[json UpdateInt: @"pdf.page" value: [NSNumber numberWithInt: 1]];

//  Behind the memo's own text, on page one, scaled to the page.
[json UpdateString: @"zOrder" value: @"back"];
[json UpdateString: @"pages" value: @"first"];
[json UpdateString: @"scale.fit" value: @"page"];
[json UpdateString: @"id" value: @"letterhead"];

CkoJsonObject *jsonOut = [[CkoJsonObject alloc] init];
success = [pdf Watermark: @"add" jsonIn: json jsonOut: jsonOut];
if (success == NO) {
    NSLog(@"%@",pdf.LastErrorText);
    return;
}

NSLog(@"%@%@%@%@",@"id: ",[jsonOut StringOf: @"id"],@" pages: ",[jsonOut StringOf: @"pages"]);

success = [pdf WriteFile: @"qa_output/memo_letterhead.pdf"];
if (success == NO) {
    NSLog(@"%@",pdf.LastErrorText);
    return;
}

//  Sample output:

//  id: letterhead pages: 1