Apple的Documentation提到必须手动处理穿越PDF的石英核心渲染。有没有人实现了多核PDF渲染,或者知道如何将渲染工作卸载到单独的线程或将文档分成页面块并将其分发到单独的核心,如文档所示?目前我的应用程序在大约1.5秒内加载大型PDF,但多线程可以大大减少时间(哈哈)。
答案 0 :(得分:3)
如您所知,文档明确指出“不支持将PDF文档的各个页面分发到单独的线程。如果您想使用线程,请考虑为每个线程创建单独的文档,并在每个线程的页面块上操作“。虽然要将此指南适用于GCD,但您要做的是为每个“页面块”创建一个串行队列(其中块大小当然可以是“一页”)然后通过提交创建和操作单个CGPDFDocumentRef阻止到相应的队列。通过使得给定CGPDFDocumentRef的getter使用与dispatch_sync相同的队列来获取值来保护您的数据结构,然后只需将UI连接起来以呈现文档的任何给定页面(或整个文档)通过跨越各个块,使其看起来仍然是代码其余部分的一个大文档。