Я хочу скачать pdf файл. Файл pdf размещать в исходном коде не на сервере. Как мы загружаем локальный (исходный) pdf файл в iOS. заранее спасибо

-2
Muhammad Asif 4 Янв 2016 в 14:57

3 ответа

Лучший ответ

Добро пожаловать в SO. Ваш вопрос расплывчатый и плохо сформулированный. Вы пояснили, что имели в виду в комментариях, но вам следует вернуться и отредактировать свой вопрос.

Ваш вопрос состоит из 2 частей.

  1. Как написать приложение, чтобы оно могло загружать файлы PDF и сохранять их локально, чтобы пользователь мог открыть их в будущем.
  2. Как настроить приложение, чтобы пользователи могли читать локально сохраненные файлы PDF.

Для пункта 1 посмотрите на использование NSURLSession. В нем есть методы, позволяющие сохранять файл прямо на диск. Вы захотите сохранить в каталог документов пользователя.

Пункт 2 более сложный. У вас будет изрядно поработать, чтобы создать программу просмотра PDF. Выполните поиск по «Открытию и просмотру PDF-файла» в справочной системе Xcode, чтобы начать работу.

Вы также можете рассмотреть возможность использования модели документа iOS, чтобы позволить пользователю открывать файлы PDF как документы.

1
Duncan C 4 Янв 2016 в 12:17
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var progressView: UIProgressView!

    override func viewDidLoad() {
        let _ = DownloadManager.shared.activate()
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        DownloadManager.shared.onProgress = { (progress) in
            OperationQueue.main.addOperation {
                self.progressView.progress = progress
            }
        }
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        DownloadManager.shared.onProgress = nil
    }

    @IBAction func startDownload(_ sender: Any) {
        let url = URL(string: "https://scholar.princeton.edu/sites/default/files/oversize_pdf_test_0.pdf")!
        let task = DownloadManager.shared.activate().downloadTask(with: url)
        task.resume()
    }

}
0
fewlinesofcode 30 Окт 2018 в 12:52
-(NSString *)downloadFileToCache:(NSString *)downloadURL saveWithFileName:(NSString *)fileName redownloadIfExist:(BOOL)redownload {

   //Storing to cache storage
   NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
   NSString *documentsDirectory = [paths objectAtIndex:0];

   if (fileName == nil)
   {
     fileName = [documentsDirectory  stringByAppendingPathComponent:[downloadURL lastPathComponent]];
   }
   else
   {
     fileName = [documentsDirectory stringByAppendingPathComponent:fileName];
   }

   NSString *pathDirectory = [fileName stringByDeletingLastPathComponent];
   NSFileManager *fileManager = [NSFileManager defaultManager];

   if([pathDirectory isEqualToString:@""]== NO)
   {
      if ([fileManager fileExistsAtPath: pathDirectory] == NO)
      {
        [fileManager createDirectoryAtPath:pathDirectory withIntermediateDirectories:YES attributes:nil error:nil];
      }
   }
   if (redownload == YES)
   {
      [fileManager removeItemAtPath:fileName error:nil];
   }
   if ([fileManager fileExistsAtPath: fileName] == NO)
   {
       NSURL *url = [NSURL URLWithString:[downloadURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
       NSData *data = [NSData dataWithContentsOfURL:url options:NSDataReadingMappedIfSafe error:nil];
       [data writeToFile:fileName atomically:YES];
   }
   return fileName;
}
0
Abhilash Khunte 20 Янв 2016 в 09:50