Renderer APIs are used to carry out the rendering process, which generates bitmap from PDF pages. A rendering process requires a renderer and render context. ZSRenderer_Create is called to create a renderer on a bitmap, whereas ZSRenderer_PageDrawBegin is called to initialize the rendering process of a PDF page. Here are some common APIs for rendering listed in Table 3.11. For a complete list of APIs, please refer to ZSRenderer.h.


Table 3.11

  API Name Description
1 ZSRenderer_Create Create a renderer.
2 ZSRenderer_Release Release a renderer handle.
3 ZSRenderer_SetFlags Set the flags for rendering.
4 ZSRenderer_PageDrawBegin Begin rendering a PDF page.
5 ZSRenderer_DrawAnnots Draw specified annotations on a page.
6 ZSRenderer_DrawAllAnnots Draw all annotations onto bitmap.

 


This is an example of rendering a page to a bitmap.

Example: Render a page to a bitmap

ZSResult ret = ZSDoc_Open(&filename, NULL, &doc);

ret = ZSDoc_AcquirePage(doc, 0, &page);

ret = ZSPage_GetBox(page, ZSPDF_PAGEBOX_MEDIABOX, &zlipRect);
ret = ZSPage_GetMatrix(page, &rect, 0, &matrix);

ZSBitmap bitmap;
ret = ZSRenderer_Create((ZSInt32)width, (ZSInt32)height, ZS_BITMAPFORMAT_24BPP_RGB, NULL, 0, &bitmap);
ret = ZSBitmap_FillRect(bitmap, 0xFFFFFFFF, NULL);

ZSRenderer renderer;
ret = ZSRenderer_Create(renderer, page, bitmap, &drawHandle);
ret = ZSRenderer_SetClipRect(Renderer);
ret = ZSRenderer_SetMatrix(renderer, &matrix);

ZSPageDrawHandle drawHandle;
ret = ZSRenderer_PageDrawBegin(renderer, page, bitmap, &drawHandle);
ret = ZSRenderer_PageDrawContinue(drawHandle, -1);
ret = ZSRenderer_PageDrawEnd(drawHandle);

ZSBSTRC(filepath, “./output.bmp”);
ZSFile file = NULL;
ZSFile_CreateFromFileName(&filepath, ZS_FILEMODE_TRUNCATE, &file);
ZSImageFile imageFile = NULL;
ZsImageFile_Create(file, ZS_IMAGETYPE_BMP, 1, &imageFile);
ZSImageFile_AddFrame(imageFile, bitmap);
ZSImageFile_Release(imageFile);
ZSFile_Release(file);