如何下载来自base64string服务器的pdf文件?

时间:2018-05-30 07:09:19

标签: ios objective-c

我需要下载pdf文件,我将其作为base64string在api响应中获取。

我应该如何基于单元格标签在本地保存它并使用documentcontroller进行预览?

Eg-api响应是一个包含不同pdf文件的字典数组,其中我们有一个名为“pdf”的键:“zcvffaewww ..”

我需要在uitableviewcell上点击uibutton下载这些pdf文件,并在documentcontroller中预览。

请帮忙。

感谢。

1 个答案:

答案 0 :(得分:1)

你在JSON中得到一个base64字符串,这意味着你也得到了正确的文件名和文件类型(如果没有得到它就没事了)

第1步:您可以在webView中查看该PDF,而不是下载。这是实现此目的的方法,

// convert your base64 string into NSData
NSData* myData = [NSData dataFromBase64String: yourBase64String];

然后写下面的代码在webView中显示pdf,

[_webView loadData:myData
                 MIMEType:@"application/pdf"
                 textEncodingName:@"NSUTF8StringEncoding"
                   baseURL:[NSURL URLWithString:@"https://www.google.co.in/"]];

// zooming pdf view

 _webView.scalesPageToFit = YES;
 _webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);

它将在webView中显示pdf

第2步:下载pdf,编写代码

NSURL *URL = [NSURL URLWithString:
                      [NSString stringWithFormat:@"data:application/pdf;base64,%@",
                       numStr]];

NSData *urlData = [NSData dataWithContentsOfURL:url];
if ( urlData )
{
  NSArray       *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  NSString  *documentsDirectory = [paths objectAtIndex:0];  

  NSString  *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"filename.pdf"];
  [urlData writeToFile:filePath atomically:YES];
}