Привет всем, я пытался разными способами напечатать PDF в соответствии с размером книги PDF. Я также искал во многих ссылках и во многих кодах, таких как коды Apple, GitHub и многие другие сайты такого типа, но безрезультатно. Этот вопрос дублирует многие вопросы и ответы, но все же я не получил точный результат. Мой код выглядит так
(void) drawLayer: (CALayer *) слой inContext: (CGContextRef) ctx
{
if (UIInterfaceOrientationIsPortrait ([self interfaceOrientation])) {
layer.backgroundColor = [UIColor blackColor];
myPageRef = CGPDFDocumentGetPage (myDocumentRef, c);
CGSize pageSize = [kbDataSource pageSize];
GLogInfo(@"the page ize we are getting in draw layer is %@ ",NSStringFromCGSize(pageSize));
//CGContextSaveGState(ctx);
CGSize aspectFitSize = [self getPageFitSizeOfSize:pageSize inSize:CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height- __TOP_BRANDING_BAR_HEIGHT)];
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(ctx, CGContextGetClipBoundingBox(ctx));
GLogDebug(@"aspect fitsize of image to %@", NSStringFromCGSize(aspectFitSize));
NSLog(@"layer bounds are:%@ %@ ",NSStringFromCGSize(layer.bounds.size),NSStringFromCGPoint(layer.bounds.origin));
NSLog(@"page size of the book is:%@",NSStringFromCGSize(pageSize));
CGFloat aspectRatio=pageSize.width/pageSize.height;
CGRect cropBox = CGPDFPageGetBoxRect(myPageRef, kCGPDFCropBox);
CGRect targetRect = layer.bounds;
CGFloat xScale = targetRect.size.width / cropBox.size.width;
CGFloat yScale = (targetRect.size.height-41) / cropBox.size.height;
CGFloat scaleToApply = (xScale < yScale) ? xScale : yScale;
CGContextTranslateCTM(ctx, 0.0, -41+layer.bounds.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
NSLog(@"the crop box values are %@",NSStringFromCGRect(cropBox));
NSLog(@"the crop box values are %f",cropBox.origin.x);
NSLog(@"the scaleToApply is %f",scaleToApply);
NSLog(@"the view bounds are %@",[self.view description]);
if (scaleToApply == yScale)
CGContextConcatCTM(ctx, CGAffineTransformMakeTranslation(-100, -150));
else
CGContextConcatCTM(ctx, CGAffineTransformMakeTranslation(-180, -260));
CGContextConcatCTM(ctx, CGAffineTransformMakeScale(scaleToApply, scaleToApply));
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(myPageRef, kCGPDFCropBox, layer.bounds, 0, true));
CGContextSetInterpolationQuality(ctx, kCGInterpolationHigh);
CGContextSetRenderingIntent(ctx, kCGRenderingIntentDefault);
CGContextDrawPDFPage(ctx, myPageRef);
}
Я вставил весь код, который я пробовал в drawlayer. Я дал много случайных чисел, чтобы они уместились на весь экран, и в итоге я получил только восемь книг (pdfs).
Моя цель - распечатать любой PDF-файл с полным покрытием экрана ipad.
мой результат получен только за несколько файлов pdf. Может ли кто-нибудь сказать мне точную причину, по которой это происходит, а также сообщить мне точный код для печати pdf на весь экран ipad.
спасибо всем.