IOS从MS Word中读取文本

时间:2012-05-31 10:39:55

标签: iphone ios ipad ms-word

我正在尝试从MS 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 个答案:

答案 0 :(得分:5)

您加载UIWebView然后立即尝试访问dom,它可能还没准备好。

不要调用stringByEvaluatingJavaScriptFromString:直到UIWebViewDelegate didFinishLoad:被调用。

答案 1 :(得分:2)

以下代码在启动时将Word .docx文件保存到应用程序的文档目录中。 然后,它会在viewDidLoad期间将该文件读入UIWebView。 最后,它等待UIWebView在从UIWebView获取文本之前加载文档。 不要忘记在视图控制器的头文件中符合UIWebViewDelegate协议。当然,Word文档必须包含在您的项目中。确保将文档添加到Build Phases>复制捆绑资源。

- (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"];
}