Рендеринг PDF с использованием CGContextDrawPDFPage: не удается найти CropBox - PullRequest
2 голосов
/ 29 октября 2011

Мне нужно отобразить содержимое файлов PDF, которые я получаю от веб-службы.

Моя проблема в том, что все окна PDF возвращают одно и то же значение. У вас есть идеи, что может быть не так с файлами, которые я использую?

CGPDFPageRef drawPDFPageRef = CGPDFPageRetain( CGPDFDocumentGetPage(pdf, 1) );
CGRect cropBoxRect = CGPDFPageGetBoxRect(drawPDFPageRef, kCGPDFCropBox);
CGRect mediaBoxRect = CGPDFPageGetBoxRect(drawPDFPageRef, kCGPDFMediaBox);

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

Когда я отображаю PDF в UIWebView, содержимое в порядке

Это PDF, предоставленный UIWebView

enter image description here

Это PDF-файл, предоставленный CGContextDrawPDFPage

enter image description here

Спасибо за вашу помощь, Vincent

Ответы [ 2 ]

5 голосов
/ 29 октября 2011

Это не похоже на метаданные, а скорее на то, что для обрезки 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 );

Попробуйте использовать kCGPDFCropBox в CGPDFGetPageDrawingTransform, это может помочь

1 голос
/ 31 октября 2011

Я считаю, что эти маркировки нарисованы за пределами видимой области страницы. Поскольку вы не обрезаете содержимое на границе страницы, отображается все содержимое страницы.
Этот код должен помочь (перед рисованием страницы):

CGContextAddRect(ctx, cropBoxRect);
CGContextClip(ctx);

В этой статье показано, как правильно отобразить страницу PDF на iOS: http://ipdfdev.com/2011/03/23/display-a-pdf-page-on-the-iphone-and-ipad/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...