渲染
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 参考
FSRenderer、FSBitmap、FSMatrix2D 的完整接口说明请参阅 API 手册。