gpt4 book ai didi

iphone - CGContext pdf页面宽高比适合

转载 作者:行者123 更新时间:2023-12-03 18:37:39 26 4
gpt4 key购买 nike

我正在使用代码在 CGContext 上显示 pdf 页面

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
CGContextFillRect(ctx, layer.bounds);
CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(myPageRef, kCGPDFBleedBox, layer.bounds, 0, true));
CGContextDrawPDFPage(ctx, myPageRef);
}

问题是 pdf 页面绘制在页面的中心,在所有四个边上留下边框。有没有办法让页面适合屏幕。

最佳答案

扩展蒂亚的答案;内置方法 CGPDFPageGetDrawingTransform 将缩小但不会放大。如果您想扩大规模,那么您需要通过将 CGPDFGetBoxRect 的结果与您的内容区域进行比较来制定自己的转换。即兴打字:

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)context
{
    CGContextSetRGBFillColor(ctx, 1.0, 1.0, 1.0, 1.0);
    CGContextFillRect(ctx, layer.bounds);
    CGContextTranslateCTM(ctx, 0.0, layer.bounds.size.height);
    CGContextScaleCTM(ctx, 1.0, -1.0);

    CGRect cropBox = CGPDFGetBoxRect(myPageRef, kCGPDFCropBox);
    CGRect targetRect = layer.bounds;
    CGFloat xScale = targetRect.size.width / cropBox.size.width;
    CGFloat yScale = targetRect.size.height / cropBox.size.height;
    CGFloat scaleToApply = xScale < yScale ? xScale : yScale;
    CGContextConcatCTM(ctx, CGAffineTransformMakeScale(scaleToApply, scaleToApply)); 

    CGContextDrawPDFPage(ctx, myPageRef);
}

所以:计算出文档需要缩放多少才能占据 View 的整个宽度,占据整个高度多少,然后实际缩放这两个值中的较小者。

关于iphone - CGContext pdf页面宽高比适合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3908624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com