76 votes

Comment puis-je convertir un fichier ODT en PDF ?

Quelqu'un sait-il comment convertir un ODT (LibreOffice) vers PDF ?

107voto

Ganikkost Points 133

Vous pouvez également utiliser la ligne de commande de libreoffice pour votre objectif. Cela vous donne l'avantage de la conversion par lots. Mais les fichiers uniques sont également possibles. Cet exemple convertit tous les fichiers ODT dans le répertoire actuel en PDF :

libreoffice --headless --convert-to pdf *.odt

Obtenez plus d'informations sur les options de la ligne de commande avec :

man libreoffice

79voto

Takkat Points 135194

Il suffit d'ouvrir le document avec libre office et de choisir Exporter en PDF... :

enter image description here

Pour une solution en ligne de commande, il existe unoconv qui convertit les fichiers à partir de la ligne de commande :

unoconv -f pdf mydocument.odt

Note : unoconv dépend de Libre Office.

8voto

Kurt Pfeifle Points 3525

Voici quelques détails supplémentaires sur la méthode "non-GUI".

  1. Vous pouvez utiliser cette méthode non seulement pour convertir des fichiers ODT en PDF. Elle fonctionnera également pour les fichiers MS Word DOCX (dans la mesure où LibreOffice est capable de gérer le fichier ODT en question), et, en général, pour tous les types de fichiers que LibreOffice peut ouvrir.

  2. Je ne pense pas qu'il y ait un binaire nommé libreoffice comme l'a suggéré l'une des autres réponses. Cependant, il y a soffice(.bin) -- le binaire qui peut être utilisé pour démarrer LibreOffice à partir de la ligne de commande. Il est généralement situé dans /usr/lib/libreoffice/program/ ; et très souvent, un lien symbolique /usr/bin/soffice pointe vers cet emplacement.

  3. Ensuite, dans la plupart des cas, les paramètres --headless --convert-to pdf ne sont pas suffisants. Il le faut :

    --headless --convert-to pdf:writer_pdf_Export

    Veillez à respecter exactement cette capitalisation !

  4. Ensuite, la commande ne fonctionnera pas si une instance de LibreOffice GUI est déjà en place et fonctionne sur votre système. Cela est dû à un bug #37531, connu depuis 2011 . Ajoutez ce paramètre supplémentaire à votre commande :

     "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"

    Cela créera un nouvel environnement séparé qui pourra être utilisé par une seconde instance LO sans tête sans interférer avec une première instance LO GUI éventuellement en cours d'exécution et démarrée par le même utilisateur.

  5. Assurez-vous également que le --outdir /pdf que vous avez spécifié existe, et que vous avez la permission d'écrire dessus. Ou, plutôt, utilisez un autre répertoire de sortie. Même si ce n'est que pour un premier test et un premier débogage :

    $ mkdir ${HOME}/lo_pdfs
  6. D'où :

    /path/to/soffice                                                     \
      --headless                                                         \
      "-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}" \
      --convert-to pdf:writer_pdf_Export                                 \
      --outdir ${HOME}/lo_pdfs                                           \
    /path/to/test.docx

    Cela fonctionne pour moi sur Mac OS X Yosemite 10.10.5 avec LibreOffice v5.1.2.2 (en utilisant mon chemin spécifique pour le binaire soffice ce qui sera différent sur Ubuntu de toute façon...). Il fonctionne également sur Debian Jessie 8.0 (en utilisant le chemin /usr/lib/libreoffice/program/soffice ). Désolé, je ne peux pas le tester sur Ubuntu pour le moment....

    Si tout cela ne fonctionne pas, lorsque vous essayez de traiter DOCX :

  7. Il peut s'agir d'un problème avec le fichier DOCX spécifique avec lequel vous essayez la commande... Créez donc d'abord un document DOCX très simple de votre cru. Utilisez LibreOffice lui-même pour cela. Ecrivez "Hello World !" sur une page vide. Enregistrez-le au format DOCX.

  8. Essayez encore. Cela fonctionne-t-il avec le simple DOCX ?

  9. Si cela ne fonctionne toujours pas, répétez l'étape 7, mais enregistrez en tant que ODT cette fois-ci.

  10. Répétez l'étape 8, mais veillez à faire référence à l'ODT cette fois-ci.

  11. Dernier : Utilisez le chemin complet vers soffice à soffice.bin et à libreoffice et exécutez chacun d'entre eux avec le -h paramètre :

    $ /path/to/libreoffice -h  # if that path exists, which I doubt!
    $ /path/to/soffice -h
    $ /path/to/soffice.bin -h
    • Vous obtenez une sortie ici ?
    • Pour lequel des trois binaires/symlinks ?
    • Enregistrez les sorties.
    • Dites-nous vos sorties ! !!
       

    Comparez-les à la ligne de commande que vous avez utilisée :

    • Y a-t-il des changements dans les noms des paramètres, les majuscules, le nombre de tirets utilisés, etc. ?
       

    Pour comparaison, mon propre résultat (Mac OS X) est ici :

     $ /Applications/LibreOffice.app/Contents/MacOS/soffice -h 
    
     LibreOffice 5.1.2.2 d3bf12ecb743fc0d20e0be0c58ca359301eb705f
    
     Usage: soffice [options] [documents...]
    
     Options:
     --minimized    keep startup bitmap minimized.
     --invisible    no startup screen, no default document and no UI.
     --norestore    suppress restart/restore after fatal errors.
     --quickstart   starts the quickstart service
     --nologo       don't show startup screen.
     --nolockcheck  don't check for remote instances using the installation
     --nodefault    don't start with an empty document
     --headless     like invisible but no user interaction at all.
     --help/-h/-?   show this message and exit.
     --version      display the version information.
     --writer       create new text document.
     --calc         create new spreadsheet document.
     --draw         create new drawing.
     --impress      create new presentation.
     --base         create new database.
     --math         create new formula.
     --global       create new global document.
     --web          create new HTML document.
     -o             open documents regardless whether they are templates or not.
     -n             always open documents as new files (use as template).
    
     --display <display>
           Specify X-Display to use in Unix/X11 versions.
     -p <documents...>
           print the specified documents on the default printer.
     --pt <printer> <documents...>
           print the specified documents on the specified printer.
     --view <documents...>
           open the specified documents in viewer-(readonly-)mode.
     --show <presentation>
           open the specified presentation and start it immediately
     --accept=<accept-string>
           Specify an UNO connect-string to create an UNO acceptor through which
           other programs can connect to access the API
     --unaccept=<accept-string>
           Close an acceptor that was created with --accept=<accept-string>
           Use --unnaccept=all to close all open acceptors
     --infilter=<filter>[:filter_options]
           Force an input filter type if possible
           Eg. --infilter="Calc Office Open XML"
               --infilter="Text (encoded):UTF8,LF,,,"
     --convert-to output_file_extension[:output_filter_name[:output_filter_options]] [--outdir output_dir] files
           Batch convert files (implies --headless).
           If --outdir is not specified then current working dir is used as output_dir.
           Eg. --convert-to pdf *.doc
               --convert-to pdf:writer_pdf_Export --outdir /home/user *.doc
               --convert-to "html:XHTML Writer File:UTF8" *.doc
               --convert-to "txt:Text (encoded):UTF8" *.doc
     --print-to-file [-printer-name printer_name] [--outdir output_dir] files
           Batch print files to file.
           If --outdir is not specified then current working dir is used as output_dir.
           Eg. --print-to-file *.doc
               --print-to-file --printer-name nasty_lowres_printer --outdir /home/user *.doc
     --cat files
           Dump text content of the files to console
           Eg. --cat *.odt
     --pidfile=file
           Store soffice.bin pid to file.
     -env:<VAR>[=<VALUE>]
           Set a bootstrap variable.
           Eg. -env:UserInstallation=file:///tmp/test to set a non-default user profile path.
    
     Remaining arguments will be treated as filenames or URLs of documents to open.
  12. Ajoutez un argument supplémentaire à votre ligne de commande pour imposer l'application d'un filtre d'entrée lorsque soffice ouvre votre fichier DOCX :

    --infilter="Microsoft Word 2007/2010/2013 XML"

    ou

    --infilter="Microsoft Word 2007/2010/2013 XML"
    --infilter="Microsoft Word 2007-2013 XML"
    --infilter="Microsoft Word 2007-2013 XML Template"
    --infilter="Microsoft Word 95 Template"
    --infilter="MS Word 95 Vorlage"
    --infilter="Microsoft Word 97/2000/XP Template"
    --infilter="MS Word 97 Vorlage"
    --infilter="Microsoft Word 2003 XML"
    --infilter="MS Word 2003 XML"
    --infilter="Microsoft Word 2007 XML Template"
    --infilter="MS Word 2007 XML Template"
    --infilter="Microsoft Word 6.0"
    --infilter="MS WinWord 6.0"
    --infilter="Microsoft Word 95"
    --infilter="MS Word 95"
    --infilter="Microsoft Word 97/2000/XP"
    --infilter="MS Word 97"
    --infilter="Microsoft Word 2007 XML"
    --infilter="MS Word 2007 XML"
    --infilter="Microsoft WinWord 5"
    --infilter="MS WinWord 5"

4voto

Glutanimate Points 20429

Nautilus script

Ce script utilise libreoffice pour convertir les fichiers compatibles avec LibreOffice en PDF.

#!/bin/bash
## PDFconvert 0.1
## by Glutanimate (https://askubuntu.com/users/81372/)
## License: GPL 3.0
## depends on python, libreoffice
## Note: if you are using a non-default LO version (e.g. because you installed it 
## from a precompiled package instead of the official repos) you might have to change
## 'libreoffice' according to the version you're using, e.g. 'libreoffice3.6'

# Get work directory
base="`python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI`"

#Convert documents
while [ $# -gt 0 ]; do
    document=$1
    libreoffice --headless --invisible --convert-to pdf --outdir "$base" "$document" 
    shift

done

Pour les instructions d'installation, voir ici : Comment installer un script de Nautilus ?

3voto

Kurt Pfeifle Points 3525

J'ajoute une nouvelle réponse, car ces derniers temps, une série de nouvelles voies de conversion ont été ouvertes par la Commission européenne. Pandoc en acquérant la capacité de lire les fichiers ODT.

Lorsque Pandoc lit un format de fichier, il le convertit dans un format interne, "natif" (qui est une forme de JSON).

À partir de sa forme native, il peut ensuite exporter le document dans toute une série d'autres formats. Non seulement PDF, mais aussi DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki et bien d'autres encore...

Puisqu'ici le format de sortie souhaité est le PDF, nous avons un autre choix de chemins différents, fournis par ce que Pandoc appelle une pdf-engine . Voici la liste des moteurs PDF actuellement disponibles (valable pour Pandoc v2.7.2 et plus -- les versions précédentes peuvent ne supporter qu'une liste plus restreinte) :

  • pdflatex : Cela nécessite LaTeX à installer en plus de Pandoc.

  • xelatex : Cela nécessite XeLaTeX qui doit être installé en plus de Pandoc (également disponible en tant que paquetage additionnel à l'offre générale de l'UE). Distributions TeX ).

  • le contexte : Cela nécessite ConTeXt doit être installé en plus de Pandoc ; ConTeXt est disponible en tant que paquetage supplémentaire pour la plupart des systèmes de gestion de l'information. Distributions TeX ).

  • lualatex : Cela nécessite LuaTeX qui doit être installé en plus de Pandoc (également disponible en tant que paquetage additionnel à l'offre générale de l'UE). Distributions TeX ).

  • pdfroff : Cela nécessite GNU Roff à installer en plus de Pandoc.

  • wkhtml2pdf : Cela nécessite wkhtmltopdf à installer en plus de Pandoc.

  • prince : Cela nécessite PrinceXML à installer en plus de Pandoc.

  • weasyprint : Cela nécessite weasyprint à installer en plus de Pandoc.

Il existe d'autres moteurs PDF, plus récents, intégrés à Pandoc, que je n'ai pas encore utilisés moi-même et que je ne peux actuellement pas décrire plus en détail : tectonique et latexmk .

AVERTISSEMENT : Ne vous attendez pas à ce que l'apparence de votre document original soit identique dans toutes les sorties PDF à l'aperçu avant impression ou à l'exportation PDF de l'ODT ! Pandoc, lors de la conversion ne préserve pas les mises en page il préserve le contenu et le structure de documents : les paragraphes restent des paragraphes, les mots mis en valeur restent mis en valeur, les titres restent des titres, etc. Mais l'aspect général peut changer considérablement.

Exemples de commandes

pdflatex :

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=pdflatex

XeLaTeX :

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=xelatex

LuaLaTeX :

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=lualatex

ConTeXt :

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=context

GNU troff :

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=pdfroff

wkhtmltopdf :

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=wkhtml2pdf

PrinceXML :

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=prince

weasyprint :

 pandoc -f odt -o mydoc.pdf mydoc.odt --pdf-engine=weasyprint

Les commandes ci-dessus sont les plus basiques pour la conversion. Selon le moteur PDF que vous choisissez, il peut y avoir de nombreuses autres options possibles pour contrôler l'apparence du fichier PDF de sortie. Par exemple, les paramètres supplémentaires suivants peuvent être ajoutés à tous les chemins qui passent par LaTeX :

 -V geometry:"paperwidth=23.3cm, paperheight=1000pt, margin=11.2mm, top=2cm"

qui utilisera un format de page personnalisé (un peu plus grand que le DIN A4) avec des marges de 2 cm sur le bord supérieur et de 1,12 cm sur les trois autres bords).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X