Работа с представлением PDF-страницы

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

В данном примере описываются некоторые приемы работы с отображением PDF-страницы. После запуска примера выполняются следующие операции:

Исходный код

Для выполнения примера необходимо разместить в теле метода executeExample класса ViewController (см. раздел «Отображение регламентного отчёта») следующий код:

// Удаляем все дочерние представления окна
NSArray *reportSubviews = [self.view subviews];
for(UIView *subView in reportSubviews)
{
    [subView removeFromSuperview];
}
// Получаем объект регламентного отчета
MAProceduralReportViewController *proceduralReportController = (MAProceduralReportViewController *)m_controller;
// Получаем массив представлений в регламентном отчете
NSArray *dataViewControllers = [proceduralReportController dataViewControllers];
// Перебираем в цикле представления регламентного отчета
for( UIViewController *controller in dataViewControllers)
{
    // Проверяем, является ли текущее представление просмотрщиком листов регламентного отчета
    if([controller isMemberOfClass:[MAProceduralReportDataViewController class]])
    {
        // Получаем представление просмотрщика листов
        MAProceduralReportDataViewController *dataViewController =(MAProceduralReportDataViewController *)controller;
        // Получаем представление просмотрщика регламентных отчетов
        MAProceduralReportDataViewControllerBase *reportDataViewControllerBase = (MAProceduralReportDataViewControllerBase *)dataViewController;
        // Получаем URL текущего документа регламентного отчета
        NSURL *url = [dataViewController urlForCurrentDocument];
        CFURLRef urlForCurrentDocument = (CFURLRef)url;
        // Создаем PDF-документ с помощью полученного URL
        CGPDFDocumentRef pdfDocument = CGPDFDocumentCreateWithURL(urlForCurrentDocument);
        // Получаем страницу PDF-документа с индексом 1 (Нумерация в PDF-документах начинается с единицы)
        CGPDFPageRef pdfPage = CGPDFDocumentGetPage(pdfDocument, 2);
        // Создаем объект для работы с PDF-страницей
        PdfPage *page = [[PdfPage alloc] init];
        // Устанавливаем страницу PDF-документа в объекте для работы с PDF-страницей
        [page setPage:pdfPage];
        // Получаем представление для выбора страниц в PDF-документе
        PdfPageSelector *pageSelector = [reportDataViewControllerBase pageSelector];
        // Получаем отступ страницы с индексом 1 (нумерация в массиве ведется с нуля)
        float offset = [[[pageSelector thumbnailsCoordinates] objectAtIndex:1] floatValue];
        // Устанавливаем отступ страницы в объекте для работы с PDF-страницей
        [page setOffset:offset];
        // Создаем представление PDF-страницы
        PdfPageView *pageView = [[PdfPageView alloc] init];
        // Устанавливаем для отображения страницу PDF-документа
        [pageView setPdfPageRef:pdfPage];
        // Устанавливаем для отображения объект PDF-страницы
        [pageView setPdfPage:page];
        // Устанавливаем для отображения индекс страницы
        [pageView setPageIndex: 1];
        // Выводим в консоль среды разработки отступ страницы от начала документа
        PdfPage *page2 = [pageView pdfPage];
        NSLog(@"Отступ страницы от начала документа: %f", [page2 offset]);
        // Выводим в консоль среды разработки индекс страницы
        NSLog(@"Индекс страницы: %d", [pageView pageIndex]);
        // Выводим в консоль среды разработки размеры страницы
        CGSize size = [pageView pageSize];
        NSLog(@"Ширина страницы: %f", size.width);
        NSLog(@"Высота страницы: %f", size.height);
        // Получаем из отображения страницу PDF-документа
        CGPDFPageRef ref = [pageView pdfPageRef];
        // Получаем PDF-документ, который содержит PDF-страницу
        CGPDFDocumentRef document = CGPDFPageGetDocument(ref);
        // Выводим в консоль среды разработки количество страниц в документе
        int numberOfPages = CGPDFDocumentGetNumberOfPages(document);
        NSLog(@"Количество страниц в документе: %d", numberOfPages);
        // Выводим на экран мобильного устройства представление PDF-страницы
        [self.view addSubview: pageView];
    }
}

 В результате выполнения примера на экране мобильного устройства будет показано представление PDF-страницы:

Также  в консоли среды разработки будет выведена информация об отображенной PDF-странице:

Отступ страницы от начала документа: 117.136612

Индекс страницы: 1

Ширина страницы: 594.510254

Высота страницы: 841.152771

Количество страниц в документе: 6

См. также:

Примеры использования компонентов