Как интегрировать MuPDF 1.3 в iOS Project

Существует встроенный механизм рендеринга PDF для iOS, но он не решает проблему «выравнивания прозрачности». Поэтому я пытаюсь интегрировать MuPDF 1.3 в проект. Я попытался использовать ссылку на проект MuPDF, но это не удалось. Затем я создаю отладочные статические библиотеки для каждой архитектуры и использую «Пути поиска библиотеки» и «Другие флаги ссылок», чтобы разделить связанную библиотеку при создании двоичного файла другой архитектуры, но XCode продолжает показывать «Неопределенные символы для архитектуры armxxx». Наконец, я создал статическую библиотеку MuPDF версии релиза, которая должна быть совместима со всеми архитектурами, и XCode по-прежнему показывает то же самое, что и раньше. Кто-нибудь успешно интегрирует и компилирует MuPDF 1.3? Пожалуйста, дайте мне подсказку. Большое спасибо.


person Steven Huang    schedule 26.02.2014    source источник
comment
Вы устранили проблему?   -  person Bagusflyer    schedule 15.03.2014
comment
Да, я создал статическую библиотеку MuPDF версии для выпуска и добавил ее в Link Binary With Libraries вместе со всеми требованиями третьих сторон и JavaScriptCore.framework.   -  person Steven Huang    schedule 03.04.2014


Ответы (2)


Извините за поздний ответ, но это может помочь людям день или другой. Поскольку мне нужно было интегрировать библиотеку MuPDF в один из моих (Swift) проектов, я создал статические толстые библиотеки и интегрировал их в Xcode.

Здесь вы идете с пошаговым кратким руководством:

Как собрать статическую библиотеку жиров:

  1. git clone --рекурсивный git://git.ghostscript.com/mupdf.git
  2. Go to mupdf/platform/ios
  3. Откройте MuPDF.xcodeproj с помощью Xcode.
  4. Настройте схему цели MuPDF на Release.
  5. Build and run the app on an iPhone simulator.
    • This will generate the library for platforms i386 and x86_64
  6. Build and Run the app on a real iPhone device - use your own bundle id, certificate and provisioning profile.
    • This will generate the library for platforms armv7 and arm64
  7. Go to mupdf/build/
    • You will find two folders that contains all built librairies: release-ios-i386-x86_64 and release-ios-armv7-arm64
  8. Теперь вам нужно создать толстые библиотеки со всеми 4 архитектурами для mupdf и всех его зависимостей.

lipo -create ./*/libcurl.a -output 'libcurl.a' ; lipo -create ./*/libfreetype.a -output 'libfreetype.a' ; lipo -create ./*/libjbig2dec.a -output 'libjbig2dec.a' ; lipo -create ./*/libjpeg.a -output 'libjpeg.a' ; lipo -create ./*/libmujs.a -output 'libmujs.a' ; lipo -create ./*/libmupdf.a -output 'libmupdf.a' ; lipo -create ./*/libopenjpeg.a -output 'libopenjpeg.a' ; lipo -create ./*/libz.a -output 'libz.a'

Как интегрировать MuPDF в свой проект:

  1. Add/import into your project:
    • All header files from mupdf/include/mupdf
    • Все классы obj-c из mupdf/platform/ios/classes
    • Общие файлы .[h,m] из mupdf/platform/ios
  2. Добавить/импортировать ранее созданные толстые библиотеки (8 файлов)
  3. Configure the Library Search Path by adding the path to your library files.
    • For example $(inherited) $(PROJECT_DIR)/External/MuPDF/lib/

Теперь вы сможете собрать и запустить приложение с включенной библиотекой. Используйте пример проекта, чтобы понять, как работает библиотека или любой онлайн-учебник.

Профессиональный совет:

Окончательные толстые библиотеки вместе довольно большие (~ 46mb). Вы можете легко уменьшить окончательный размер вашего приложения, импортировав:

  1. В папке релиза только lib.a из mupdf/build/release-ios-armv7-arm64
  2. Под папкой отладки большие сгенерированные толстые библиотеки из mupdf/build/
  3. Установите разные Library Search Path для Debug и Release конфигурации.

После этого вы сможете собирать и запускать Debug на всех симуляторах и устройствах. Но только на устройствах для Release. Которое, в конце концов, вам нужно как ваше приложение, потому что AppStore должен работать только на реальных устройствах. Нет необходимости включать статические библиотеки архитектуры симулятора отладки.

Вот скриншот всех импортированных файлов в мой проект Xcode:

введите здесь описание изображения

person Kevin Delord    schedule 29.06.2015
comment
Вы пытались импортировать его с помощью кокоаподов? Пример выше от Джозефа кажется хорошим, но я пытаюсь использовать Swift, и я не могу понять, как это сделать. - person Henrique da Costa; 08.06.2016
comment
Привет, у меня на самом деле не было времени, и Джозеф выпустил этот модуль после того, как мне еще пришлось иметь дело с MuPDF. PS: я интегрировал MuPDF в проект Swift, и он работал/работает :) - person Kevin Delord; 08.06.2016

Вероятно, проще всего использовать только что созданный мной MuPDF CocoaPod. Существует пример приложения на основе этого модуля.

person JosephH    schedule 05.07.2015
comment
При использовании этого CocoaPod я все еще получаю это сообщение об ошибке. Вы должны перестроить его с включенным бит-кодом (параметр Xcode ENABLE_BITCODE), получить обновленную библиотеку от поставщика или отключить бит-код для этой цели. для архитектуры arm64 при запуске pod install. Я изменил настройку битового кода, но ничего не изменилось, все та же ошибка... Если вы знаете, что еще я могу попробовать, я был бы очень признателен. - person Tunerx; 03.12.2015
comment
@Tunerx Я только что выпустил новую версию модуля (1.8.1), которая использует версию 1.8 mupdf, это решает эту проблему. (Пример приложения, на которое ссылается мой ответ, также был обновлен и теперь строится с использованием битового кода.) - person JosephH; 21.12.2015
comment
@JosephH - поддерживает ли эта библиотека swift? - person Mak13; 27.01.2019