2012-03-08 45 views
0

xCodeのバイナリxStringからPDFオブジェクトを作成しようとしています。 (SAPからのOData、UTF-8)PDFヘッダーが見つかりませんでした: '%PDF'がxCodeに見つかりません

ここでは符号化である:

const char* buf = [temp1 UTF8String]; 
pdffile = [NSData dataWithBytes:buf length:length1]; 
[webDisplay loadData:self.pdffile MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil]; 
self.webDisplay.scalesPageToFit = YES; 

TEMP1はXSTRING 長さ1バイトでPDFファイルの長さです。

私は、次のエラーメッセージが出ます:

は、PDFヘッダを見つけることができませんでした: '%のPDFは'

いくつかのアイデアを見つけていませんか?

あなたが言った私の間違った削除の答えで
+0

何bufのように見えるん私はこのライブラリを使用Xcodeで ?それは有効なPDFですか?最初の数バイトを見て、そこに%PDFが表示されますか? –

+0

残念ながら、%PDF文字列はありません。 bufは次のように始まります:255044462D312E350D0A25B5B5B5B50D0A312030206F626A0D0A3C3C2F547970652F436174616C6F67 – Alexander

+1

これは正しく、25 =%、50 = Pなどです。なぜそれが動作していないのか分かりません。 –

答えて

1

:私はPDFからXSTRING作成するために、2つのSAPの標準的な機能モジュールを使用

: SCMS_AO_TABLE_GET_BYTESとSCMS_BINARY_TO_XSTRING - あなたは2550を持っていると言うとき

を、あなたは2、次に5など...あなたは0x25を意味しますか?あなたがアスキー2を持っていれば、そしてあなたが確かに動作しないascii5を持っているなら、16進数25はあなたが望むものです。デバッガのメモリを調べます。ここで

+0

こんにちはPaul、sap関数モジュールSCMS_BINARY_TO_XSTRINGはxstringをバイナリモードで作成し、pdfファイルのlength1を提供します。実際のxstringの長さ= length1 * 2だから、正しいと思います。 – Alexander

+0

確実な唯一の方法は、デバッガのメモリを調べることです。 –

+0

ここではデバッガの値は次のとおりです。temp1:[link](http://www.file-upload.net/download-4181406/temp1.rtf.html); pdffile:[リンク](http://www.file-upload.net/download-4181404/pdffile.rtf.html); bufは残念ながら利用できません:(gdb)po buf 0xa075000は有効なオブジェクトを指していないようです。 – Alexander

2

は溶液である: SAPシステムにBase64でバイナリデータ(XSTRING)を変換する方法がある:HTTPを使用して cl_http_utility => encode_x_base64 は、Base64でデータを転送することが可能です。その後、 a link

// 3) Decode Base 64 
// Then you can put that back like this 
NSData *b64DecData = [Base64 decode:b64EncStr]; 

[webDisplay loadData:b64DecData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];

関連する問題