Вы можете использовать NSURL класс для загрузки pdf-файла в каталог документов, минуя необходимость открывать его в Safari (и впоследствии закрывать собственное приложение).
UIWebView позволяет легко и просто отображать внешние PDF-файлы, а также локальные файлы (просто укажите правильный путь к файлу), так что вы даже можете загрузить PDF-файл в папку с документами и затем отобразить его из локальный кеш на более поздний срок.
Добавлен пример кода ниже
Для более простого примера вы можете найти это приемлемым для вашего приложения; Это позволит загрузить файл в папку с документами, но использовать функцию блокировки (initWithContentsOfURL
), поэтому вы можете столкнуться с проблемами с большими файлами / медленными соединениями:
(этот код должен быть всем, что вам нужно, но вы, вероятно, захотите создать функцию для обработки этого шага / обработки памяти / проверки на наличие ошибок и т. Д.)
//Grab the file from the URL
NSData *pdfData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.website.com/doc1.pdf"]];
// Put the data into a file in your Documents folder
NSString *docFolder = [[NSString alloc] initWithString:[[[[NSBundle mainBundle] resourcePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"Documents"]];
NSString *filePath = [resourceDocPath stringByAppendingPathComponent:@"doc1.pdf"];
[pdfData writeToFile:filePath atomically:YES];
Чтобы дать вам базовый пример для сборки, для отображения файла PDF из папки «Документы» в веб-обозрении достаточно следующего кода:
-(void)viewDidLoad
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfPath = [documentsDirectory stringByAppendingPathComponent:@"doc.pdf"];
// ...
webView.scalesPageToFit = YES;
webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:pdfPath isDirectory:NO]]];
}
Если вы хотите отобразить PDF-файл непосредственно с веб-сайта (а не из локального файла), вы можете вместо этого pdfPath
содержать полный URL-адрес файла.