我正嘗試讀取包含在.doc文件內的阿拉伯文本,並在我的應用程序中使用它。不幸的是,我能夠檢索文本的唯一方法是將文檔轉換爲.txt文件。無法讀取iOS中的.doc文件的內容
這裏是我的代碼:
NSError *error = nil;
NSString *path = @"MyArabicDocument";
NSString *root = [[NSBundle mainBundle]pathForResource:path ofType:@"doc"];
NSString *myFile = [NSString stringWithContentsOfFile:root encoding:NSUTF8StringEncoding error:&error];
NSLog(@"my file contents are: %@", myFile);
NSLog(@"error is: %@", error);
我的NSString對象的輸出是(空),我得到的錯誤是:
error is: Error Domain=NSCocoaErrorDomain Code=256 "The operation couldn’t be completed. (Cocoa error 256.)" UserInfo=0x7aace470 {NSFilePath=/Users/MyName/Library/Developer/CoreSimulator/Devices/.../data/Containers/Bundle/Application/..MyApp.app/MyArabicDocument.doc}
如果將我的文檔轉換成.rtf格式,則我的輸出(在更改上述代碼塊中的擴展名後)如下:
my file contents are: {\rtf1\ansi\ansicpg1252\cocoartf1347\cocoasubrtf570
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fnil\fcharset178 AlBayan;\f2\fnil\fcharset178 GeezaPro;
}
{\colortbl;\red255\green255\blue255;}
\vieww10800\viewh8400\viewkind0
\deftab709
\pard\pardeftab709\pardirnatural
\f0\fs46 \cf0 1
\f1 - \'de\'f3\'dc\'c7\'e1\'f3 \'c7\'c8\'fa\'dc\'e4\'f5 \'c2\'c8\'f3\'f8 \'e6\'f3\'c7\'d3\'fa\'e3\'f5\'dc\'e5\'f5 \'e3\'f5\'cd\'f3\'e3\'f3\'f8\'dc\'cf\'f5
\f0 ~~~
\f1 \'c7\'e1\'e1\'e5\'f3 \'dd\'f6\'dc\'ed \'df\'f5\'dc\'e1\'f6\'f8 \'c7\'e1\'c3\'f5\'e3\'f5\'dc\'e6\'d1\'f6 \'c3\'f3\'cd\'fa\'dc\'e3\'f3\'dc\'cf\'f5 \
...
如果我嘗試使用NSAttributedString對象,而不是一個NSString的對象,但我仍然得到一個(空)值我NSAttributedString對象:
NSDictionary *attrs = @{NSDocumentTypeDocumentAttribute: NSRTFTextDocumentType, NSWritingDirectionAttributeName:@[@(NSWritingDirectionRightToLeft | NSTextWritingDirectionOverride)]};
NSAttributedString *text = [[NSAttributedString alloc] initWithFileURL:[[NSBundle mainBundle] URLForResource:@"MyArabicDocument" withExtension:@"doc"] options:attrs documentAttributes:nil error:&error];
之所以這樣,是非常重要的是,雖然我的阿拉伯文字確實在我的應用程序中出現在我的UITextView中,問題是它的外觀遠不及原始文檔,這正是我想要在我的應用程序中維護的。這不可能嗎?