使用CGContextDrawPDFPage进行PDF渲染:找不到CropBox

vda*_*bry 2 pdf core-graphics objective-c ipad

我需要显示从Web服务收到的PDF文件的内容.

我的问题是所有PDF框都返回相同的值.你知道我正在使用的文件有什么问题吗?

CGPDFPageRef drawPDFPageRef = CGPDFPageRetain( CGPDFDocumentGetPage(pdf, 1) );
CGRect cropBoxRect = CGPDFPageGetBoxRect(drawPDFPageRef, kCGPDFCropBox);
CGRect mediaBoxRect = CGPDFPageGetBoxRect(drawPDFPageRef, kCGPDFMediaBox);
Run Code Online (Sandbox Code Playgroud)

cropBoxRect =(0,0,595,842)mediaBoxRect =(0,0,595,842)

当我在UIWebView中显示PDF时,内容正常

这是由UIWebView呈现的PDF

在此输入图像描述

这是CGContextDrawPDFPage呈现的PDF

在此输入图像描述

谢谢你的帮助,文森特

Fug*_*gly 5

这看起来不像元数据,而是像媒体框被用来裁剪PDF而不是裁剪框.在你的代码中你可能有这样的东西:

  CGContextSetInterpolationQuality(ctx, kCGInterpolationHigh); 
  CGContextSetRenderingIntent(ctx, kCGRenderingIntentDefault); 
  CGContextSetRGBFillColor( ctx, 1.0, 1.0, 1.0, 1.0 );
  CGContextFillRect( ctx, CGContextGetClipBoundingBox( ctx ));

  CGContextTranslateCTM( ctx, 0.0, self.bounds.size.height );
  CGContextScaleCTM( ctx, 1.0, -1.0 );
  CGAffineTransform pdfXfm = CGPDFPageGetDrawingTransform( pdfPage, kCGPDFMediaBox, self.bounds, 0, true );
  CGContextConcatCTM( ctx, pdfXfm );
  CGContextDrawPDFPage( ctx, pdfPage );
Run Code Online (Sandbox Code Playgroud)

尝试使用kCGPDFCropBoxCGPDFGetPageDrawingTransform,可以帮助