CGPDFDocument无法阅读pdf

时间:2016-04-13 17:41:06

标签: c# ios xamarin.ios pdfrenderer cgpdf

我按照以下示例查看pdf in my App(Xamarin.iOS)。一切正常,直到最近我开始注意到一些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版本。)

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

更正:pdf压缩不是JBIG2,而是FlateDecode。在测试并读取二进制数据之后,我注意到原始数据和导出数据都具有相同类型的压缩。 (当我尝试解决这个问题时,会更新更多信息。)

1 个答案:

答案 0 :(得分:8)

Apple的CoreGraphics渲染库有很多限制 - 由于Apple在推进PDF引擎方面投入的资源非常少,因此您无法在合理的时间范围内对其进行修复。

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

市场上没有很多竞争对手也使用自定义渲染引擎 - 您可以将muPDF作为潜在的替代方案,也可以解决您的问题(也是商业化的)。大多数其他产品只是CGPDF之上的填充物,这无法解决您的问题。如果您有任何其他问题,请随时评估一些产品并告诉我。 (在pspdfkit.com上与彼得联系)

我们还为两个平台提供complete wrappers for Xamarin,以便轻松进行集成。