【问题标题】:How to integrate MuPDF 1.3 in iOS Project如何在 iOS 项目中集成 MuPDF 1.3
【发布时间】:2014-03-28 16:26:12
【问题描述】:

iOS 有内置的 PDF 渲染引擎,但它不能解决“透明度扁平化”问题。因此,我尝试将 MuPDF 1.3 集成到项目中。 我尝试使用参考 MuPDF 项目,但失败了。 然后我为每个架构构建调试静态库,并使用“库搜索路径”和“其他链接标志”来分隔链接库,同时构建不同架构的二进制文件,但 XCode 一直显示“架构 armxxx 的未定义符号”。 最后,我构建了 MuPDF 的发布版静态库,它应该兼容所有架构,XCode 仍然显示和以前一样的东西。 有没有人成功集成和编译 MuPDF 1.3?请给我一些提示。 非常感谢。

【问题讨论】:

  • 你解决了这个问题?
  • 是的,我构建了MuPDF的发布版本静态库,并将它与所有第三方要求和“JavaScriptCore.framework”一起添加到“Link Binary With Libraries”中。

标签: ios xcode integrate mupdf


【解决方案1】:

很抱歉回答迟了,但它可以帮助人们一天或一天​​。 由于我必须将 MuPDF 库集成到我的 (Swift) 项目之一中,因此我生成了 静态 fat 库并将它们集成到 Xcode 中。

这里有一个分步快速教程:

如何构建静态fat库:

  1. git clone --recursive git://git.ghostscript.com/mupdf.git
  2. 转到mupdf/platform/ios
  3. 用 Xcode 打开 MuPDF.xcodeproj
  4. 将 MuPDF 目标的方案配置为 Release
  5. 在 iPhone 模拟器上构建和运行应用程序。
    • 这将为i386x86_64 平台生成库
  6. 在真正的 iPhone 设备上构建和运行应用程序 - 使用您自己的捆绑包 ID、证书和配置文件。
    • 这将为armv7arm64 平台生成库
  7. 转到mupdf/build/
    • 您将找到两个文件夹,其中包含所有已构建的库:release-ios-i386-x86_64release-ios-armv7-arm64
  8. 现在您需要为 mupdf 及其所有依赖项创建包含所有 4 种架构的胖库。

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. 添加/导入到您的项目中:
    • 来自mupdf/include/mupdf 的所有头文件
    • 来自mupdf/platform/ios/classes 的所有 obj-c 类
    • 来自mupdf/platform/ios 的 common.[h,m] 文件
  2. 添加/导入之前生成的fat库(8个文件)
  3. 通过添加库文件的路径来配置Library Search Path
    • 例如$(inherited) $(PROJECT_DIR)/External/MuPDF/lib/

您现在应该可以使用包含的库构建和运行您的应用了。 使用示例项目了解库的工作原理或任何在线教程。

专业提示:

最终的胖库非常大(~ 46mb)。 您可以通过导入轻松减小应用的最终大小:

  1. 在发布文件夹下,只有来自 mupdf/build/release-ios-armv7-arm64 的 lib.a
  2. 在调试文件夹下,来自mupdf/build/ 的大型生成胖库
  3. DebugRelease 配置设置不同的Library Search Path

完成后,您将能够在每个模拟器和设备上Debug 上构建和运行。但仅适用于Release 的设备。您最终需要哪个作为您的应用程序,通过 AppStore 应该只在真实设备上运行。无需包含调试模拟器架构静态库。

这是我 Xcode 项目中所有导入文件的屏幕截图:

【讨论】:

  • 你试过用 cocoapods 导入它吗?上面来自 Joseph 的示例看起来不错,但我正在使用 Swift 进行尝试,但我不知道如何。
  • 嗨,实际上我没有时间,Joseph 在我仍然不得不处理 MuPDF 之后发布了这个 pod。 PS:我在一个 Swift 项目中集成了 MuPDF,它工作/工作:)
【解决方案2】:

最简单的方法可能是使用我刚刚创建的MuPDF CocoaPod。有一个example application based on that pod

【讨论】:

  • 使用此 CocoaPod 时,我仍然收到此错误消息“您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或禁用此目标的位码。对于运行“pod install”时的架构 arm64”。我更改了位码设置,但没有任何改变,仍然是同样的错误...如果您知道我还能尝试什么,我将不胜感激。
  • @Tunerx 我刚刚推送了一个新版本的 pod (1.8.1),它引入了 mupdf 的 1.8 版本,这解决了这个问题。 (我的答案链接到的示例应用程序也已更新,现在使用位码构建。)
  • @JosephH - 这个库支持 swift 吗?
猜你喜欢
  • 2014-03-18
  • 2014-05-16
  • 1970-01-01
  • 1970-01-01
  • 2013-11-26
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
相关资源
最近更新 更多