TP.*_*TP. 16 pdf pdf-generation objective-c quartz-graphics ios
我使用以下伪代码生成PDF文档:
CGContextRef context = CGPDFContextCreateWithURL(url, &rect, NULL);
for (int i = 1; i <= N; i++)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
CGContextBeginPage(context, &mediaBox);
// drawing code
CGContextEndPage(context);
[pool release];
}
CGContextRelease(context);
Run Code Online (Sandbox Code Playgroud)
它适用于小文档(N < 100
页面),但如果文档超过大约400页(它在崩溃之前收到两个内存警告),它会占用太多内存和崩溃.我确保使用Instruments没有泄漏.您对在iOS上创建大型PDF文档有何建议?非常感谢.
编辑:pdf创建在后台线程中完成.
既然你通过创建一个单一的文件CGPDFContextCreateWithURL
,整个事情已经在内存中举行,附加到,一些常用的(虽然我不能肯定与iOS和说CGPDFContextCreateWithURL
),需要一个完整的前和后将该文件拷贝到要保持.即使没有前后问题,也不需要泄漏来产生问题.
如果您没有尝试捕获一堆现有的UIKit绘制的东西 - 并且在您的示例中似乎您不是 - 使用操作系统的打印方法,它提供内置支持打印到PDF.UIGraphicsBeginPDFContextToFile
将页面写入磁盘,因为它们被添加,因此整个过程不必一次保存在内存中.你应该能够以这种方式生成一个巨大的PDF.
归档时间: |
|
查看次数: |
2566 次 |
最近记录: |