2010-09-08 4 views
2

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

- 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]; 




} 

ответ

4

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

Не знаю, почему это не работает хорошо в webView, но оно гладкое, как шелк в Quick Look.

+2

Рамки приложений -> Общие сведения о контроллере взаимодействия с документами –

+1

http://developer.apple.com/videos/wwdc/2010/ (только зарегистрированные разработчики) - комментарий Яра - имя сеанса и презентации – Wolfram

-3

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

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

+0

Этот конкретный PDF-файл работает без каких-либо ограничений в Safari, но в моем приложении он отстает примерно на 0,5 секунды на каждой странице. – Brodie

+0

По какой-то причине инструменты не работают правильно для меня в iOS прямо сейчас, но в OS X Safari 5, что PDF вызывает увеличение использования памяти на 35 МБ на пустой HTML-странице. Это будет очень много для iOS, если этот результат будет похож на то, что происходит в вашем приложении. Я не знаю, как насчет IFR IFAP и AFD PDF делает их настолько сложными, поскольку они, как правило, используют довольно немного ОЗУ из моих тестов некоторое время назад. Другое, что может вызвать проблемы, - сколько просмотров загружено? Я знаю, что это в модальном представлении, но это viewController ниже этого комплекса? Чем больше subviews, тем более сложным/медленным будет. – jamone

+0

действительно мало что происходит. Он использует около 6 МБ или около того, отображая некоторую графику, но на самом деле ничего не работает в приложении, кроме PDF, в то время, когда он отображается. Я собираюсь попробовать создать простое тестовое приложение, которое ничего не делает, кроме отображения этого pdf-файла, чтобы узнать, есть ли в этом проблема – Brodie