Вопрос об iPad: отображение PDF-файла с помощью CATiledLayer в приложении iPad - PullRequest
1 голос
/ 02 февраля 2011

Я хочу отобразить PDF-файл на iPad с помощью CATiled Layer Все хорошо, но когда я использую CATiledLayer в своем приложении и запускаю его, PDF-файл будет отображаться так, как показано на изображении Here i saw in iPad the top left corner full of gray color in PDF file displayed in red rounded rectangle

Код

Для CATiled слоя

   tiledLayer = [CATiledLayer layer];
     tiledLayer.delegate = self;
     //Set load block of tiled layer
     tiledLayer.tileSize = CGSizeMake(1024.0, 1024.0);
     tiledLayer.levelsOfDetail = 1000; 
     tiledLayer.levelsOfDetailBias = 1000;

Для drawInContext

 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);

Пожалуйста, помогите решить эту проблему.Заранее спасибо.

1 Ответ

2 голосов
/ 12 сентября 2011

CGPDFPageGetDrawingTransform не увеличивает ваш PDF-файл - вам нужно написать собственный код преобразования, чтобы рассчитать наилучшее соотношение сторон для PDF.

Обратите внимание, что CGPDFPageGetDrawingTransform также проверяет вращение вpdf, вы можете использовать sth, чтобы исправить это вручную:

int rotate = CGPDFPageGetRotationAngle(page);
    switch (rotate) {
        case 0:
            renderingSize.width = roundf(cropBox.size.width * zoom / 100);
            renderingSize.height = roundf(cropBox.size.height * zoom / 100);
            CGContextTranslateCTM(context, 0, cropBox.size.height);
            CGContextScaleCTM(context, 1, -1);
            break;
        case 90:
            renderingSize.width = roundf(cropBox.size.height * zoom / 100);
            renderingSize.height = roundf(cropBox.size.width * zoom / 100);
            CGContextScaleCTM(context, 1, -1);
            CGContextRotateCTM(context, -M_PI / 2.f);
            break;
        case 180:
        case -180:
            renderingSize.width = roundf(cropBox.size.width * zoom / 100);
            renderingSize.height = roundf(cropBox.size.height * zoom / 100);
            CGContextScaleCTM(context, 1, -1);
            CGContextTranslateCTM(context, cropBox.size.width, 0);
            CGContextRotateCTM(context, M_PI * 1.f);
            break;
        case 270:
        case -90:
            renderingSize.width = roundf(cropBox.size.height * zoom / 100);
            renderingSize.height = roundf(cropBox.size.width * zoom / 100);
            CGContextTranslateCTM(context, cropBox.size.height, cropBox.size.width);
            CGContextRotateCTM(context, M_PI / 2.f);
            CGContextScaleCTM(context, -1, 1);
            break;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...