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:
| Constant | Value | Description |
|---|---|---|
Renderer.e_RenderPage | 0x01 | Render page content |
Renderer.e_RenderAnnot | 0x02 | Render 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
| Constant | Value | Description |
|---|---|---|
e_ColorModeNormal | 0 | Normal mode |
e_ColorModeMappingGray | 1 | Grayscale mapping |
e_ColorModeMapping | 2 | Custom 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.