我的iOS应用程序有一个奇怪的问题,它调用.NET Web服务来恢复PDF。
首先,Web服务刚刚返回了一个“简单”的pdf(在Word中创建)。我测试了我的应用程序,一切运行良好。
我很高兴:)。然后,我使用Microsoft Report Viewer来真正生成PDF ...
所以我真的实现了我的Web服务,用ReportViewer(http://msdn.microsoft.com/en-us/library/ms251671(v=vs.80).aspx)创建PDF。生成的pdf是正确的,我可以在生成时在我的服务器上打开它。但是当我在iOS应用程序中收到答案时,我无法打开它,因为它已损坏。
以下是我从Web服务收到的XML的区别:
因此,主要区别在于图像参数一部分使用简单PDF,拆分使用ReportViewer PDF。
实际上我不知道为什么字节数组会被拆分,我不知道如何才能收到有效的PDF。
再一次,使用ReportViewer生成的PDF很好,我可以在服务器上打开它,当我通过电子邮件发送它时,我可以在iPad上打开它。当Web服务将PDF作为字节数组返回时,问题出现了......
答案 0 :(得分:1)
“拆分”图像实际上是Web服务的工件,它试图解析行分隔符的图像(即0d0a ==回车符/新行)。如果你很幸运,你可以通过记录每个记录(包括0d0a)来重新组合图像,然后将它们连接起来。这可能比解决实际问题更容易,即您的Web服务不是向您发送单个blob,而是尝试将图像解析为“行”。
答案 1 :(得分:0)
没关系,我通过将所有数据包含在图像数组中来解决我的问题。
因此,考虑到我从Web服务(http://pastie.org/7982811)收到的XML,这是我的Objective-c代码,用于构建正确的NSData(pdf):
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
}