如何显示文件流中的pdf数据

时间:2016-12-20 07:59:44

标签: swift pdf filestream urlsession

我正在攻击REST API,您可以拨打电话然后接收图片或pdf。我正在使用URLSession.shared.dataTask拨打电话,当有图像时,呼叫成功(但需要很长时间,超过5秒),我可以在UIImageView中显示图像。但是当有pdf时,我不知道如何处理结果。 API将image / pdf作为“文件流”返回。

当我将数据打印到控制台时,它打印的大小(字节)和它与服务器中的大小相同,所以在某种程度上我有正确的数据,我只是不知道如何查看pdf

我使用的是swift 3,iOS 10,xcode 8。

1 个答案:

答案 0 :(得分:0)

首先,您可能想将您的问题分成两部分。请编辑它并再次询问第二部分。

本主题分为两部分

<强> 1。下载PDF并将其保存在文件系统

<强> 2。获取保存在文件系统中的pdf并使用UIWebViewUIDocumentInteractionController

阅读

所以,我会解释第一个。

如果您使用REST HTTP客户端,则可以完成第一个:Alamofire : Elegant HTTP Networking in Swift。所以不需要使用URLSession这样的情况,如果你这样做,你将不得不写这么多行。它简单易行。所以,我希望你尝试一下。如果您需要URLSession,请发表评论。

那么如何使用Alamofire下载pdf:

let destination: DownloadRequest.DownloadFileDestination = { _, _ in
let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0]
//.documentDirectory means it will store in Application Document Folder
let fileURL = documentsURL.appendPathComponent("data.pdf")

      return (fileURL, [.removePreviousFile, .createIntermediateDirectories])
}

Alamofire.download(urlString, to: destination).response { response in
print(response)

     if response.error == nil, let filePath = response.destinationURL?.path {
           // do anything you want with filePath here.
           // Here what you have to do Step 2. (Read the file that you downloaded)
     }
}

此下载程序不包括请求带编码参数的下载链接。这只是简单的方法。