Comment supprimer toutes les images d'un document dans LibreOffice Writer?

10

Ubuntu 12.04

Je souhaite supprimer toutes les images d'un document dans LibreOffice Writer. Mon document contient ~ 350 images. Existe-t-il un moyen de les supprimer en masse plutôt que un par un? J'ai essayé de décocher Outils> Options> LibreOffice Writer> Affichage> Affichage> "Graphiques et objets". Mais les espaces réservés sont toujours visibles.

Modifier: je sais comment enregistrer la page en tant que fichier texte brut, mais j'ai besoin d'une mise en forme dans mon document.

Chella
la source
@Chelia: Avez-vous essayé d'enregistrer le document en tant que fichier texte uniquement (dans les préférences "Enregistrer sous")?
stephenmyall
Mais pourquoi décocher "options> écrivain libreoffice> affichage> Affichage>" Graphiques et objets "" ne fonctionne pas? Je l'ai essayé. Ça marche pour moi. Avec ce paramètre coché, la prochaine fois que j'ouvrirai un document avec des graphiques, je ne verrai que les espaces réservés.
il aurait encore besoin de supprimer les espaces réservés @ vasa1 :)
Rinzwind
Vrai! Mais on ne sait pas quel est le but final ni pourquoi OP ne veut pas voir les images. L'exportation en tant que fichier texte uniquement peut tuer beaucoup de mise en forme.
exactement..! Je perdrai tout formatage si je l'enregistre avec uniquement du texte.
Chella

Réponses:

12

Vous pouvez également utiliser une courte macro à partir de LibreOffice pour supprimer toutes les images d'un document:

Sub RemoveImages

   Dim oDoc as Object
   oDoc = ThisComponent

   Dim oGraphics as Object
   oGraphics = oDoc.getGraphicObjects()

   Dim oImg as Object

   For Each oImg in oGraphics
       oDoc.getText().removeTextContent(oImg)
   Next 

End Sub

Cet exemple peut également être modifié pour changer les propriétés des images (comme les rendre toutes de taille uniforme) ainsi que la manipulation des objets de forme, etc.

Création de macros

LibreOffice fournit un langage de base ainsi que dans l'IDE pour créer, déboguer, stocker et exécuter du code.

Pour ouvrir la boîte de dialogue des macros, utilisez Alt+ F11ou, dans le menu, Outils > Macros > Organiser les macros > LibreOffice Basic

Le code est placé dans des modules , qui sont organisés en bibliothèques . Vous pouvez créer le vôtre, mais dans la plupart des cas, vous pouvez utiliser la bibliothèque MyMacros intégrée et le Module1 intégré .

Une fois la boîte de dialogue macro ouverte, sélectionnez Module1 et appuyez sur Modifier . Cela ouvre l'IDE.

Le code est organisé en sous-fonctions et fonctions. Empruntant à VBA, les fonctions sont utilisées pour renvoyer une valeur et les Subs ne renvoient pas de valeur. Vous pouvez définir vos propres sous-marins et fonctions n'importe où sous Main. Donc, pour utiliser ce code pour supprimer des images, il vous suffit de le coller dans le module.

Utilisation de macros

Vous pouvez exécuter le code directement à partir de l'EDI en cliquant n'importe où dans le Sub que vous souhaitez exécuter et en appuyant sur F5. (Les fonctions, car elles renvoient une valeur, doivent être appelées à partir d'un Sub.) Vous pouvez également utiliser les boutons de dialogue ou le menu pour exécuter le code. L'IDE comprend un débogueur intégré, ce qui est crucial lors de l'écriture de nouveau code.

La prochaine fois que vous ouvrirez la boîte de dialogue de macro, vous verrez le sous répertorié comme une macro et il pourra ensuite être exécuté sans ouvrir l'IDE. Des macros individuelles peuvent également être affectées à des éléments de menu ou de barre d'outils.

Remarque: Cette macro s'exécutera sur tout ce qui est le document actif. Lorsque vous exécutez une macro à partir du menu ou de la boîte de dialogue de macro, cela peut être supposé être le document où vous venez d'appuyer sur le bouton; mais lorsque vous utilisez l'IDE pour créer, exécuter ou déboguer du code, assurez-vous que vous n'avez pas fait d'un autre document le document actif.

LibreOffice Basic

LibreOffice Basic est très similaire à VBA, mais cette similitude peut également être trompeuse car le modèle d'objet est complètement différent et la syntaxe présente également de nombreuses différences.

Par exemple, dans VBA, une fois que vous avez une référence à un objet image, l'objet image aurait une méthode de suppression. Ici, les objets ont ou héritent de très peu de méthodes. Pour supprimer l'objet image, vous utilisez l'élément de document avec une structure et une syntaxe très similaires à un DOM basé sur un navigateur.

L'aide de LibreOffice contient des liens pour démarrer avec LibreOffice Basic.

chasses
la source
Si ce n'est pas trop difficile, une petite instruction sur la façon de convertir réellement le code en macro peut être utile. Compte tenu de tous les cris concernant Java, les gens devraient également savoir qu'un JRE est nécessaire pour permettre aux macros de fonctionner. Espérons que LibreOffice sera enfin sans Java.
Génie. :) Et fonctionne toujours dans LibO Writer 5.1, cela pourrait valoir la peine d'être ajouté.
Dɑvïd
5

Je suppose que le texte du document est formaté et que l'enregistrement en texte seul n'est pas idéal. Dans ce cas, on pourrait adopter une approche quelque peu longue:

  • Créez un dossier temporaire.

  • Ouvrez normalement le document dans LibreOffice.

  • Choisissez Save Aset sélectionnez ici HTML Document (Writer) (.html)comme format.

    • Spécifiez également le dossier temporaire de la destination et donnez au fichier html proposé un nom approprié. Acceptez Save as htmlet non le format odt dans l'écran suivant.
  • Fermez LibreOffice.

  • Ouvrez le dossier temporaire créé ci-dessus. Vous devriez voir un fichier html et un tas d'images.

    • Supprimez les images si elles ne sont plus nécessaires.
  • Ensuite, ouvrez le .htmlfichier dans un éditeur de texte approprié pour supprimer les balises qui, sinon, si elles étaient laissées, provoqueraient des lacunes dans le document.

    • Par exemple, dans Geany, j'ai utilisé <IMG SRC="[^>]+>l'expression de recherche et rien dans la case "remplacer par".

geany

  • Enregistrez le fichier .html. Désormais, lorsqu'il est affiché dans un navigateur ou même dans LibreOffice, il n'y aura pas d'images, pas d'espace réservé, juste du texte formaté.

Modifier: Au lieu d'utiliser un éditeur de texte basé sur une interface graphique, en supposant que l'un se trouve dans le dossier correspondant et que cli.htmlc'est le nom donné lors de l'enregistrement htmldans LibreOffice, on pourrait simplement utiliser la ligne de commande de cette façon:

perl -p -i.bak -e 's/<IMG[^>]+>//g' cli.html

Un fichier de sauvegarde,, cli.html.bakest créé juste au cas où ...


la source