如何显示来自文件流的pdf数据

How to show pdf data from a filestream

我正在与 REST API 打交道,您可以在其中拨打电话,然后接收图片或 pdf。我正在使用 URLSession.shared.dataTask 进行调用,当有图像时调用成功(但需要相当长的时间,超过 5 秒)并且我可以在 UIImageView 中显示图像.但是当有pdf时,我不知道如何处理结果。 API returns 图像/pdf 作为“文件流”。

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

我正在使用 swift 3,iOS 10,xcode 8。

首先你可能想把你的问题分为两部分。请编辑再问第二部分

本主题分为两部分

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)
     }
}

此下载过程不包括使用编码参数请求下载 link。方法很简单。