iOS如何从MS Word中读取文本?

4

我正在尝试从Microsoft Word文档(.doc, .docx, .docs)中读取文本。我已经搜索了一整天,但没有找到任何解决方案。请问有人能告诉我该怎么做吗?我已经尝试使用UIWebview从javascript中获取文本,但这种方法也不起作用。

- (NSString *)textFromWordDocument:(NSString *)path {
    UIWebView *theWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
    NSURL *url = [NSURL fileURLWithPath:path];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [theWebView loadRequest:request ];
    NSString *document = [theWebView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerText"];
    [theWebView release];
    return document;
}

如果有人能告诉我应该做什么或者在哪里寻找,那对我来说将非常有帮助。谢谢。
2个回答

5
您正在加载UIWebView,然后立即尝试访问dom,但它可能还没有准备好。
请在UIWebViewDelegate didFinishLoad:被调用之后再调用stringByEvaluatingJavaScriptFromString:。

非常感谢您的回复,我也在考虑这个问题,但不确定。现在一切都正常了,谢谢。 - Omer Abbas

3
下面的代码将Word .docx文件保存到应用程序的文档目录中,然后在视图加载时将该文件读入UIWebView。最后,等待UIWebView加载文档后从UIWebView获取文本。不要忘记在您的视图控制器头文件中遵循UIWebViewDelegate协议。当然,Word文档必须包含在您的项目中。确保将文档添加到“Build Phases > Copy Bundle Resources”。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    /* WRITE WORD FILE TO DOCUMENT DIRECTORY */
    NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *path = [docsDirectory stringByAppendingPathComponent:@"Text.docx"];
    NSData *data = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Text.docx"]];
    [data writeToFile:path atomically:YES];
}

- (void)viewDidLoad
{
    [super viewDidLoad];

   /* READ WORD FILE FROM DOCUMENT DIRECTORY TO WEB VIEW */
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *wordFilePath = [documentsDirectory stringByAppendingPathComponent:@"Text.docx"];
    UIWebView *theWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
    NSURL *wordFileUrl = [NSURL fileURLWithPath:wordFilePath];
    NSURLRequest *request = [NSURLRequest requestWithURL:wordFileUrl];
    [theWebView loadRequest:request];
    theWebView.delegate = self;
    [self.view addSubview:theWebView];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    /* GET TEXT FROM WEB VIEW */
    NSString *text = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerText"];
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接