Skip to content

Rendering

PDF rendering uses the Foxit FSRenderer engine to draw pages into FSBitmap. Render flags and options control content (page, annotations) and quality (anti-aliasing, color mode, etc.) via Core SDK.

Render content flags

Use setRenderContentFlags::

ConstantDescription
FSRendererRenderPagePage content
FSRendererRenderAnnotAnnotations

Combine with |:

objc
[renderer setRenderContentFlags:FSRendererRenderPage | FSRendererRenderAnnot];

Render page to bitmap

objc
#import <FoxitRDK/FSPDFObjC.h>

FSPDFDoc *doc = [[FSPDFDoc alloc] initWithPath:@"path/to/Sample.pdf"];
[doc load:nil];

FSPDFPage *page = [doc getPage:0];
[page startParse:FSPDFPageParsePageNormal pause:nil is_reparse:YES];

int pageWidth = (int)[page getWidth];
int pageHeight = (int)[page getHeight];

FSBitmap *bmp = [[FSBitmap alloc] initWithWidth:pageWidth
                                         height:pageHeight
                                         format:FSBitmapDIBArgb
                                         buffer:nil
                                          pitch:0];
[bmp fillRect:0xFFFFFFFF rect:nil];

FSRenderer *renderer = [[FSRenderer alloc] initWithBitmap:bmp is_rgb_order:YES];
[renderer setRenderContentFlags:FSRendererRenderPage | FSRendererRenderAnnot];

FSMatrix2D *matrix = [page getDisplayMatrix:0 top:0
                                      width:pageWidth height:pageHeight
                                     rotate:FSRotation0];

FSProgressive *progressive = [renderer startRender:page matrix:matrix pause:nil];
FSProgressState state = FSProgressiveToBeContinued;
while (state == FSProgressiveToBeContinued) {
    state = [progressive resume];
}

Quick render (thumbnails)

startQuickRender:matrix:pause: uses a simplified pipeline for thumbnails and similar use cases:

objc
FSRenderer *renderer = [[FSRenderer alloc] initWithBitmap:bmp is_rgb_order:YES];
[renderer setRenderContentFlags:FSRendererRenderPage];

FSProgressive *progressive = [renderer startQuickRender:page matrix:matrix pause:nil];
FSProgressState state = FSProgressiveToBeContinued;
while (state == FSProgressiveToBeContinued) {
    state = [progressive resume];
}

Render a single annotation

objc
FSRenderer *renderer = [[FSRenderer alloc] initWithBitmap:bmp is_rgb_order:YES];
[renderer renderAnnot:annot matrix:matrix];

Color mode

ConstantDescription
FSRendererColorModeNormalNormal
FSRendererColorModeMappingGrayGrayscale mapping
FSRendererColorModeMappingCustom color mapping (night mode, etc.)
objc
[renderer setColorMode:FSRendererColorModeMapping];
[renderer setMappingModeColors:0xFF000000 foreground_color:0xFFFFFFFF];

API reference

See the API reference for FSRenderer, FSBitmap, and FSMatrix2D.