2016-12-20 1 views
2

REST API에 전화를 걸어 이미지 또는 pdf 파일을받을 수 있습니다. 전화를 걸 때 URLSession.shared.dataTask을 사용하고 있습니다. 이미지가 있으면 전화가 성공합니다. 그러나 꽤 오랜 시간이 걸립니다. 5 초 이상 걸립니다. UIImageView에 이미지를 표시 할 수 있습니다. 그러나 pdf가있을 때 나는 그 결과를 어떻게 다룰 지 모른다. API는 image/pdf를 '파일 스트림'으로 반환합니다.파일 스트림에서 PDF 데이터를 표시하는 방법

데이터를 콘솔에 인쇄 할 때 크기 (바이트)와 크기가 서버에서와 같이 인쇄되므로 올바른 데이터가있는 방식으로 pdf를 보는 방법을 모르겠습니다. 나는 빠른 3 사용하고

, 아이폰 OS (10), 엑스 코드 (8)

+1

먼저 파일 스트림을 pdf 형식으로 저장할 수 있습니까? 그렇다면 웹 뷰를 사용하여 앱에 PDF 데이터를 표시 할 수 있습니다. –

+0

이 질문에 대한 설명이 많습니다. 각 주제에 대해 별도로 질문하는 것이 좋습니다 (예 : PDF 다운로드 및 저장, 저장 한 PDF 읽기 방법). –

+0

오늘은 나중에 아래에서 답변을 테스트 할 것입니다 - Alamofire로 다운로드하고 저장하십시오. 하지만, 처음부터 그 계획은 결코 아니 었습니다. 몇개의 pdf 파일을 다운로드해야하기 때문에 파일 시스템을 버릴 필요가 없으므로 결국에는 콜렉션 뷰에 표시하고 싶습니다. 시뮬레이터에서 파일 시스템을 사용할 수 있는지 잘 모르겠습니다. 하지만 가장 좋은 솔루션은 이미지와 함께해야하며, 이미지 = UIImage (데이터 : 데이터)로 만든 다음 이미지를 tableview/collection에 표시해야합니다. – user2856066

답변

0

두 부분으로 질문을 할 수 있습니다 먼저. 그것을 편집하고 두 번째 부분을 다시 요청하십시오.

이 PDF를 다운로드이 주제

1에서 두 부분이 있습니다 및 파일 시스템에 저장된 PDF를 얻고 UIWebView 또는 UIDocumentInteractionController를 사용하여 읽을 파일 시스템

2에 저장

그래서 첫 번째 설명을하겠습니다.

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

이 다운로드 절차는 인코딩 된 매개 변수를 사용하여 다운로드 링크 요청에 포함되지 않습니다. 그것은 단지 간단한 방법이었습니다.

+0

제안 해 주셔서 감사합니다. let destination = DownloadRequest.suggestedDownloadDestination (for : .documentDirectory)을 사용하고 WKWebView에서 로컬로드를 사용하면 작동합니다. 이제는 로컬 파일에서 무슨 일이 일어나는지 궁금합니다. 앱을 닫을 때 파일이 삭제되고 다른 파일에서 파일을 덮어 쓰면 내 메모리를 채우지 않습니다. 그걸 확인해야 해. – user2856066

관련 문제