ios - CGPDFDocument线程

标签 ios multithreading pdf grand-central-dispatch

苹果公司的Documentation提到,必须手动处理对PDF的quartzcore渲染进行线程化的操作。有没有人实现过多核PDF渲染,或者有任何想法可以如何减轻渲染工作的负担以将线程分开或将文档分成页面块并将其按文档说明分配给单独的内核?目前,我的应用程序在大约1.5秒内加载了较大的PDF,但是多线程处理可以极大地减少该时间(哈哈)。

最佳答案

如您所述,文档明确指出“不支持将PDF文档的各个页面分配到单独的线程。如果要使用线程,请考虑为每个线程创建一个单独的文档,并对每个线程处理一个页面块。”尽管为了使本指南适应GCD,您要做的是为每个“页面块”创建一个串行队列(当然,块大小可以为“一页”),然后通过提交来创建和操作单个CGPDFDocumentRef块到各自的队列。通过使给定CGPDFDocumentRef的 setter/getter 与带有dispatch_sync的相同队列一起使用来获取值,从而保护数据结构,然后连接用户界面以呈现文档的任何给定页面(或整个文档)就很简单了。 ),逐步遍历各个块,以至于其余代码似乎仍然是一个大文档。

关于ios - CGPDFDocument线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8199929/

相关文章:

java - 从 Itext PDF 字节数组转换为多页 TIFF 文件

java - PDFBox 输出问号而不是一些日语字符

ios - react native 分支非分支链接始终

ios - 背景颜色闪光 Sprite 套件

ios - 如何在远程通知的 alertBody 中显示来自 CKRecord 的数据?

C - exec 是否必须在多线程进程中立即跟随 fork?

ios - 在 iTunes Connect 中配置应用程序

multithreading - 线程被阻塞 JAXB

c++ - 简单的无锁 MPSC 环形缓冲区的问题

pdf - (DOORS/DXL) 导出为 pdf 或使用给定模板打印