Est-ce que quelqu'un sait comment convertir un fichier ODT
(LibreOffice) en PDF
?
Ouvrez simplement le document avec libre office et choisissez Exporter au format PDF ... :
Pour une solution en ligne de commande, il y a noconv qui convertit les fichiers à partir de la ligne de commande:
unoconv -f pdf mydocument.odt
Remarque: Ununod à partir d'Ubuntu 11.10 uniquement dépend de Libre Office. Les versions précédentes d'Unoconv (sous Ubuntu <= 11.04) dépendent d'Open Office (mais elles fonctionneront également avec Libre Office).
Vous pouvez également utiliser la ligne de commande 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
Voici quelques détails supplémentaires sur la méthode "non-GUI".
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 est capable de gérer l'ODT particulier) et, en général, tous les types de fichiers que LibreOffice peut ouvrir.
Je ne pense pas qu’il existe un binaire nommé libreoffice
comme l’a suggéré l’une des autres réponses. Cependant, il existe soffice(.bin)
- le binaire qui peut être utilisé pour lancer 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.
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
Assurez-vous de suivre exactement cette capitalisation!
Ensuite, la commande ne fonctionnera pas si une instance d’interface graphique LibreOffice est déjà opérationnelle sur votre système. C'est causé par 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 en-tête sans interférer avec une première instance en cours d'exécution éventuellement créée par le même utilisateur.
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 si ce n'est que pour un premier tour de test et de débogage:
$ mkdir ${HOME}/lo_pdfs
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:
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 pour cela. Ecrivez "Hello World!" sur une page par ailleurs vide. Enregistrez-le en tant que DOCX.
Réessayer. Est-ce que cela fonctionne avec le simple DOCX?
Si cela ne fonctionne plus, répétez l'étape 7, mais enregistrez-le sous ODT cette fois.
Répétez l'étape 8, mais veillez à référencer l'ODT cette fois-ci.
Dernier: utilisez le chemin complet vers soffice
name__, 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
Comparez-les à la ligne de commande que vous avez utilisée:
À 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.
Ajoutez un dernier argument à 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"
Nautilus Script
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 puis-je installer un script Nautilus?
Remarque: j'ai décidé de supprimer ma réponse de cette question et d'en publier une version modifiée ici lorsque je me suis rendu compte que unoconv
ne traitait pas du tout les fichiers psw
et ne les convertissait pas correctement. à 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; 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 conversion libreoffice
ou noconv , disponible dans les référentiels. Je trouve unoconv
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 dans une ligne.
En utilisant le terminal, vous pouvez cd
dans le répertoire contenant vos fichiers, puis les convertir par lots en exécutant un one-liner comme celui-ci:
for f in *.odt; do unoconv -f pdf "${f/%pdf/odt}"; done
(Ce one-liner est une modification de mon script de traduction présenté dans cette réponse .)
Si vous souhaitez utiliser ultérieurement d'autres formats de fichier, remplacez simplement les noms 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, accédez à la borne man unoconv
ou rendez-vous à la page pages de manuel Ubuntu en ligne .
J'ajoute une nouvelle réponse, car récemment, une série de nouveaux chemins de conversion ont été ouverts par Pandoc en obtenant la capacité lire les fichiers ODT.
Lorsque Pandoc lit dans un format de fichier, il le convertit en un format interne, "natif" (qui est une forme de JSON).
À partir de sa forme native, il peut ensuite exporter le document dans toute une gamme d'autres formats. Non seulement PDF, mais aussi DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki et ce qui ne l'est pas ...
Le format de sortie souhaité étant ici le format PDF, nous avons un autre choix de chemins différents, fournis par ce que Pandoc appelle un moteur PDF . Voici la liste des moteurs PDF actuellement disponibles (valide pour Pandoc v2.7.2 et versions ultérieures - les versions précédentes ne peuvent prendre en charge qu'une liste plus petite):
pdflatex: Ceci nécessite que LaTeX soit installé en plus de Pandoc.
xelatex: Ceci nécessite que XeLaTeX soit installé en plus de Pandoc (également disponible en tant que paquet supplémentaire pour général distributions TeX ).
contexte: Ceci nécessite que ConTeXt soit installé en plus de Pandoc; ConTeXt est disponible en tant que paquet supplémentaire pour la plupart des distributions TeX ).
lualatex: Ceci nécessite que LuaTeX soit installé en plus de Pandoc ( également disponible sous forme de paquet additionnel à general distributions TeX ).
pdfroff: Ceci nécessite que GNU Roff soit installé en plus de Pandoc. .
wkhtml2pdf: Ceci nécessite que wkhtmltopdf soit installé en plus de Pandoc.
prince: Cela nécessite PrinceXML d'être installé en plus de Pandoc.
weasyprint: Cela nécessite weasyprint d'être installé en plus de Pandoc.
Il existe de nouveaux et plus récents PDF moteurs maintenant intégrés à Pandoc, que je n'ai pas encore utilisés et que je ne peux pas décrire plus en détail pour le moment: tectonique = et latexmk.
AVERTISSEMENT: Ne vous attendez pas à ce que l'apparence de votre document d'origine soit identique dans toutes les PDF sorties vers l'aperçu avant impression ou PDF exportation de l'ODT! Pandoc, lors de la conversion ne conserve pas les mises en forme , il conserve le contenu et la structure des documents: les paragraphes restent les paragraphes, les mots soulignés restent accentués, les titres restent les titres, etc. Mais l'apparence générale peut changer considérablement.
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 élémentaires pour la conversion. En fonction du moteur PDF que vous avez sélectionné, de nombreuses autres options permettent de contrôler l'apparence du fichier de sortie PDF. Par exemple, les paramètres supplémentaires suivants peuvent être ajoutés à tous ces chemins acheminant via 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 DIN A4) avec des marges de 2 cm sur le bord supérieur et de 1,12 cm sur les trois autres bords.
Ce script Nautilus très simple et léger utilise unoconv
pour convertir le (s) fichier (s) sélectionné (s) compatible avec LibreOffice au format PDF:
#!/bin/sh
#Nautilus Script to convert selected LibreOffice-compatible file(s) to PDF
#
OLDIFS=$IFS
IFS="
"
for filename in $@; do
unoconv --doctype=document --format=pdf "$filename"
done
IFS=$OLDIFS