Как другие приложения на iOS могут читать и записывать слова docs? Я вижу некоторые другие вопросы, связанные с этим, и принятые ответы идут по принципу "это невозможно". Я не хочу просто показывать слово doc, я хочу прочитать его вместе с его форматированием. Как другие приложения делают это, пишут ли они синтаксический анализ, используя опубликованный стандарт, выпущенный Microsoft? Используют ли они какую-то связанную утилиту для преобразования файла в другой формат, например XML или HTML, перед его обработкой? Есть ли способ с открытым исходным кодом? Ищите идеи.
Чтение или преобразование слов .doc файлов iOS
Ответ 1
Я не знаю, продолжаете ли вы искать решение, или вы сами это поняли, но я отвечаю на это, надеясь, что это поможет кому-то еще искать то же самое.
Я искал решение, связанное с моей задачей, которое я хочу преобразовать файл слова в текстовый файл. Я пришел к этому вопросу после некоторого поиска в Google и, согласно ответу @TJD, я перешел на ссылку и оттуда я нашел эта ссылка.
Для моего требования, поскольку мне нужно было преобразовать файл слова в текстовый файл. Я выполнил вторую ссылку в качестве своего решения.
Как файл docx создается с помощью Open XML File format
, и он упоминается там, я понимаю, что мне нужно разархивировать файл docx, считая его zip.
Для Zip/Unzip google предоставляет код здесь. После распаковки файла docx в нашем каталоге документов в соответствии с ссылкой wikipedia есть три каталога и один xml файл в корне.
Для моего решения я выбираю каталог word
, как упоминается в ссылке, где размещено исходное содержимое файла (до сих пор я не попадал ни в один другой каталог или файл). Существует файл под вашим пути к извлечению word/doctment.xml
, где ваше содержимое файла docx помещается в xml-формат.
В этом XML файле есть множество тегов, и я не знаю смысла этого текста прямо сейчас, но после просмотра XML файла я получил, что тег, содержащий мой текст, w:t
.
После этого каждая вещь похожа на торт. Я просто использовал NSXMLParser
и проанализировал данные из файла xml с таргетингом на тег w:t
, и я получил всю строку.
Примечание. Я обновлю свой ответ, как только узнаю о других файлах и тегах. Также это решение не работает с doc файлами, так как я знаю, что OpenXMLFile format
представлен в MSOffice 2007, поэтому я также буду обновлять свой ответ для решения doc файла.
Я знаю, что этого недостаточно, что он не охватывает создание файла doc и т.д. Но я надеюсь, что это поможет многим из нас.
Ответ 2
"Уловкой" большинства приложений для чтения файлов Word является UIWebView - он может читать их. Это не позволяет записывать документы, но это намного сложнее, для чего я не считаю, что существует простое решение.
Ответ 3
Современные версии офиса используют открытый стандартный XML-формат. http://en.wikipedia.org/wiki/Office_Open_XML
Ответ 4
Здесь, как прочитать формат Open Office XML (OOXML) в iOS: http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2011/05/09/147049.aspx
Ссылка приведет вас к учебнику, в котором вы получите метаданные файла OOXML, это не текст или форматирование, а начало.
.doc файлы представляют собой проприетарный формат zip, содержащий много файлов, связанных с текстом и форматированием (если вы хотите увидеть, что внутри, зайдите в finder и "Get Info", а затем переименуйте расширение в .zip и распакуйте файл), Эти файлы заполняются до вершины с очень большим количеством случайных символов XML, которые бесполезны для вас или для кого-либо еще.
Однако файлы .docx могут быть легко открыты и конвертированы с принятием стандарта OOXML. См. Ссылку.
Ответ 5
В зависимости от того, какую версию документа Word вы хотите отобразить, у вас есть несколько вариантов.
Если ваш документ действительно является файлом .doc(что означает, перед Word 2007), вы можете следовать спецификации . doc Двоичный формат файла (которая является открытой спецификацией, которая позволяет вам свободно ее использовать) для чтения/записи документов Word в этом формате.
Если ваш документ является .docx файлом, то в качестве TDJ и CodaFi указано, что Формат файла docx является открытым стандартом.
Это означает, что вы можете увидеть каждую деталь о том, как интерпретировать файл .docx(или любой другой файл в пакете Office 2007) и обрабатывать его в соответствии с вашими потребностями.
Так текущие приложения iOS могут отображать файл docx.
Обратите внимание, что это непростая задача, так как в этих спецификациях имеется много деталей.
Ответ 6
Стандарт ISO/IEC 29500, кросс-платформенный, Открытый исходный код, стандартный C99 реализации части II (OPC) и части III (MCE) спецификации ISO/IEC 29500 (OOXML). И он также работает для ios http://www.nooxml.com/video/libopc_iphone.wmv
Ответ 7
Приведенный ниже код сохраняет файл Word.docx в каталоге документа приложения при запуске. Затем он считывает этот файл в UIWebView во время просмотраDidLoad. Наконец, он ожидает, что UIWebView загрузит документ перед извлечением текста из UIWebView. Не забудьте выполнить протокол UIWebViewDelegate в вашем файле заголовка контроллера View. И, конечно же, документ Word должен быть включен в ваш проект. Обязательно добавьте документ в "Сборка фаз" > "Копировать ресурсы пакета".
- (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"];
}