Требования к операционной системе: iOS 5.0 и выше.
Мобильное устройство: iPad.
В данном примере описываются некоторые приемы работы с отображением PDF-страницы. После запуска примера выполняются следующие операции:
извлекается URL текущего документа в регламентном отчете;
создается объект для работы с PDF-страницей;
в объекте для работы с PDF-страницей устанавливается страница PDF-документа;
создается представление PDF-страницы;
для созданного отображения устанавливается страница PDF-документа, индекс страницы и объект PDF-страницы;
из созданного отображения извлекается страница PDF-документа, а также размеры 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
См. также: