Comment purger un document?

Prenons par exemple un nouveau document writer vide.
Dans la mise en page, on met un fichier PNG en fond de page et on sauvegarde.
On retourne dans la mise en page, on supprime le fond de page puis on sauvegarde.
Le poids du fichier ne diminue pas.
C’est valable également pour un image insérée dans le texte.
Comment peut on purger le fichier des éléments supprimés ?

Attention, je parle bien d’une image insérée en tant que fond de page. Dans le cas d’une image insérée dans un document le problème n’apparaît plus dans les dernières versions de Libreoffice.
Le seul moyen que j’ai trouvé pour purgé le fichier est de sauvegarder en docx, de ré-ouvrir le fichier et de le sauvegarder en ott. Aau risque de perdre des mises en formes, et intellectuellement peu satisfaisant de passer par du docx !

Des informations sont parfois sauvegardées pour permettre des “reprises” ultérieures. Essayez Fichier>Sauver sous qui va créer un nouveau fichier et non pas mettre à jour l’existant.

EDIT 2019-1-24

Je crois avoir l’explication. Ensuite, est-ce un bug ou pas, il faudrait l’avis d’un développeur ou de quelqu’un ayant élaboré les spécifications.

Ma procédure: dans un document vierge, j’ajoute une image de fond au style de page par défaut. Je sauvegarde en .fodt. J’ôte l’image de fond et je sauvegarde dans un autre fichier .fodt. Je me sers ensuite de diff pour comparer les deux.

Dans la partie <office:automatic-styles> , <style:page-layout style:name="pm1"> va décrire le style par défaut modifié.

L’élément <style:page-layout-properties …> contient une référence vers l’image à utiliser sous forme de draw:fill="none" s’il n’y a pas de fond, ou draw:fill="bitmap" suivi de tout ce qu’il faut pour mettre en page l’image .png.

Note: <draw:fill-image-name="xxx" reste présent après retrait de l’image de fond.

Dans le cas où une image de fond est demandé, l’élément <style:page-layout-properties …> contient un <style:background-image … > avec les propriétés de position et de répétition de l’image. Cet élément contient lui-même un <office:binary-data> pour les données de l’image.

Quand on supprime l’image de fond, le <style:background-image … > est bien supprimé avec toutes ses données, ce qui est bien compatible avec mon constat de diminution de taille du fichier.

MAIS, l’attribut <draw:fill-image-name="xxx" de <style:page-layout-properties …> n’est pas effacé. Le nom "xxx" référence un article du dictionnaire <office:styles>, à savoir un <draw:fill-image draw:name="xxx"> qui contient lui même un <office:binary-data> avec toutes les données d’image.

Comme la référence à cet article n’est pas effacée, son compteur de références n’est pas nul et LO Writer ne l’élimine pas.

Pour quelle raison la référence depuis le style de page n’est-elle pas effacée? Je suppose que c’est à cause de ça que la taille du fichier ne diminue pas autant qu’elle le pourrait.

L’autre question est: pourquoi y a-t-il duplication des données d’images? S’il y a un dictionnaire avec un nom unique pour chaque article (essayez d’importer une deuxième fois l’image sans changer son nom!) dans le but louable de permettre l’insertion de la même image en plusieurs endroits sans la multiplier, pourquoi recopie-t-on les données dans le style?

Supplément à l’édition précédente

J’ai complété le rapport de bug avec les informations ci-dessus, dans l’espoir que ce soit “seulement” un problème de comptage de références.

Dans la page de gestion de l’image de fond, il est possible de cliquer sur une image dans la bande de gauche pour la sélectionner, puis par un clic droit d’accéder à un menu proposant “Effacer”. Ceci fait bien disparaître l’image de l’aperçu, mais ses données traînent encore dans le XML. C’est peut-être un bug annexe du premier.

J’ai bien sûr essayé cette solution, mais rien n’y fait.
En plus, si l’on supprime une image pour la remplacer par une autre, le poids du fichier garde son ancien poids augmenté de celui de l’image de remplacement.

Je vais regarder le XML correspondant.

C’est quelle version de LibreOffice et quel OS?

Bonjour,
La version installée est la 6.0.7.3 sour W7-Pro

Je viens de refaire un essai à partir d’un document vide, insérer, un fond de page en bitmap. sauvegarder en modèle (ott)
Ouvrir le modèle, supprimer le fond de page, sauvegarder sous nouveau nom.
Le nouveau fichier vide pèse à quelques octets près le même poids que l’ott.
Je change l’extension de l’odt en zip pour aller voir ce qui se passe. Et je trouve mon fond de page en png dans le répertoire /Pictures/

@ajittoz: La différence entre Philippe et vous est que philippe teste une image de fond tandis que vous une simple image.

@philippe Pouvez-vous tester avec la 6.1.4 pour voir si le problème est toujours présent avec cette version? https://fr.libreoffice.org/download/libreoffice-fresh

@wget Je viens de tester avec la version 6.1.4 aucune différence.

Bonjour

Il s’agit d’un bug référencé : tdf#92796.

Une solution “expert” (à n’utiliser qu’en connaissance de cause et de préférence sur une copie) est de dézipper l’archive, de supprimer l’image et sa référence dans le fichier META-INF/manifest.xml

[EDIT]

Dans mon test il n’a pas été nécessaire de modifier au niveau du style, mais j’étais au préalable repassé à un arrière-plan “aucun” pour ce style.

Cordialement

J’avais essayé la “solution expert” avant de poster, mais ce n’est pas suffisant, il reste des choses qui traînent dans styles.xml

philippe ferey: d’après mes expérimentations, il faut aussi aller éliminer un attribut dans la définition du style de page. Je n’ai pas essayé.

J’ai aussi essayé le passage par “aucun”. Malheureusement, cela n’efface pas draw:fill-image-name, ce qui me semble être au cœur du problème. Il faut doc éliminer cet attribut ET l’image. J’ai travaillé sur le format .fodt. En .odt, il traîne peut-être aussi des références pour faire le lien avec le répertoire des images. Il faut alors aussi éliminer ces références sinon le fichier complet pourrait être corrompu.

Je viens de refaire un test qui confirme ma réponse :

  • création d’un doc., création & application d’un style de page avec image en arrière-plan, enregistrement
  • réouverture, modif. du style (arrière-plan: aucun), enregistrement
  • dézip., suppression image & modif. manifest.xml, re-zip => doc “ok”.

Cordialement