Открытие PDF в Safari на iPhone - PullRequest
0 голосов
/ 16 апреля 2010

Можно ли открыть PDF-файл с веб-сайта в Safari, чтобы сохранить его на локальном диске?

Ответы [ 2 ]

9 голосов
/ 16 апреля 2010

Вы можете использовать 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-адрес файла.

0 голосов
/ 16 апреля 2010

Safari откроет PDF, но не сохранит его для последующего поиска.

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