【问题标题】:How to download pdf file coming from server which is in base64string?如何从base64string中的服务器下载pdf文件?
【发布时间】:2018-05-30 07:09:18
【问题描述】:

我需要下载我在 api 响应中作为 base64string 获得的 pdf 文件。

如何根据单元格标签在本地保存并使用documentcontroller预览?

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

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

请帮忙。

谢谢。

【问题讨论】:

标签: ios objective-c


【解决方案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

第二步:下载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];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多