Платформа чтения iOS vfr не может использовать загруженный PDF

Я нашел платформу для чтения vfr, когда искал несколько лучших альтернатив для отображения pdf в приложении. В моем контексте мне нужно скачать PDF; он уже не включен в комплект приложений. Было легко использовать инфраструктуру vfr со встроенным pdf, но я до сих пор был озадачен работой с загруженными данными, которые я записываю в файл, а затем инициировал ReaderDocument с его путем. Я могу загрузить тот же файл в UIWebView без проблем, поэтому я не верю, что это данные. Вот код:

NSString *fullPathToPDF = [[[self appDelegate] urlForFileUnderRecursiveDocWithName:self.pdfName andOptionallyStartingAtDirectory:[[self appDelegate] pathURLForImagesDirectory]] path];
        ReaderDocument *pdfDoc = [ReaderDocument withDocumentFilePath:fullPathToPDF password:nil];

Полученный pdfDoc будет либо нулевым, либо, при передаче его по полному пути, как описано выше, завершится с ошибкой с утверждением из строки 229 ReaderDocument

NSAssert(NO, @"CGPDFDocumentRef == NULL");

потому что (я делаю разумное предположение) эта строка (217; тот же класс):

CGPDFDocumentRef thePDFDocRef = CGPDFDocumentCreateX(docURLRef, _password);

не удается создать CGPDFDocumentRef. Ранее я упоминал различие между передачей полного пути по сравнению с передачей имени файла, и это потому, что при просмотре кода класс ReaderDocument, по-видимому, делает некоторые предположения о том, где он ожидает найти файлы. Я не смог заставить его работать независимо от того, куда я сохраняю файл или что я передаю в него... с помощью метода DocumentFilePath.

Повторюсь, я могу использовать точно такой же файл и открыть его в UIWebView без проблем.

Итак, кто-нибудь сталкивался с такой же проблемой или смог сделать то, что я пытаюсь успешно? Благодарю.

1 ответ

Решение

Извините, что ответил на это так поздно. Я только столкнулся с этой проблемой сам, так что думал, что передам свою мудрость.

Я предполагаю, что вы загружаете PDF во временный каталог. Эта структура ищет файл в NSDocumentDirectory. Поэтому, когда вы собираетесь сохранить загруженный файл, просто сохраните его по следующему пути:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *baseDocumentPath = [paths objectAtIndex:0];
NSString *filePath = [baseDocumentPath stringByAppendingPathComponent:@"/temp.pdf"];

Как только вы это сделаете, он загрузится правильно.

ps Если я в конечном итоге изменю ReaderDocument, чтобы разрешить временный каталог, я опубликую изменения здесь.

Другие вопросы по тегам