我按照下面的例子在我的应用程序(Xamarin.iOS)中查看pdf。一切都很好,直到最近我开始注意到一些pdf文件无法使用这种方法读取。
我打开并在我的mac上得到了信息,我注意到了以下内容:
- 如果我使用Mac查看器将文档导出为pdf,它可以很好地阅读,但大小会增加
- 如果我尝试按原样打开文件,除了白色页面外,什么都看不到
- 这种情况只发生在我的iOS应用程序上,我的Android上的查看器工作得很好
我可以使用Mac的查看器将每个文件导出为pdf,但这是我需要的额外步骤。我能做些什么来解决这个问题?
原始编码:PDFScanLib v1.2.2在Adobe Acrobat 10.1.16
导出编码:Mac OS X 10.10.5 Quartz PDFContext
我对该程序进行了额外的测试,我可以得出结论,问题在于pdf文件上使用的压缩。CGPDFDocument是否有任何方法可以删除或忽略压缩,以便我可以查看pdf?我将pdf上传到我的移动后端,在那里我可以拆分页面。我正在使用Pdfsharp来实现这一点,如果可能的话,有没有办法在保存到服务器之前清除文件?(此问题仅影响我的应用程序的iOS版本)。
经过额外的测试,我遇到了以下错误:这里使用的JBIG2压缩似乎有一个已知的错误,在读取pdf中的jpg时会导致错误。(我将继续进一步测试,直到找到解决方案。)
更正:pdf压缩不是JBIG2,而是FlateDecode。在测试和读取二进制数据后,我注意到原始数据和导出数据都有相同类型的压缩。(当我试图弄清楚这一点时,将更新更多信息。)
苹果的CoreGraphics渲染库有很多局限性-你不太可能在合理的时间内修复它,因为苹果在推进PDF引擎方面只分配了很少的资源。
我们之所以知道这一点,是因为我们自2011年以来就在这个领域工作,并提供了一个名为PSPDFKit的商业PDF查看和编辑库。我们在iOS SDK的第5版中替换了苹果的渲染器,现在推出了一个自定义渲染引擎,我们也使用它来驱动Android SDK。
市场上没有多少竞争对手也使用自定义渲染引擎-您可以寻找muPDF作为一种潜在的替代方案,它也可能解决您的问题(也是商业性的)。大多数其他产品只是CGPDF
顶部的垫片,这不会解决您的问题。请随时评估一些产品,如果您有任何进一步的问题,请告诉我。(联系我在pspdfkit.com的peter)
我们还为这两个平台提供Xamarin的完整包装器,以简化集成。