Существует встроенный механизм рендеринга PDF для iOS, но он не решает проблему «выравнивания прозрачности». Поэтому я пытаюсь интегрировать MuPDF 1.3 в проект. Я попытался использовать ссылку на проект MuPDF, но это не удалось. Затем я создаю отладочные статические библиотеки для каждой архитектуры и использую «Пути поиска библиотеки» и «Другие флаги ссылок», чтобы разделить связанную библиотеку при создании двоичного файла другой архитектуры, но XCode продолжает показывать «Неопределенные символы для архитектуры armxxx». Наконец, я создал статическую библиотеку MuPDF версии релиза, которая должна быть совместима со всеми архитектурами, и XCode по-прежнему показывает то же самое, что и раньше. Кто-нибудь успешно интегрирует и компилирует MuPDF 1.3? Пожалуйста, дайте мне подсказку. Большое спасибо.
Как интегрировать MuPDF 1.3 в iOS Project
Ответы (2)
Извините за поздний ответ, но это может помочь людям день или другой. Поскольку мне нужно было интегрировать библиотеку MuPDF в один из моих (Swift) проектов, я создал статические толстые библиотеки и интегрировал их в Xcode.
Здесь вы идете с пошаговым кратким руководством:
Как собрать статическую библиотеку жиров:
- git clone --рекурсивный git://git.ghostscript.com/mupdf.git
- Go to
mupdf/platform/ios
- Откройте MuPDF.xcodeproj с помощью Xcode.
- Настройте схему цели MuPDF на Release.
- Build and run the app on an iPhone simulator.
- This will generate the library for platforms
i386
andx86_64
- This will generate the library for platforms
- 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
andarm64
- This will generate the library for platforms
- Go to
mupdf/build/
- You will find two folders that contains all built librairies:
release-ios-i386-x86_64
andrelease-ios-armv7-arm64
- You will find two folders that contains all built librairies:
- Теперь вам нужно создать толстые библиотеки со всеми 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 в свой проект:
- Add/import into your project:
- All header files from
mupdf/include/mupdf
- Все классы obj-c из
mupdf/platform/ios/
classes - Общие файлы .[h,m] из
mupdf/platform/ios
- All header files from
- Добавить/импортировать ранее созданные толстые библиотеки (8 файлов)
- Configure the
Library Search Path
by adding the path to your library files.- For example
$(inherited) $(PROJECT_DIR)/External/MuPDF/lib/
- For example
Теперь вы сможете собрать и запустить приложение с включенной библиотекой. Используйте пример проекта, чтобы понять, как работает библиотека или любой онлайн-учебник.
Профессиональный совет:
Окончательные толстые библиотеки вместе довольно большие (~ 46mb). Вы можете легко уменьшить окончательный размер вашего приложения, импортировав:
- В папке релиза только lib.a из
mupdf/build/release-ios-armv7-arm64
- Под папкой отладки большие сгенерированные толстые библиотеки из
mupdf/build/
- Установите разные
Library Search Path
дляDebug
иRelease
конфигурации.
После этого вы сможете собирать и запускать Debug
на всех симуляторах и устройствах. Но только на устройствах для Release
. Которое, в конце концов, вам нужно как ваше приложение, потому что AppStore должен работать только на реальных устройствах. Нет необходимости включать статические библиотеки архитектуры симулятора отладки.
Вот скриншот всех импортированных файлов в мой проект Xcode:
Вероятно, проще всего использовать только что созданный мной MuPDF CocoaPod. Существует пример приложения на основе этого модуля.