我想从字节流(我从wsdl收到)创建一个pdf,我已经在NSArray上插入了这个字节流,但我不知道怎么写pdf。 (这个字节流是pdf) 谢谢!
//to convert NSData to pdf
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arrayOfByte];
CFDataRef myPDFData = (__bridge_retained CFDataRef)data;
CGDataProviderRef provider = CGDataProviderCreateWithCFData(myPDFData);
CGPDFDocumentRef pdf = CGPDFDocumentCreateWithProvider(provider);
NSArray *docDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDirectory = [docDirectories objectAtIndex:0];
NSString *fileName = [docDirectory stringByAppendingPathComponent:@"abcd.pdf"];
[data writeToFile:fileName atomically:NO];
但我收到:找不到PDF标题:找不到`%PDF'。
答案 0 :(得分:2)
要从已签名的8位字符数组中获取数据字节,您可以执行以下操作:
NSArray *bytes = ...;
NSMutableData *data = [[NSMutableArray alloc] initWithCapacity:bytes.count];
for (NSNumber *byteVal in bytes) {
Byte b = (Byte)(byteVal.intValue);
[data appendBytes:&b length:1];
}
这应该可行,但如果在解析JSON时直接填充data
对象会更有效。
然后您可以使用以下命令将字节写入文件:
NSArray *docDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDirectory = [docDirectories objectAtIndex:0];
NSString *fileName = [docDirectory stringByAppendingPathComponent:@"abcd.pdf"];
[data writeToFile:fileName atomically:NO];
答案 1 :(得分:0)
如果它确实是一个字节数组,它应该被编码为字符串并转换为NSData
对象,或直接存储在NSData
对象中。从那里,CoreGraphics包含用于创建和操作PDF文件的本机函数。
//to convert NSData to pdf
NSData *data = [NSData dataWithBytes:(void)wdslBytes length:sizeOf(wdslBytes)];
CFDataRef myPDFData = (CFDataRef)data;
CGDataProviderRef provider = CGDataProviderCreateWithCFData(myPDFData);
CGPDFDocumentRef pdf = CGPDFDocumentCreateWithProvider(provider);