Загрузка локального файла PDF в WebView - PullRequest
4 голосов
/ 21 сентября 2011

Я пытаюсь добавить следующие функции в приложение для iOS, которое я пишу:

  • Отправьте набор файлов PDF в папку ресурсов проекта в XCode
  • Скопируйте PDF-файлы в каталог приложения
  • Откройте PDF в веб-просмотре.

Насколько я вижу, первые два шага работают нормально (я использовал FileManager для проверки fileExistsAtPath после операции копирования). Тем не менее, веб-представление пустое и выдает ошибку («запрошенный URL-адрес не существует на сервере»). Мой код для открытия файла выглядит следующим образом:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                          NSUserDomainMask, YES);
NSString *localDocumentsDirectory = [paths objectAtIndex:0];
NSString *pdfFileName = @"example.pdf";
NSString *localDocumentsDirectoryPdfFilePath = [localDocumentsDirectory  
                                     stringByAppendingPathComponent:pdfFileName];
pdfUrl = [NSURL fileURLWithPath:localDocumentsDirectoryPdfFilePath];
[webView loadRequest:[NSURLRequestWithURL:pdfUrl];

Это прекрасно работает на симуляторе, но не работает на устройстве

Ответы [ 3 ]

1 голос
/ 21 сентября 2011

Вы уверены, что не хотите, чтобы UIDocumentInteractionController сделал тяжелую работу за вас?

UIDocumentInteractionController *dc = [UIDocumentInteractionController interactionControllerWithURL:fileURL];
dc.delegate = self;
[dc presentPreviewAnimated:YES];
0 голосов
/ 01 августа 2017

Как предложено bshirley UIDocumentInteractionController - отличный вариант для представления вашего PDF.Первоначально я пытался использовать стороннюю JSQWebViewController , но я получал пустой экран на устройстве, пока на симуляторе он работал. UIDocumentInteractionController отлично работает для меня!Для Swift вы можете сделать:

let interactionController = UIDocumentInteractionController(url: fileURL)
interactionController.delegate = self
interactionController.presentPreview(animated: true)

и реализовать метод делегата:

// Mark: UIDocumentInteractionControllerDelegate
func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
    return UIApplication.shared.keyWindow!.rootViewController!
}
0 голосов
/ 25 октября 2011

Как написала Анна Каренина выше, «Устройство чувствительно к регистру. Убедитесь, что имя файла точно соответствует»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...