PDF в производительности веб-просмотра

Я использую следующий (простой) код для загрузки PDF-файла из папки документов в моем приложении в UIWebView. Спектакль очень плохой. Я попытался загрузить тот же PDF-файл из Интернета через Safari, и производительность была отличной. У кого-нибудь есть идеи? (этот viewController представлен как modalViewController).

– firstView.m

InfoViewController *mcontroller = [[InfoViewController alloc] init];

        NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                             NSUserDomainMask, YES);
        NSString *docsPath = [paths objectAtIndex:0];


NSString *pathToPDF = [NSString stringWithFormat:@"%@/myPDF.PDF",docsPath];

NSURL *targetURL = [NSURL fileURLWithPath:pathToPDF];

mcontroller.urlToFile = targetURL;
[self presentModalViewController:mcontroller animated:YES];

modalViewController.m -

- (void)viewDidLoad {
    [super viewDidLoad];

    NSURLRequest *request = [NSURLRequest requestWithURL:urlToFile];

    [webView loadRequest:request];




}

person Brodie    schedule 08.09.2010    source источник


Ответы (2)


В итоге я использовал для этого documentInteractionController для отображения PDF в Quick Look. В видеороликах WWDC 2010 года есть отличное руководство по этому поводу.

Понятия не имею, почему это не работает в webView, но в Quick Look все гладко, как шелк.

person Brodie    schedule 19.09.2010
comment
Среды приложений -> Общие сведения о контроллере взаимодействия с документами - person Dan Rosenstark; 21.01.2011
comment
developer.apple.com/videos/wwdc/2010 (только для зарегистрированных разработчиков) — Комментарий Яра — название сеанса и презентации. - person Wolfram; 11.02.2011

Первое, на что я бы посмотрел, это сам PDF. Часто люди пытаются загружать огромные PDF-файлы и ожидают, что они будут прекрасно работать. Можете ли вы опубликовать PDF для нас, чтобы увидеть? Насколько велик файл? Помните, что размер файла PDF — это сжатый размер, для отображения изображений в формате PDF они будут несжатыми при сохранении в оперативной памяти. Нередко для изображения размером 500 КБ на диске используется 20 МБ памяти (это относится ко всей растровой графике, а не только к файлам PDF). Обычно это происходит, когда производительность PDF низка из того, что я видел здесь.

Я знаю, вы сказали, что это прекрасно работает в Safari, однако мы не знаем, что Apple делает во внутренних компонентах Safari по сравнению с UIWebView. Кроме того, Safari обычно работает в фоновом режиме, поэтому он использует память, даже когда ваше приложение работает. Это уменьшает память, которую может использовать ваше приложение, но когда вы запускаете Safari в качестве основного приложения, сторонние приложения не используют много памяти, поэтому Safari потенциально может кэшировать больше PDF-файлов за раз.

person jamone    schedule 08.09.2010
comment
Этот конкретный PDF-файл работает без каких-либо задержек в Safari, но в моем приложении он отстает примерно на 0,5 секунды на каждой странице. - person Brodie; 08.09.2010
comment
По какой-то причине Инструменты сейчас работают неправильно для меня в iOS, но в OS X Safari 5 этот PDF-файл вызывает увеличение использования памяти на 35 МБ по сравнению с пустой HTML-страницей. Это было бы много для iOS, если бы результат был похож на то, что происходит в вашем приложении. Я не знаю, что в NOAA IFR и AFD PDF делает их такими сложными, поскольку они обычно используют довольно много оперативной памяти из моих тестов некоторое время назад. Другая вещь, которая может вызвать проблемы, — сколько просмотров загружается? Я знаю, что это модальное представление, но находится ли viewController ниже этого комплекса? Чем больше подвидов, тем сложнее/медленнее это будет. - person jamone; 08.09.2010
comment
там действительно не так много происходит. Он использует около 6 МБ или около того для отображения некоторой графики, но на самом деле в приложении ничего не работает, кроме PDF во время его отображения. Я собираюсь попробовать сделать простое тестовое приложение, которое ничего не делает, кроме отображения этого PDF-файла, чтобы увидеть, не в нем ли проблема. - person Brodie; 09.09.2010