代码之家  ›  专栏  ›  技术社区  ›  Steven Huang

如何在iOS项目中集成MuPDF 1.3

  •  3
  • Steven Huang  · 技术社区  · 12 年前

    iOS中有内置的PDF渲染引擎,但它不能解决“透明度展平”问题。因此,我尝试将MuPDF1.3集成到项目中。 我试图引用MuPDF项目,但失败了。 然后,我为每个体系结构构建调试静态库,并使用“库搜索路径”和“其他链接标志”来分离链接库,同时构建不同体系结构的二进制文件,但XCode始终显示“未定义的体系结构armxxx符号”。 最后,我构建了MuPDF的发布版本静态库,该库应兼容所有架构,XCode仍然显示与以前相同的内容。 是否有人成功地集成和编译了MuPDF 1.3?请给我一些提示。 谢谢。

    2 回复  |  直到 12 年前
        1
  •  1
  •   Kevin Delord    11 年前

    很抱歉回答晚了,但这可能会对人们有所帮助。 由于我必须将MuPDF库集成到我的一个(Swift)项目中 并将它们集成到Xcode中。

    这里是一个循序渐进的快速教程:

    如何构建静态脂肪库:

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

    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
      • 来自的所有obj-c类 mupdf/platform/ios/
      • 共同点。[h,m]文件来自 mupdf/平台/ios
    2. 添加/导入以前生成的fat库(8个文件)
    3. 配置 Library Search Path 通过将路径添加到库文件。
      • 例如 $(inherited) $(PROJECT_DIR)/External/MuPDF/lib/

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

    专业提示:

    最终的fat库总共相当大(约46mb)。 您可以通过导入以下内容轻松减小应用程序的最终大小:

    1. 在发布文件夹下 mupdf/build/release-ios-armv7-arm64
    2. 在调试文件夹下,大生成的胖库来自 mupdf/构建/
    3. 设置不同的 库搜索路径 对于 Debug Release 配置。

    一旦完成,您将能够 构建并运行 调试 在每个模拟器和设备上。但仅在以下设备上 释放 。最终你需要通过AppStore作为你的应用 应该只在真实设备上运行。不需要包含调试模拟器架构静态库。

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

    enter image description here

        2
  •  1
  •   JosephH    11 年前

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