В iOS я могу использовать смещения в CGContextDrawPDFPage, чтобы показать только половину страницы PDF?

У меня есть страницы PDF, которые сохраняются в виде спредов. Это работает для меня в одном представлении, где пользователь может масштабировать, выделять текст и нажимать на гиперссылки. Однако я хочу использовать те же файлы PDF в другом представлении, для которого требуются отдельные страницы, а не развороты. Я надеюсь, что смогу избежать необходимости загрузки пользователем посторонних PDF-файлов.

Я смог адаптировать удивительный проект "Листья", чтобы сделать то, что я хотел. Но могу ли я изменить любой из следующего кода, чтобы он рисовал PDF, но обрезал правую или левую половину страницы и, при необходимости, изменил смещение?

- (void) renderPageAtIndex:(NSUInteger)index inContext:(CGContextRef)ctx
    {
        CGPDFPageRef page = CGPDFDocumentGetPage(myDocumentRef, index + 1);
        CGAffineTransform transform = aspectFit(CGPDFPageGetBoxRect(page, kCGPDFMediaBox), CGContextGetClipBoundingBox(ctx));
        CGContextConcatCTM(ctx, transform);
        CGContextDrawPDFPage(ctx, page);
    }


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

Или, если есть другой подход к достижению того же самого, это также будет приветствоваться.

Спасибо!

0 ответов

Другие вопросы по тегам