我按照以下示例查看pdf in my App(Xamarin.iOS)。一切正常,直到最近我开始注意到一些pdf文件无法使用此方法阅读。
我打开并获取了我的mac信息,我注意到以下内容:
我可以使用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。在测试并读取二进制数据之后,我注意到原始数据和导出数据都具有相同类型的压缩。 (当我尝试解决这个问题时,会更新更多信息。)
答案 0 :(得分:8)
Apple的CoreGraphics渲染库有很多限制 - 由于Apple在推进PDF引擎方面投入的资源非常少,因此您无法在合理的时间范围内对其进行修复。
我们知道这一点,因为我们从2011年开始在这个领域工作,并提供名为PSPDFKit的商业PDF查看和编辑库。我们在iOS SDK的第5版中替换了Apple的渲染器,现在发布了一个自定义渲染引擎 - 我们也用它来驱动我们的Android SDK。
市场上没有很多竞争对手也使用自定义渲染引擎 - 您可以将muPDF作为潜在的替代方案,也可以解决您的问题(也是商业化的)。大多数其他产品只是CGPDF
之上的填充物,这无法解决您的问题。如果您有任何其他问题,请随时评估一些产品并告诉我。 (在pspdfkit.com上与彼得联系)
我们还为两个平台提供complete wrappers for Xamarin,以便轻松进行集成。