Я только начинаю создавать приложение, которое будет отображать документы PDF. Я экспериментировал, подклассифицировал UIView и использовал код из демонстрации Apples. У меня есть документ в формате PDF, который содержит изображение размером 1024 x 748 пикселей при 131 ppi, так что ему ДОЛЖНО заполнять экран iPad в альбомной ориентации.CGPDFDocument scaling
Когда я запустил приложение, формат pdf масштабируется примерно до 25% от его полного размера, в центре экрана iPad. Почему PDF не отображается в полном размере?
код из моего пользовательского UIView:
-(id)initWithFrame:(CGRect)frame PDFName:(NSString *)pdfName
{
self = [super initWithFrame:frame];
if(self != nil)
{
self.backgroundColor = [UIColor blueColor];
self.opaque = YES;
self.clearsContextBeforeDrawing = YES;
CFURLRef pdfURL = CFBundleCopyResourceURL(CFBundleGetMainBundle(), (CFStringRef)pdfName, NULL, NULL);
pdf = CGPDFDocumentCreateWithURL((CFURLRef)pdfURL);
CFRelease(pdfURL);
}
return self;
}
- (void)drawRect:(CGRect)rect {
// PDF page drawing expects a Lower-Left coordinate system, so we flip the coordinate system
// before we start drawing.
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
// Grab the first PDF page
CGPDFPageRef page = CGPDFDocumentGetPage(pdf, 1);
// We're about to modify the context CTM to draw the PDF page where we want it, so save the graphics state in case we want to do more drawing
CGContextSaveGState(context);
// CGPDFPageGetDrawingTransform provides an easy way to get the transform for a PDF page. It will scale down to fit, including any
// base rotations necessary to display the PDF page correctly.
CGAffineTransform pdfTransform = CGPDFPageGetDrawingTransform(page, kCGPDFMediaBox, self.bounds, 0, true);
// And apply the transform.
CGContextConcatCTM(context, pdfTransform);
// Finally, we draw the page and restore the graphics state for further manipulations!
CGContextDrawPDFPage(context, page);
CGContextRestoreGState(context);
}
PPI не имеет к этому никакого отношения. Скорее всего, исходное разрешение PDF было нормальным ограничивающим полем 612 × 792. Изменение ограничения изображения фиксирует проблему для одного PDF, но реальный ответ заключается в изменении значений преобразования PDF или растягивании/масштабировании вида pdf или супер-вид. – J2theC