PDF 生成模板编辑器
开源可视化 PDF 生成引擎,支持自定义模板,并提供面向开发者的 API,灵活构建文档生成流程。
通过 CPDFOptimizeOption,可以在优化文档时进行颜色空间转换(RGB 与 CMYK 互转),并使用 optimizeAndSaveAsCopyWithPath:stepsMicroseconds:saveMicroseconds: 一次完成优化和保存,同时获取各阶段的耗时。
| 属性/方法 | 说明 |
|---|---|
initWithDocument: | 使用要优化的文档创建选项对象。创建后已带有默认的图像压缩参数(col_imageOption)和优化标志(optimizeflag),可按需修改。 |
iccProfileData | 颜色空间转换使用的 ICC 配置文件数据。为 nil(默认)或空数据时不进行颜色空间转换。 |
rgbToCMYK | 转换方向。YES(默认)表示 RGB 转 CMYK,NO 表示 CMYK 转 RGB;仅在 iccProfileData 非空时生效。 |
optimizeAndSaveAsCopyWithPath:stepsMicroseconds:saveMicroseconds: | 优化文档并将结果保存到指定路径,成功时返回 YES。stepsMicroseconds 和 saveMicroseconds 分别返回优化阶段和保存阶段的耗时(微秒),不需要时传 NULL(Swift 中传 nil)。 |
以下是优化文档时将 RGB 转换为 CMYK 并保存的示例代码:
guard let option = CPDFOptimizeOption(document: document) else { return }
// 设置 ICC 配置文件数据,启用颜色空间转换
option.iccProfileData = try? Data(contentsOf: URL(fileURLWithPath: iccPath))
// true(默认):RGB 转 CMYK;false:CMYK 转 RGB
option.rgbToCMYK = true
var stepsMicroseconds: Int64 = 0
var saveMicroseconds: Int64 = 0
// 直接调用,不要先调用 startCompress
let success = option.optimizeAndSaveAsCopy(withPath: savePath, stepsMicroseconds: &stepsMicroseconds, saveMicroseconds: &saveMicroseconds)
print("Success: \(success), optimize: \(stepsMicroseconds) us, save: \(saveMicroseconds) us")CPDFOptimizeOption *option = [[CPDFOptimizeOption alloc] initWithDocument:document];
// 设置 ICC 配置文件数据,启用颜色空间转换
option.iccProfileData = [NSData dataWithContentsOfFile:iccPath];
// YES(默认):RGB 转 CMYK;NO:CMYK 转 RGB
option.rgbToCMYK = YES;
int64_t stepsMicroseconds = 0;
int64_t saveMicroseconds = 0;
// 直接调用,不要先调用 startCompress
BOOL success = [option optimizeAndSaveAsCopyWithPath:savePath
stepsMicroseconds:&stepsMicroseconds
saveMicroseconds:&saveMicroseconds];
NSLog(@"Success: %d, optimize: %lld us, save: %lld us", success, stepsMicroseconds, saveMicroseconds);注: optimizeAndSaveAsCopyWithPath:stepsMicroseconds:saveMicroseconds: 会自行完成优化,调用前不要先调用 startCompress,否则文档会被优化两次,图像会被再次压缩而损失画质。它也不是 saveAsCopyWithPath: 的变体:saveAsCopyWithPath: 只负责保存已经通过 startCompress 优化过的文档。该方法同步执行,处理大文档时耗时较长,建议在后台线程调用,并将结果保存到与源文件不同的路径。