2

我有一个 UIWebView 加载了一个简单的 rtf 文件。(包含一行“这是一个测试”)

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 文件转换为 iOS 上的 NSString。谢谢!

4

3 回答 3

5

事实证明这document.documentElement.innerText是要走的路。马上给我纯文本。

于 2012-06-07T05:25:48.560 回答
4

我们可以直接使用下面的代码从 UIWebView 中获取文本内容,而不是从 UIWebView 获取 html,并再次付出额外的努力将 html 转换为纯文本:

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

它节省了您将 html 转换为纯文本的额外精力。

于 2014-02-06T06:47:13.407 回答
1

我过去实际上不得不做类似的事情。也许不是最优雅的,但这对我有用:

我会将文件中的文本加载到 HTML 页面中(您可以使用 UIWebView 内部的 javascript 执行此操作,或者您可以从 Objective-C 执行此操作,创建一个使用 stringByEvaluatingJavaScriptFromString 调用的 javascript 方法)。然后您可以运行上面概述的方法调用,它应该可以正常工作,或者您可以在 Javascript 中创建一个自定义方法,该方法将捕获文本并将其返回到 Objective-C 代码。在这里,它被存储为一个字符串并准备就绪。

于 2012-06-07T02:07:25.200 回答