我正在尝试从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;
}
如果有人可以告诉我应该做什么或在哪里环顾四周,那对我来说真的很有帮助谢谢
答案 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"];
}