0

.NET Web サービスを呼び出して PDF を復元する iOS アプリケーションに奇妙な問題があります。

  • Web サービスはいくつかのことを行い、Web サービスの参照として PDF ドキュメントを返します ( out パラメータを介して) 。
  • iOS アプリケーションは Web サービスを呼び出し、応答を受け取り、受け取った XML を処理します。

まず、Web サービスは "単純な" pdf (Word で作成) を返しました。アプリケーションをテストしたところ、すべて正常に動作していました。

私は幸せでした :)。次に、Microsoft Report Viewer を使用して実際に PDF を生成しました...

そのため、ReportViewer ( http://msdn.microsoft.com/en-us/library/ms251671(v=vs.80).aspx ) を使用して PDF を作成するための Web サービスを実際に実装します。生成された pdf は正しく、生成されたときにサーバーで開くことができます。しかし、iOSアプリで回答を受け取ると、破損していて開くことができません。

Web サービスから受け取る XML の違いは次のとおりです。

そのため、主な違いは、単純な PDF とは1 つの部分であり、ReportViewer PDFとは分割されている画像パラメーターです。

実際、バイト配列が分割されている理由がわかりません。また、有効な PDF を受け取るために何ができるかわかりません。

繰り返しますが、ReportViewer で生成された PDF は良好です。サーバー上で開くことができ、電子メールで送信すると iPad で開くことができます。問題は、Web サービスが PDF をバイト配列として返すときに発生します...

4

2 に答える 2

0

大丈夫です。画像配列に含まれるすべてのデータを連結することで問題を解決しました。

したがって、Web サービス ( http://pastie.org/7982811 ) から受け取った XML を考慮して、正しい NSData (pdf) を構築するための私の Objective-C コードを次に示します。

NSMutableData *concatData = [NSMutableData data];
NSArray *partsData = [result objectForKey:@"image"];

for(NSDictionary *dicPdfDataLine in partsData) {            // Foreach parts of data
    NSArray *arrayPdfDataLine = [dicPdfDataLine allValues];
    NSData *dataLine = [arrayPdfDataLine objectAtIndex:0];  // Get the NSData of the current part part
    [concatData appendData:dataLine];                       // Concat the data
}
于 2013-05-31T09:09:53.693 に答える