Skip to content

Rendering

PDF rendering is performed by the Foxit Renderer engine, which can render pages to a Bitmap or platform device context. Render flags and options control content (page content, annotations) and quality (anti-aliasing, color mode, etc.).

Render Content Flags

Use setRenderContentFlags() to specify what to render:

ConstantValueDescription
Renderer.e_RenderPage0x01Render page content
Renderer.e_RenderAnnot0x02Render annotations

Combine flags with |:

java
renderer.setRenderContentFlags(Renderer.e_RenderPage | Renderer.e_RenderAnnot);

Render Page to Bitmap

java
PDFPage page = doc.getPage(0);
if (!page.isParsed()) {
    Progressive parse = page.startParse(PDFPage.e_ParsePageNormal, null, false);
    int state = Progressive.e_ToBeContinued;
    while (state == Progressive.e_ToBeContinued) {
        state = parse.resume();
    }
}

Matrix2D matrix = page.getDisplayMatrix(0, 0, width, height, Constants.e_Rotation0);

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
bitmap.eraseColor(Color.WHITE);

Renderer renderer = new Renderer(bitmap, true);
renderer.setRenderContentFlags(Renderer.e_RenderPage | Renderer.e_RenderAnnot);

Progressive progressive = renderer.startRender(page, matrix, null);
int state = Progressive.e_ToBeContinued;
while (state == Progressive.e_ToBeContinued) {
    state = progressive.resume();
}

Quick Render (Thumbnails)

startQuickRender() uses a simplified pipeline for thumbnails and other low-precision use cases:

java
Renderer renderer = new Renderer(bitmap, true);
renderer.setRenderContentFlags(Renderer.e_RenderPage);

Progressive progressive = renderer.startQuickRender(page, matrix, null);
int state = Progressive.e_ToBeContinued;
while (state == Progressive.e_ToBeContinued) {
    state = progressive.resume();
}

Render a Single Annotation

java
Renderer renderer = new Renderer(bitmap, true);
renderer.renderAnnot(annot, matrix);

Note

Widget annotations are tied to form fields. If you use pdf.interform.Filler for form filling, prefer Filler.render() over Renderer.renderAnnot() when rendering the focused control.

Render Options

Color Mode

ConstantValueDescription
e_ColorModeNormal0Normal mode
e_ColorModeMappingGray1Grayscale mapping
e_ColorModeMapping2Custom color mapping (night mode, etc.)
java
renderer.setColorMode(Renderer.e_ColorModeMapping);
renderer.setMappingModeColors(0xFF000000, 0xFFFFFFFF);

Anti-Aliasing

Use setRenderTextAntiAliasing(), setRenderPathAntiAliasing(), and setRenderImageAntiAliasing() for text, paths, and images:

java
renderer.setRenderTextAntiAliasing(true);
renderer.setRenderPathAntiAliasing(true);
renderer.setRenderImageAntiAliasing(true);

Renderer also supports clip regions (setClipRect), print mode (enableForPrint), halftone (setForceHalftone), image downsampling, and other advanced options.

API Reference

See the API Reference for full Renderer documentation.