Est-ce que quelqu'un sait comment convertir un fichier ODT
(LibreOffice) en PDF
?
Réponses
Trop de publicités?Vous pouvez également utiliser la ligne de commande de libreoffice
pour votre usage. Cela vous donne l'avantage de la conversion par lots. Mais les 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. 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.
-
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 asoffice(.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. -
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 !
-
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.
-
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
-
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 :
-
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.
-
Essayez encore. Cela fonctionne-t-il avec le simple DOCX ?
-
Si cela ne fonctionne toujours pas, répétez l'étape 7, mais enregistrez en tant que ODT cette fois-ci.
-
Répétez l'étape 8, mais veillez à faire référence à l'ODT cette fois-ci.
-
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.
-
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"
Script Nautilus
Ce script utilise libreoffice pour convertir des fichiers compatibles avec LibreOffice en PDF.
#!/bin/bash
## PDFconvert 0.1
## de Glutanimate (https://askubuntu.com/users/81372/)
## Licence : GPL 3.0
## dépend de python, libreoffice
## Remarque : si vous utilisez une version LO non par défaut (par exemple, car vous l'avez installée
## à partir d'un package précompilé au lieu des dépôts officiels) vous pourriez avoir à changer
## 'libreoffice' selon la version que vous utilisez, par exemple 'libreoffice3.6'
# Obtenir le répertoire de travail
base="`python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' $NAUTILUS_SCRIPT_CURRENT_URI`"
#Convertir les documents
while [ $# -gt 0 ]; do
document=$1
libreoffice --headless --invisible --convert-to pdf --outdir "$base" "$document"
shift
done
Pour les instructions d'installation, consultez ici : Comment puis-je installer un script Nautilus?
Je rajoute une nouvelle réponse, car récemment une série de nouveaux chemins de conversion ont été ouverts par Pandoc en acquérant la capacité de lire des fichiers ODT.
Lorsque Pandoc lit 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 en PDF, mais aussi en DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki et autres...
Comme ici le format de sortie souhaité est le PDF, nous avons un autre choix de différents chemins, fournis par ce que Pandoc appelle un pdf-engine. Voici la liste des moteurs PDF actuellement disponibles (valable pour Pandoc v2.7.2 et ultérieur - les versions précédentes peuvent ne prendre en charge qu'une liste plus petite):
-
pdflatex: Cela nécessite que LaTeX soit installé en plus de Pandoc.
-
xelatex: Cela nécessite que XeLaTeX soit installé en plus de Pandoc (également disponible comme un package supplémentaire pour les distributions générales de TeX).
-
context: Cela nécessite que ConTeXt soit installé en plus de Pandoc; ConTeXt est disponible comme un package supplémentaire pour la plupart des distributions générales de TeX).
-
lualatex: Cela nécessite que LuaTeX soit installé en plus de Pandoc (également disponible comme un package supplémentaire pour les distributions générales de TeX).
-
pdfroff: Cela nécessite que GNU Roff soit installé en plus de Pandoc.
-
wkhtml2pdf: Cela nécessite que wkhtmltopdf soit installé en plus de Pandoc.
-
prince: Cela nécessite que PrinceXML soit installé en plus de Pandoc.
-
weasyprint: Cela nécessite que weasyprint soit installé en plus de Pandoc.
Il y a quelques autres moteurs PDF plus récents intégrés dans 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: tectonic et latexmk.
ATTENTION: Ne vous attendez pas à ce que l'apparence de votre document original soit identique dans tous les PDF générés à l'aperçu avant impression ou à l'exportation en PDF du document ODT! Pandoc, lors de la conversion, ne préserve pas les mises en page, il préserve le contenu et la structure des documents : les paragraphes restent des paragraphes, les mots soulignés restent soulignés, les en-têtes restent des en-têtes, etc. Mais l'apparence générale 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. En fonction du 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 additionnels suivants peuvent être ajoutés à tous ces chemins passant par LaTeX:
-V geometry:"paperwidth=23.3cm, paperheight=1000pt, margin=11.2mm, top=2cm"
ce qui utilisera une taille de page personnalisée (un peu plus grande que le format DIN A4) avec des marges de 2cm sur le bord supérieur et de 1,12cm sur les trois autres bords).
- Réponses précédentes
- Plus de réponses