Разобрался.
В этом случае UIWebView работает так, как будто это iFrame на HTML-странице, которая имеет источник некоторого файла powerpoint.Итак, есть определенные вещи, которые вы можете с этим сделать, и определенные свойства, которые предоставляются.
Я обнаружил, что document.all (массив) имеет элементы - МНОЖЕСТВО элементов.Мой тестовый файл PowerPoint на 20 страниц содержал более 300 элементов.Рассматривать их ширину / высоту было не слишком полезно - некоторые были размерами самого iframe, некоторые были размерами от верхнего левого пикселя слайда 1 до нижнего правого пикселя слайда N, некоторые были 0x0, а некоторые (похороненыв середине) были размеры слайда.Шаблон, который я обнаружил, заключался в том, что вам нужно пропустить первый элемент в document.all и выполнять итерацию до тех пор, пока вы не найдете элемент с ненулевой шириной / высотой, который имеет идентичные значения для clientHeight, offsetHeight, scrollHeight, а также идентичные значения дляclientWidth, offsetWidth и scrollWidth.Первый из них даст вам высоту / ширину одного слайда, и вы можете перейти оттуда.И, конечно же, поскольку вы используете UIWebView и имеете только stringByEvaluatingJavaScriptFromString для работы, вам нужно сделать все это в одной строке JavaScript, которая возвращает значение.
Итак, чтобы извлечь width / heightпрезентации PowerPoint, вы можете написать:
NSString *w=[webview stringByEvaluatingJavaScriptFromString:@"function x(){var rtn='';for (var i=1;i<document.all.length;i++){var a=document.all[i];if (((a.clientWidth>0)&&(a.clientHeight>0))&&(a.scrollHeight.toString()==a.offsetHeight.toString())&&(a.offsetHeight.toString()==a.clientHeight.toString())){return ''+a.offsetWidth; }}return rtn;};x();"];
NSString *h=[webview stringByEvaluatingJavaScriptFromString:@"function x(){var rtn='';for (var i=1;i<document.all.length;i++){var a=document.all[i];if (((a.clientWidth>0)&&(a.clientHeight>0))&&(a.scrollHeight.toString()==a.offsetHeight.toString())&&(a.offsetHeight.toString()==a.clientHeight.toString())){return ''+a.offsetHeight; }}return rtn;};x();"];
и делать все, что вам нужно с шириной / высотой с этой точки.
Да, и document.all не заполняется сразукак только ваш документ загружен - UIWebView, похоже, потребуется несколько миллисекунд, чтобы собрать его и сделать его доступным.Я запускаю эту 1 секунду после завершения загрузки моего веб-просмотра, и он прекрасно работает как с файлами ppt, так и с pptx.это не работает на PDF, хотя.