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 に答える