Подтвердить что ты не робот

Чтение или преобразование слов .doc файлов iOS

Как другие приложения на iOS могут читать и записывать слова docs? Я вижу некоторые другие вопросы, связанные с этим, и принятые ответы идут по принципу "это невозможно". Я не хочу просто показывать слово doc, я хочу прочитать его вместе с его форматированием. Как другие приложения делают это, пишут ли они синтаксический анализ, используя опубликованный стандарт, выпущенный Microsoft? Используют ли они какую-то связанную утилиту для преобразования файла в другой формат, например XML или HTML, перед его обработкой? Есть ли способ с открытым исходным кодом? Ищите идеи.

4b9b3361

Ответ 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 - он может читать их. Это не позволяет записывать документы, но это намного сложнее, для чего я не считаю, что существует простое решение.

Ответ 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

libOPC!

Стандарт 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"];
}