0

我想从字节流(我从 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”。

4

2 回答 2

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];
}

这应该可以,但是如果data在解析 JSON 时直接填充对象,效率会更高。

然后您可以使用以下命令将字节写入文件:

NSArray *docDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDirectory = [docDirectories objectAtIndex:0];
NSString *fileName = [docDirectory stringByAppendingPathComponent:@"abcd.pdf"];

[data writeToFile:fileName atomically:NO];
于 2012-07-18T13:43:28.387 回答
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);
于 2012-07-18T13:30:55.667 回答