Прокрутите до определенной страницы с помощью CGPDF
Я поражен этим прошлым двумя днями, я не нахожу никаких надлежащих документов, касающихся CGPDF. Я пытался всеми возможными способами, но я потерпел неудачу. Вот что я пытаюсь сделать. У меня есть PDF для отображения, и я отображаю его в UIWebView. Я создал ссылку на документ CORE GRAPHICS PDF, используя путь к файлу pdf (NSURL). Я создал UIView поверх него и обработал одно касание. Когда файл PDF загружается, и пользователь нажимает на вид, я хочу, чтобы страница прокручивалась до определенной страницы. Я знаю, что это можно сделать с помощью расчета высоты и ширины страницы. Я хотел знать, есть ли способ в 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];
}
ЗДЕСЬ КАК Я ХОЧУ ОБРАЩАТЬСЯ К ОДНОМ КАРТУ НА 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, однако не в каждом случае использования этого может потребоваться.