Réparer un fichier doc corrompu

De Asso Val Libre
Révision de 27 août 2021 à 11:06 par Admin (discussion | contributions) (Pratique)

Aller à : navigation, rechercher

Problème

Un fichier traitement de texte odt, doc, docx est en fait une archive ("zip") contenant un ensemble de fichiers xml. Il peut arriver que l'un de ces fichier soit corrompu et le logiciel LibreOffice ou Word refuse alors d'ouvrir le document. L'erreur provient généralement de ce que la structure du format XML d'une partie du document n'est plus valide, ne correspond donc plus à ce que le logiciel est capable de traiter, comprendre.

L'ouverture échoue avec éventuellement un message d'erreur indiquant une localisation précise du problème (nom du fichier xml, numéro de ligne, numéro de colonne, descriptif du problème).

Solution

Principe

La méthode est générique :

  1. ouvrir le document texte comme archive zip pour accéder aux différents répertoires et documents en XML
  2. accéder au documents XML où se trouve l'erreur signalée
  3. extraire le document pour le traiter en dehors de l'archive
  4. corriger le problème XML décrit (!??)
  5. ré-injecter le document XML corrigé dans son archive
  6. sauvegarder l'archive et l'ouvrir avec le logiciel (libreoffice ou word)
  7. et ça marche... (en théorie ;-)

Pratique

En pratique, toute la difficulté réside dans la capacité à

  1. comprendre l'erreur XML
  2. savoir la corriger !


xmlllint 
http://xmlsoft.org/xmllint.html
est un utilitaire ligne de commande qui permet de «traiter» des fichiers au format XML avec différentes fonctionnalités.

L'une des fonctionnalités est ici particulièrement utile : --recover

Soit fichier-erreur.xml le fichier identifié comme contenant l'erreur XML
 xmlllint --recover fichier-erreur.xml > fichier-propre.xml
Permet d'obtenir le fichier fichier-propre.xml éventuellement débarassé de l'erreur de structure XML