如何在iOS项目中集成MuPDF 1.3

时间:2014-02-26 03:44:48

标签: ios xcode integrate mupdf

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

2 个答案:

答案 0 :(得分:0)

对于迟到的答案感到抱歉,但它可以帮助人们一天或另一天。 因为我必须将MuPDF库集成到我的一个(Swift)项目中,所以我生成了 静态胖库并将它们集成到Xcode中。

在这里,您将逐步学习快速教程:

如何构建静态胖库:

  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 one及其所有依赖项创建包含所有4种体系结构的胖库。
  9. 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/
      • 的所有obj-c类
      • 来自mupdf/platform/ios
      • 的常见。[h,m]文件
    2. 添加/导入先前生成的脂肪库(8个文件)
    3. 通过添加库文件的路径来配置Library Search Path
      • 例如$(inherited) $(PROJECT_DIR)/External/MuPDF/lib/
    4. 您现在应该能够使用包含的库来构建和运行您的应用程序。 使用示例项目来了解库的工作原理或任何在线教程。

      专业提示:

      最终的胖库一共都很大(约46mb)。 您可以通过导入以下内容轻松缩小应用的最终尺寸:

      1. 在发布文件夹下只有mupdf/build/release-ios-armv7-arm64
      2. 中的lib.a
      3. 在调试文件夹下,mupdf/build/
      4. 生成了大量的胖库
      5. Library Search PathDebug配置
      6. 设置不同的Release

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

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

        enter image description here

答案 1 :(得分:0)

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