PDF в представлении веб-просмотра - PullRequest
2 голосов
/ 08 сентября 2010

Я использую следующий (простой) код для загрузки 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];




}

Ответы [ 2 ]

4 голосов
/ 19 сентября 2010

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

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

0 голосов
/ 08 сентября 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...