一年多来,我一直在 iPad 应用程序中使用几种方法,主要基于此处提供的苹果代码,以很好地显示 PDF 页面 - 到目前为止,它适用于数十种不同的 PDF。我刚收到一堆 PDF,它们的颜色似乎以某种方式变形。Preview/Adobe 显示的内容:
这是我在基于层CGPDFDrawPDFPage()
和iPad UIWebView(指向文件)中看到的,使用模拟器:
我想知道 PDF 是否处于某种奇怪的色彩空间(CMYK?)中,但这并不能解释为什么 Preview/Adobe Reader 可以很好地打开它。作为参考,这是 UIView 子类中使用的显示代码的总和(注意,pdfPage
是一个实例变量):
// Draw the CGPDFPageRef into the layer at the correct scale.
-(void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context
{
// from https://stackoverflow.com/questions/3889634/fast-and-lean-pdf-viewer-for-iphone-ipad-ios-tips-and-hints
CGContextSetInterpolationQuality(context, kCGInterpolationHigh);
CGContextSetRenderingIntent(context, kCGRenderingIntentDefault);
// First fill the background with white.
CGContextSetRGBFillColor(context, 1.0f, 1.0f, 1.0f, 1.0f);
CGContextFillRect(context, self.bounds);
CGContextSaveGState(context);
// Flip the context so that the PDF page is rendered
// right side up (all the PDF routines are built for Mac OS X
// coordinate systems, where Y is upwards.
// first move the origin down by the full height
CGContextTranslateCTM(context, 0.0f, self.bounds.size.height);
// now invert the Y position (scale by -1)
CGContextScaleCTM(context, 1.0f, -1.0f);
// Scale the context so that the PDF page is rendered
// at the correct size for the zoom level.
CGContextScaleCTM(context, myScale, myScale);
CGContextDrawPDFPage(context, pdfPage);
CGContextRestoreGState(context);
}
如您所见,我们也一直是iPhone / iPad / iOs 的 Fast and Lean PDF Viewer 的狂热读者 - 提示和提示?
关于如何诊断我们所看到的内容和/或更改色彩空间(或更改 PDF 文档?我们也有这个选项)的任何建议。