2016-03-06 2 views
0

Меня поразили последние два дня, я не нашел подходящих документов, относящихся к CGPDF. Я старался изо всех сил, но я потерпел неудачу. Вот что я пытаюсь сделать. У меня есть PDF для отображения, и я показываю его в UIWebView. Я создал ссылку на документ CORE GRAPHICS PDF, используя путь, в котором находится pdf (NSURL). Я создал UIView над ним и обработал событие с одним касанием. Когда загрузка PDF и пользователь нажимают на представление, я хочу, чтобы страница прокручивалась до определенной страницы. Я знаю, что это можно сделать, вычисляя высоту и ширину страницы. Я хотел знать, есть ли способ в CGPDF передать номер страницы, и он переместится к соответствующей странице. Ниже мой кодПрокрутите страницу до страницы, используя CGPDF

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // set the pdfPafeHeight to -1 so it gets calculated. 
    self.pdfPageHeight = -1; 

    // set the delegate of the UIWebView's underlying UIScrollView to self. 
    self.webView.scrollView.delegate = self; 

    // create an NSURLRequest to load the PDF file included with the project 
    _filePath = [[NSBundle mainBundle] pathForResource:@"Sample" ofType:@"pdf"]; 
    _url = [NSURL fileURLWithPath:_filePath isDirectory:NO]; 
    _urlRequest = [NSURLRequest requestWithURL:_url]; 

    // create a Core Graphics PDF Document ref using the same NSURL 
    _pdf = CGPDFDocumentCreateWithURL((CFURLRef) _url); 

    // use CGPDFDocumentGetNumberOfPages to get the number of pages in the document 
    self.pdfPageCount = (int)CGPDFDocumentGetNumberOfPages(_pdf); 

    // load the PDF file into the UIWebVie 

    UITapGestureRecognizer *singleFingerTap = 
    [[UITapGestureRecognizer alloc] initWithTarget:self 
              action:@selector(handleSingleTap:)]; 
    [self.view addGestureRecognizer:singleFingerTap]; 

    [self.webView loadRequest:_urlRequest]; 
} 

ЗДЕСЬ КАК ХОТЕЛ HANDLE Умывальник ON UIView. Я просто хотел бы знать, есть ли способ в CGPDF для перехода к определенной странице, когда я передать номер страницы к нему

- (void)handleSingleTap:(UITapGestureRecognizer *)recognizer { 


} 

ответ

1

Там нет API для того, что вы пытаетесь достичь, и даже если вы в состоянии использовать частный API, если это приложение предназначено только для установки Enterprise и не нужно заходить в App Store - это будет сложно, и любое обходное решение, скорее всего, сломается с крупным обновлением версии iOS. Если вы хотите пойти по этому маршруту, вы можете проанализировать иерархию диспетчера представлений и обнаружите, что Apple внутренне имеет фреймворк под названием CorePDF, который имеет внутренний частный API, к которому вы можете иметь доступ, - но будьте осторожны и знайте, что это не решение для приложений App Store.

Альтернатива - начать с нуля и использовать CGContextDrawPDFPage для рисования страниц PDF, создания собственного кеша, просмотра прокрутки и просмотра контроллеров + обработки жестов. Мы сделали это с коммерческим PSPDFKit SDK, с которым я работаю с 2010 года - это больше, чем вы думаете. Мы также в конечном итоге перешли на использование и использовали собственный рендерер, чтобы улучшить совместимость с широким спектром доступных PDF-файлов и обеспечить лучшую производительность, чем рендеринг Apple, но не каждый вариант использования может потребовать этого.

Смежные вопросы