11

我按照以下示例在我的应用程序(Xamarin.iOS)中查看pdf 。一切都很好,直到最近我开始注意到使用这种方法无法读取一些 pdf 文件。

我在我的 Mac 上打开并获取了信息,我注意到以下内容:

  • 如果我使用 Mac 查看器将文档导出为 pdf,它可以很好地阅读,但大小会增加。
  • 如果我尝试按原样打开文件,则什么都看不到,只有一个白页。
  • 这仅适用于我的 iOS 应用程序,我的 Android 上的查看器工作正常。

我可以使用 Mac 的查看器将每个文件导出为 pdf,但这比我需要的多一步。我能做些什么来解决这个问题?

原始编码:Adobe Acrobat 10.1.16 中的 PDFScanLib v1.2.2

导出编码:Mac OS X 10.10.5 Quartz PDFContext


我对该程序进行了额外的测试,我可以得出结论,问题出在 pdf 文件上使用的压缩。CGPDFDocument 有什么方法可以删除或忽略压缩,以便我可以查看 pdf?我将 pdf 上传到我的移动后端,并在其中拆分页面。如果可能的话,我正在使用 Pdfsharp 来完成此操作有没有办法在保存到服务器之前清除文件?(此问题仅影响我的应用程序的 iOS 版本)。


经过额外的测试,我遇到了以下错误:这里 会出现使用的 JBIG2 压缩有一个已知错误,在读取 pdf 中的 jpg 时会导致错误。(我将继续进一步测试,直到找到解决方案。)


更正:pdf压缩不是JBIG2,而是FlateDecode。在测试和读取二进制数据后,我注意到原始数据和导出数据具有相同类型的压缩。(当我试图弄清楚这一点时,将更新更多信息。)

4

1 回答 1

8

Apple 的 CoreGraphics 渲染库有很多限制 - 您不太可能期望在合理的时间范围内对其进行修复,因为 Apple 在推进其 PDF 引擎方面分配的资源非常少。

我们知道这一点是因为我们从 2011 年开始就在这个领域工作,并提供一个名为PSPDFKit的商业 PDF 查看和编辑库。我们在 iOS SDK 的第 5 版中替换了 Apple 的渲染器,现在发布了一个自定义渲染引擎——我们也用它来驱动我们的 Android SDK。

市场上没有多少竞争对手也使用自定义渲染引擎 - 您可以寻找 muPDF 作为一种潜在的替代品,它也可能解决您的问题(也是商业的)。大多数其他产品只是垫片,CGPDF无法解决您的问题。随意评估一些产品,如果您有任何其他问题,请告诉我。(通过 pspdfkit.com 上的 peter 与我联系)

我们还为这两个平台提供了完整的 Xamarin 包装器,以简化集成。

于 2016-04-16T18:59:22.150 回答