Используя PDFKit
в swift, вы можете использовать PDFDocument
для открытия PDF файлов. Это легко и хорошо работает. Но я создаю пользовательский просмотрщик PDF (для pdf файлов комиксов), который соответствует моим потребностям, и есть одна проблема, которую я имею. В телезрителе мне не нужно иметь весь файл PDF в памяти. Мне нужно всего лишь несколько страниц за раз.
Кроме того, PDF файлы состоят только из изображений. Там нет текста или чего-то еще.
При создании экземпляра PDFDocument
все данные PDF загружаются в память. Если у вас действительно огромные pdf файлы (более 1 ГБ), это не оптимально (и может произойти сбой на некоторых устройствах). Насколько я знаю, в PDFKit нет способа загружать только части PDF-документа.
Что я могу с этим поделать? Я не нашел библиотеку swift/obj-c, которая может это сделать (хотя я не знаю правильных ключевых слов для ее поиска).
Моим обходным решением было бы предварительно обработать PDF файлы и сохранить каждую страницу как изображение в директории.documents (или аналогичной) с помощью FileManager
. Это приведет к огромному количеству файлов, но решит проблему с памятью. Хотя я не уверен, что мне нравится этот подход.
Обновить:
Поэтому я сделал то, что предложили @Prcela и @Sahil Manchanda. Кажется, сейчас работает.
@yms: Хм, это может быть проблемой. Это происходит даже тогда, когда есть только изображения? Без всего остального в pdf.
@Carpsen90: они локальны (сохранены в каталоге документов).
EDIT: Я не принял ответ ниже или дал ему щедрость. Это было автоматически. Это не решает проблему. Он по-прежнему загружает весь PDF файл в память!