我有一个方法可以像这样从 CGPathRef 返回 NSData ...
+ (NSData *) createPDFDataWithCGPath: (CGPathRef) path mediaBox: (CGRect) mediaBox
{
CFMutableDataRef data = NULL;
if (path) {
CFAllocatorRef allocator = NULL;
data = CFDataCreateMutable(allocator, 0);
CGDataConsumerRef consumer = CGDataConsumerCreateWithCFData(data);
CGContextRef context = CGPDFContextCreate(consumer, &mediaBox, NULL);
CFTypeRef keys[1] = { kCGPDFContextMediaBox };
CFTypeRef values[1] = { CFDataCreate(allocator, (const UInt8 *)&mediaBox, sizeof(CGRect)) };
CFDictionaryRef pageInfo = CFDictionaryCreate(allocator, keys, values, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
CGPDFContextBeginPage(context, pageInfo);
CGContextScaleCTM(context, 1, -1);
CGContextTranslateCTM(context, 0, -mediaBox.size.height);
CGContextAddPath(context, path);
CGContextSetRGBFillColor(context, 0, 0, 0, 1);
CGContextFillPath(context);
CGPDFContextEndPage(context);
CFRelease(pageInfo);
CFRelease(values[0]);
CGPDFContextClose(context);
CGContextRelease(context);
CGDataConsumerRelease(consumer);
}
return (NSData *)data;
}
当我尝试使用它并根据数据编写 PDF 文件时,我得到了正确大小的文件,但路径没有绘制到 PDF 中……它基本上是一个空文档。
这样写文件就够了吗...
[maskData writeToFile: DOCUMENTS_PATH_WITH_STRING(@"maskData.pdf") atomically: YES];
还是他们需要更多努力才能将其写成 PDF?
最佳答案
你是对的。 如果您在 NSData 对象中有数据,那么您可以将其写入磁盘。但是您应该添加正确的扩展名(在您的情况下为 .pdf)。 它适用于所有内容(视频、图片等...)
关于ios - 如何从 NSData 源写入 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603298/