Skip to content

渲染

PDF 渲染由福昕 FSRenderer 引擎完成,可将页面渲染到 FSBitmap。通过渲染标志和选项,可控制渲染内容(页面内容、注释)及质量(抗锯齿、颜色模式等)。通过 Core SDK 提供。

渲染内容标志

通过 setRenderContentFlags: 指定要渲染的内容:

常量说明
FSRendererRenderPage渲染页面内容
FSRendererRenderAnnot渲染注释

标志可通过 | 组合:

objc
[renderer setRenderContentFlags:FSRendererRenderPage | FSRendererRenderAnnot];

渲染页面到 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];
}

快速渲染(缩略图)

startQuickRender:matrix:pause: 使用简化的渲染流程,适合生成缩略图等对精度要求较低的场景:

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];
}

渲染单个注释

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

颜色模式

常量说明
FSRendererColorModeNormal正常模式
FSRendererColorModeMappingGray灰度映射
FSRendererColorModeMapping自定义颜色映射(夜间模式等)
objc
[renderer setColorMode:FSRendererColorModeMapping];
[renderer setMappingModeColors:0xFF000000 foreground_color:0xFFFFFFFF];

API 参考

FSRendererFSBitmapFSMatrix2D 的完整接口说明请参阅 API 手册