Я хочу создать приложение, которое также включает в себя возможность показывать и сохранять PDF-файлы внутри приложения и отображать их (в виде файловой системы) в виде таблицы, открывать их, когда я нажимаю на один PDF-файл и открываю PDF-файл в Document Interaction. Controller.My проблема в PDF-файл загружен. Но файлы PDF хранятся по локальному пути.
- (недействительно) downloadMultiplePDFFiles
{
NSURL * ClientWebServiceURL = [NSURL URLWithString: DOC_VIEWER_URL];
NSString * str_URL = [NSString stringWithFormat: @ "% @", ClientWebServiceURL];
NSURL * url = [NSURL URLWithString: str_URL];
// --- добавление данных в url- -
NSString * body = [NSString stringWithFormat: @ "userid =% @ & sessionid =% @ & tenantid =% @ & deviceid =% @ & documentmentid =% @ & documenttype =% @ & devicetype =% @ & isencrypted = Y" , self-> userid, self-> sessionid, self-> tenantid, self-> deviceid, [NSString stringWithFormat: @ "% @", documentmentid], [documenttype stringByReplacingOccurferencesOfString: @ "" withString: @ ""], devicetype] ;
// --- отправка запроса на сервер ---
NSMutableURLRequest * request = [[NSMutableURLRequest alloc] initWithURL: url];
[набор запросовHTTPMethod: @ "POST"];
[запрос setHTTPBody: [body dataUsingEncoding: NSUTF8StringEncoding]];
self.d ownloadTask = [self.backgroundSession downloadTaskWithRequest: запрос];
[self.downloadTask резюме];
}
- (void) URLSession: (NSURLSession *) сессия downloadTask: (NSURLSessionDownloadTask *) downloadTask didWriteData: (int64_t) bytesWritten totalBytesWritten: (int64_t) totalBytesWritten totalBytesExpectedToWrite: (int64_t) totalBytesExpectedToWrite {
- (void) URLSession: (NSURLSession *) сеанс downloadTask: (NSURLSessionDownloadTask *) downloadTask didFinishDownloadingToURL: (NSURL *) downloadURL {
NSFileManager * fileManager = [NSFileManager defaultManager];
NSArray * URLs = [fileManager URLsForDirectory: NSDocumentDirectory inDomains: NSUserDomainMask];
NSURL * documentsDirectory = [URLs objectAtIndex: 0];
NSURL [[downloadTask originalRequest] URL];
NSURL * destinationURL = [DocumentsDirectory URLByAppendingPathComponent: [originalURL lastPathComponent]];
NSError * errorCopy;
// Для целей тестируя, удалите любой существующий файл в месте назначения.
[fileManager removeItemAtURL: destinationURL error: NULL];
BOOL success = [fileManager copyItemAtURL: downloadURL toURL: destinationURL error: & errorCopy];
if (success)
{
dispatch_asyn c (dispatch_get_main_queue (), ^ {
// загрузка завершена - откройте pdf
self.documentInteractionController = [UIDocumentInteractionController взаимодействияControllerWithURL: destinationURL];
// Настройка взаимодействия с документом oller
[self.documentInteractionController setDelegate: self];
// Предварительный просмотр PDF
[self.documentInteractionController presentPreviewAnimated: YES];
// self .progressView.hidden = YES;
});
} else {
NSLog (@ "Ошибка при копировании:% @", [errorCopy localizedDescription]);
}
// myPath = [[NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, Да)
// NSFileManager * fileManager = [NSFileManager defaultManager];
// [fileManager moveItemAtURL: downloadURL toURL: [NSURL fileURLWithPath: myPath] ошибка: ноль];
}
- (UIViewController *) documentInteractionControllerViewControllerForPreview: (UIDocumentInteractionController *) контроллер {
вернуть себя;
}
- (void) URLS : (NSURLSession *) сеансовая задача: (NSURLSessionTask *) задача didCompleteWithError: (NSError *) error {
if (error == nil) {
NSLog (@ "Task: % @ успешно завершено ", задача);
} else {
NSLog (@" Задача:% @ выполнена с ошибкой:% @ ", задача, [ошибка localizedDescription]);
}
double progress = (double) task.countOfBytesReceived / (double) task.countOfBytesExpectedToReceive;
dispatch_asyn c (dispatch_get_main_queue (), ^ {
// self.progressView.progress = progress;
});
// self.downloa dTask = nil;
}
- (void) URLSessionDidFinishEventsForBackgroundURLSession: (NSURLSession *) session {
AppDelegate * appDelegate = (AppDelegate *) [ UIApplication sharedApplication] делегат];
if (appDelegate.backgroundSessionCompletionHandler) {
void (^ завершениюHandler) () = appDelegate.backgroundSessionCompletionHandler;
appDelegationChill_backSpace.ground; 1153 *
completeHandler ();
}
NSLog (@ "Все задачи завершены");
}
Как только файл будет скачал я получил путь вот так.
/ Пользователи / Библиотека / Разработчик / CoreSimulator / Устройства / 9DEA0DEB-662E-4080-AE2E-F2E3429A5A64 / данные / Контейнеры / Данные / Приложение / BD7BD3D8-E65A-4977-A320 -69672A673597 / Documents / ViewDo c .sv c
Проблема в том, что pdf-файл не доступен по этому пути. И каждый раз, когда загружается pdf-файл. Файл в UIDocument inter контроллер действий. Пожалуйста, помогите мне любое тело. Заранее спасибо.