Исправление "Word нашел нечитаемый контент в поврежденном ..." программным способом - PullRequest
0 голосов
/ 30 января 2020

Я получаю сгенерированный Open Xml файл docx из другой системы. При попытке открыть файл в моем приложении, используя Microsoft.Office.Interop.Word.Application.Open(filename), я получаю исключение The file appears to be corrupted.

Когда я вручную открываю файл docx, меня приветствует приглашение Word found unreadable content in corrupt xxx.docx. Do you want to recover the contents of this document? If you trust the source of this document, click Yes.. Когда я нажимаю Yes, он может восстановить документ в новом несохраненном файле Word.

Я попытался сравнить документ предыдущего файла поврежденного .docx. xml с документом файла recovered.docx. xml. Несмотря на то, что между двумя document.xmls есть много изменений форматирования (дополнительное пространство между закрывающими тегами xml), основным отличием было то, что AltChunk фактически был встроен в recovered.docx, и было несколько пустых тегов «run», которые получили удален. Я не уверен, что может привести к тому, что файл будет считаться поврежденным, поскольку те не кажутся нужными.

Тем не менее, есть ли способ запустить любой процесс, который происходит, когда я нажимаю Yes, чтобы это ...Do you want to recover the contents of this document?... подсказывает программно через мое приложение; это было бы идеально? Менее предпочтительно, есть ли способ сказать, какие части xml на самом деле портят в слове do c?

1 Ответ

1 голос
/ 30 января 2020

Тем не менее, есть ли способ запустить любой процесс, который происходит, когда я нажимаю Да для этого ... Хотите ли вы восстановить содержимое этого документа? ... программно запрашивать через мое приложение; это было бы идеально? Менее предпочтительно, есть ли способ сказать, какие части xml на самом деле портят, одним словом сделать c?

  1. Нет, это не подвергается внешнему воздействию
  2. Теоретически валидация возможна. Но, учитывая, что задействован AltChunk, это может не обернуться проблемой. Содержимое AltChunk не интегрируется, пока Word не обработает документ, и тогда он не будет интегрирован. И если то, что происходит, «ломает» что-то, проверка не подхватит это.

В этом конкретном случае я мог бы попытаться удалить AltChunk вручную (части находятся в нескольких местах в zip-файл) и посмотрите, можно ли открыть файл без него. Но если вы не очень хорошо знакомы с пакетом zip для Word Open XML, лучше спросить производителя / источник документа.

...