В моем проекте мне нужно создать изображение страницы PDF, сгенерированное с помощью CoreGraphics.Force PDF-страница для заполнения контекста
Мне удалось создать контекст с размером изображения, которое я хочу (destinationSize: CGSize
), но когда я использую функцию CGPDFPageGetDrawingTransform
, она только изменяет размер страницы вниз, но не будет масштабировать контекст, чтобы сделать заполнение страницы адрес назначения.
Вот отрывок кода я прямо сейчас в моем проекте:
UIGraphicsBeginImageContextWithOptions(destinationSize, true, 0)
defer {
UIGraphicsEndImageContext()
}
// Invert y axis (CoreGraphics and UIKit axes are differents)
CGContextTranslateCTM(ctx, 0, destinationSize.height);
CGContextScaleCTM(ctx, 1, -1)
let transform = CGPDFPageGetDrawingTransform(pageRef, .CropBox, CGRect(origin: CGPointZero, size: destinationSize), 0, true)
CGContextConcatCTM(ctx, transform)
// TODO We need force the page to fill all the dest rect when it's bigger than the CropBox size
CGContextDrawPDFPage(ctx, pageRef)
Я попытался масштабировать свой контекст с помощью масштабного коэффициента с этим, заменив TODO:
let contextScale: CGFloat = (pageRect.width < expectedWidth) ? expectedWidth/pageRect.width : 1
CGContextScaleCTM(ctx, contextScale, contextScale)
но он создал неправильное смещение чертежа, и я как бы потерялся с преобразованиями CoreGraphics.
Каким будет правильный способ изменить масштаб контекста, чтобы убедиться, что страница в формате pdf предназначена для заполнения размера контекста?