Comment puis-je convertir un fichier ODT en PDF?

58

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

    
posée SoftTimur 10.09.2011 - 08:14
la source

7 réponses

64

Ouvrez simplement le document avec libre office et choisissez Exporter au format PDF ... :

Pourunesolutionenlignedecommande,ilexiste unoconv qui convertit les fichiers à partir de la ligne de commande:

unoconv -f pdf mydocument.odt

Remarque: Unoconv uniquement à partir d'Ubuntu 11.10 dépend de Libre Office. Les versions précédentes d'Unoconv (d'après Ubuntu < = 11.04) dépendent d'Open Office (mais elles fonctionneront également avec Libre Office).

    
réponse donnée Takkat 10.09.2011 - 08:55
la source
79

Vous pouvez également utiliser la ligne de commande de libreoffice à cette fin. Cela vous donne l'avantage de la conversion par lots. Mais des fichiers uniques sont également possibles. Cet exemple convertit tous les fichiers ODT du répertoire actuel en PDF:

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

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

man libreoffice
    
réponse donnée Tapper 15.02.2012 - 17:53
la source
7

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. Cela fonctionnera également pour les fichiers DOCX MS Word (cela fonctionnera aussi bien que LibreOffice soit capable de gérer l’ODT particulier) et, en général, tous les types de fichiers que LibreOffice peut ouvrir.

  2. Je ne pense pas qu'il existe un binaire nommé libreoffice comme l'une des autres réponses suggérées. Cependant, il existe 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 doit être:

    --headless --convert-to pdf:writer_pdf_Export
    

    Veillez à suivre exactement cette capitalisation!

  4. Ensuite, la commande ne fonctionnera pas si une instance d’interface graphique LibreOffice est déjà opérationnelle sur votre système. Cela est dû au bogue N ° 37531, connu depuis 2011 . Ajoutez ce paramètre supplémentaire à votre commande:

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

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

  5. Assurez-vous également que le --outdir /pdf que vous spécifiez existe et que vous y avez le droit d'écriture. Ou utilisez plutôt un répertoire de sortie différent. Même s'il ne s'agit que d'un premier tour de test et de 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 qui sera différent de toute façon sur Ubuntu ...). Cela 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. Cela peut être 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. Utilisez LibreOffice lui-même pour cela. Ecrivez "Hello World!" sur une page par ailleurs vide. Enregistrez-le en tant que DOCX.

  8. Réessayez. Est-ce que cela fonctionne avec le simple DOCX?

  9. Si cela ne fonctionne pas à nouveau, répétez l'étape 7, mais enregistrez-le au format ODT cette fois-ci.

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

  11. Dernier: utilisez le chemin d'accès complet à soffice , à soffice.bin et à libreoffice et exécutez-les avec le paramètre -h :

    $ /path/to/libreoffice -h  # if that path exists, which I doubt!
    $ /path/to/soffice -h
    $ /path/to/soffice.bin -h
    
    • Avez-vous une sortie ici?
    • Pour lequel des trois fichiers binaires / liens symboliques?
    • Enregistrez les sorties.
    • Indiquez-nous vos résultats !!!
       

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

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

    À titre de comparaison, ma propre sortie (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 appliquer 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"
    
réponse donnée Kurt Pfeifle 17.06.2016 - 20:38
la source
4

Script Nautilus

Ce script utilise libreoffice pour convertir les fichiers compatibles avec LibreOffice au format 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 Nautilus ?

    
réponse donnée Glutanimate 05.01.2013 - 06:17
la source
2

Remarque: j'ai décidé de supprimer ma réponse de cette question et de poster une version modifiée de celle-ci lorsque je me suis rendu compte que unoconv ne gère pas du tout les fichiers psw et ne les convertit pas correctement vers d'autres formats. Il peut également y avoir des problèmes avec les formats docx et xlsx .

Cependant, Libreoffice supporte pleinement de nombreux types de fichiers; Une documentation complète est disponible sur le site officiel, qui détaille les formats d'entrée et de sortie valides.

Vous pouvez utiliser l'utilitaire de ligne de commande libreoffice convert ou unoconv , qui est disponible dans le répertoire suivant: les dépôts. Je trouve que unoconv est très utile, et c’est probablement ce que vous voulez. Même si Takkat a brièvement mentionné unoconv , j’ai pensé qu’il serait utile de donner quelques détails supplémentaires et une conversion par lots. -liner.

À l'aide du terminal, vous pouvez cd dans le répertoire contenant vos fichiers, puis les convertir par lots en exécutant une ligne comme celle-ci:

for f in *.odt; do unoconv -f pdf "${f/%pdf/odt}"; done

(Ce one-liner est une modification de mon script de traduction en vedette dans cette réponse .)

Si vous souhaitez utiliser ultérieurement un autre format de fichier, remplacez simplement odt et pdf par tout autre format d'entrée et de sortie pris en charge. Vous pouvez trouver les formats pris en charge pour un type de fichier en entrant unoconv -f odt --show . Pour convertir un seul fichier, utilisez par exemple unoconv -f pdf myfile.odt .

Pour plus d’informations sur le programme et ses options, entrez-le dans le terminal man unoconv ou cliquez sur Pages de manuel Ubuntu en ligne .

    
réponse donnée user76204 10.12.2012 - 21:06
la source
1

Un autre script Nautilus

Ce script Nautilus très simple et léger utilise unoconv pour convertir les fichiers sélectionnés compatibles avec LibreOffice au format PDF:

#!/bin/sh
#Nautilus Script to convert selected LibreOffice-compatible file(s) to PDF
#
OLDIFS=$IFS
IFS="
"
for filename in [email protected]; do
unoconv --doctype=document --format=pdf "$filename"
done
IFS=$OLDIFS
    
réponse donnée Sadi 08.02.2013 - 18:38
la source
0

Pensez à utiliser le service docspal ( lien ). C'est gratuit, rapide et supporte beaucoup de formats. J'espère que cela vous sera utile.

    
réponse donnée Andreas 10.09.2011 - 09:47
la source

Lire d'autres questions sur les étiquettes