Outils pour utilisateurs

Outils du site


convertir_un_document_libreoffice_en_jpeg

Convertir un document LibreOffice en JPEG ou PNG

Cette fiche regroupe plusieurs cas d'utilisation1)

Document multi-pages

Dans le cas d'usage, l'objectif est d'obtenir une image indépendante pour chaque page2).

La marche suivre comprend 2 étapes :

  1. exporter le document en PDF
  2. convertir le fichier PDF résultant en autant de fichiers-images que nécessaire

Concrètement…

  1. L'export en PDF se fait depuis LibreOffice (par exemple, à l'aide de la commande “Export direct au format PDF”)
  2. La conversion se fait en ligne de commande en utilisant la commande convert :
    $ convert mon-fichier.pdf les-images.png

Dans cet exemple, les fichiers-images seront nommés “les-images-X.png” où “X” sera l'indice numérique de chaque image créée (initialisé à 0). S'agissant d'un document ne contenant que du texte, j'ai choisi le format png car il est plus compact que jpeg.

Il peut être souhaitable de rassembler les fichiers-images dans un (sous-)répertoire. Il faut que le répertoire existe avant de lancer la commande :

$ mkdir dossier-images
$ convert -density 1080 mon-fichier.pdf ./dossier-images/les-images.png

Ici, les images seront générées dans la sous-répertoire “dossier-images” du répertoire courant où se trouve le fichier intermédiaire PDF. La valeur du paramètre density doit être adapté à la définition d'image souhaitée.

Transparence des PNG

Par defaut, convert génère des images PNG utilisant la transparence permise par ce format (canal alpha). Si on souhaite des images PNG sans transparence, il suffit de l'indiquer dans la commande :

$ convert -alpha remove mon-fichier.pdf les-images.png

Images dans le fichier source

Si le fichier source3) contient des images, une partie de la conversion peut échouer. Des messages d'erreurs en cascade s'afficheront dans le terminal, notamment4) :

convert-im6.q16: profile 'icc': 'RGB ': RGB color space not permitted on grayscale PNG `

Pour y remédier, on précise :

convert -define png:color-type=6 -density 1080 -alpha remove mon-fichier.pdf ./dossier-images/les-images.png

Source : RGB color space not permitted on grayscale PNG

Une seule page d'un document

Dans le cas où on ne souhaite convertir qu'une seule page du document, tout se fait depuis LibreOffice.

  1. ouvrir le document,
  2. se positionner sur la page voulue,
  3. exporter la page courante au format souhaité en utilisant la commande d'export de LibreOffice.

Document mono-page

Dans ce cas5), on peut utiliser LibreOffice, en ligne de commande.

On se contentera d'un format de commande minimal :

$ soffice --convert-to jpg mon_document.odt

ou on tirera parti des possibilités de paramétrage :

$ soffice --convert-to png:writer_png_Export mon-doc.odt --outdir "./mon-page-en-image"

Cette dernière commande placera le fichier-image dans un sous-répertoire du répertoire courant contenant le fichier LibreOffice.

Outils

J'ai créé un modèle libreoffice writer pour composer les textes et un script pour générer les images d'un fichier multi-pages.

Modèle libreoffre writer

Pour composer les textes à mettre en image, j'utilise un modèle de document libreoffice adapté à mon besoin. Il s'agit d'une page dans un format carré (personnalisé) avec des marges très réduites (en dessous de celles de l'imprimante).

Compte tenu des polices et tailles de caractères choisies, il me permet d'écrire 14 lignes par page/image.

Modèle téléchargeable

Script pour PixelFed

Pour me simplifier la vie j'ai écrit un script pour mettre en ligne des textes sous forme d'images sur PixelFed :

pdf2pxf.sh
#!/bin/bash
# Convertit un fichier pdf en une série d'images png
# pour publication sur PixelFed
# Utilisation : pdf2pxf.sh <mon-fichier> <mon-répertoire>
if ! [[ -z "$2" ]] && ! [[ -d "$2" ]]
then
  mkdir "$2"
fi
repertoire="$(dirname "$1")"
radical="$(basename "$1")"
[ ! -z "$2" ] && supplement="$2/"
convert -define png:color-type=6 -density 1080 -alpha remove "$1" "$repertoire/$supplement""$radical.png"
1)
Si vous pensez qu'il n'y a pas de bonne raison de faire ça, c'est que vous manquez d'expérience ou d'imagination, situation fréquente chez les personnes convaincues que la vie est soluble dans un manuel de bonnes pratiques :-D
2)
Et non d'avoir toutes les pages rassemblées dans un seul fichier image.
3)
LibreOffice ou PDF.
4)
Tant que cette erreur persiste, on ne tient pas compte des messages d'erreur qui pourraient suivre.
5)
Ou si on ne souhaite convertir que la première page.
convertir_un_document_libreoffice_en_jpeg.txt · Dernière modification : de Flaz