2012-06-07 3 views
1

У меня есть UIWebView, загруженный простым файлом rtf. (Содержащий одну строку «это тест»)извлечь текст из UIWebView

UIWebView* webview = [[UIWebView alloc] initWithFrame:CGRectMake(5, 50, 310, 400)]; 
[[self view] addSubview:webview]; 
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"rtf"]isDirectory:NO]]]; 
NSString *html = [webview stringByEvaluatingJavaScriptFromString: @"all"]; 
NSLog (@"html:%@", html.debugDescription); 

«Это текст» линия появляется внутри UIWebView правильно. Кто-нибудь знает, возможно ли извлечь эту строку текста (или больше) в NSString или какой-либо другой доступный контейнер?

Я знаю, что есть:

NSString *html = [webview stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"]; 

но что (очевидно) здесь не работает. есть идеи ? Я в основном пытаюсь (подделка) конвертировать RtF-файл в NSString на iOS. Спасибо!

+0

Вы пробовали документ.body.innerHTML? –

+0

есть. и document.body.innerText. оба возвращаются в прошлое. – TrekOnTV2017

+0

Вы ждете, пока страница загрузится до вызова stringByEvaluatingJavaScriptFromString :? – Gruntcakes

ответ

2

Оказывается, document.documentElement.innerText - это путь. Получает простой текст. Спасибо Омару!

1

Мне действительно нужно было сделать что-то подобное в прошлом. Может быть, не самый элегантный, но вот что для меня работало:

Я бы загрузил текст из файла на HTML-страницу (вы можете сделать это с помощью javascript внутри UIWebView, или вы можете сделать это из Objective -C создание javascript-метода для вызова с использованием stringByEvaluatingJavaScriptFromString). Затем вы можете запустить описанный выше вызов метода, который должен работать нормально, или вы можете создать пользовательский метод в Javascript, который будет захватывать и возвращать текст в код Objective-C. Здесь он хранится в виде строки и готов к работе.

+0

Я не знаю javascript. Было ли ваше решение для формата входного сигнала rtf? – TrekOnTV2017

4

Вместо извлечения HTML из UIWebView, и снова применить дополнительные усилия для преобразования HTML в обычный текст можно непосредственно использовать ниже код для извлечения текста из UIWebView:

NSString *plainText = [webView stringByEvaluatingJavaScriptFromString:@"document.body.textContent"]; 

Это экономит ваши дополнительные усилия для преобразования HTML в обычный текст.

Смежные вопросы