Word Docx архивирование: какой метод хорош? - PullRequest
0 голосов
/ 17 декабря 2018

В моем коде для создания zip-архива файлов DOCX перед переименованием .zip в .docx я использую этот первый метод с использованием набора инструментов SSZipArchive:

[SSZipArchive createZipFileAtPath:zipPath withContentsOfDirectory:dirPath keepParentDirectory:YES withPassword:nil];

В большинстве случаевОкончательный документ должен быть исправлен Word (что успешно).В некоторых редких случаях документ открывается нормально, а в некоторых других случаях восстановление невозможно.Я проверил весь код XML в разных ресурсах, и они строго идентичны.И все права доступа к файлам одинаковы ...

Затем, посмотрев множество онлайн-ресурсов, я прочитал, что хороший способ архивирования файла DOCX с помощью SSZipArchive немного отличается:

NSArray *paths = [[NSFileManager defaultManager] subpathsAtPath:dirPath];
NSMutableArray *fullPaths = [[NSMutableArray alloc] init];
for (int i = 0; i < paths.count; i++) {
     if ([[[paths objectAtIndex:i] lastPathComponent] hasPrefix:@".DS"])
        continue;

     [fullPaths addObject:[dirPath stringByAppendingPathComponent:[paths objectAtIndex:i]]];
}
[SSZipArchive createZipFileAtPath:zipPath withFilesAtPaths:fullPaths];

Нов этом случае результирующая файловая иерархия является беспорядком: файлы не сохраняются в соответствующих каталогах!

Чтобы понять, что происходит с первым методом, у меня был интересный опыт: если я просто разархивируюDOCX-файл, используя StuffIt Expander, а затем снова заархивируйте его (с помощью StuffIt или приложения MacOS zip), не меняя ничего в пакете, полученный документ DOCX не может быть открыт Word ... он пытается восстановить, но предупреждает, что этоневозможно.Есть ли что-то особенное в архивировании файлов DOCX, которые я пропустил?

...