Je dois attendre longtemps après avoir utilisé cette commande LibreOffice destinée à convertir DOCX en PDF:
libreoffice --headless --convert-to pdf test.docx --outdir /pdf
Mais je n'obtiens aucune réponse et aucune erreur. Aucun fichier n'est converti. On dirait que le terminal est suspendu.
Alors, y at-il un moyen de suivre l'erreur?
Je voudrais d’abord l’essayer en donnant des chemins absolus à la commande.
Je soupçonne que le binaire libreoffice
ne fonctionne pas - vous devez localiser le binaire soffice
et voir si cela fonctionne.
Ensuite, votre --convert-to pdf
n'est pas suffisant. Il doit être:
--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. Elle est causée par un bug 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 les premiers tests et cette ronde de débogage:
$ mkdir ${HOME}/lo_pdfs
Par conséquent:
/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 Mavericks 10.9.5 avec LibreOffice v4.4.3.2 (en utilisant mon chemin spécifique pour la binaire soffice
qui sera différente pour vous de toute façon ...).
Si tout cela ne fonctionne pas:
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.
Réessayer. Cela fonctionne-t-il avec le simple DOCX?
Si cela ne fonctionne pas à nouveau, répétez l'étape 7, mais enregistrez-le au format ODT cette fois.
Répétez l'étape 8, mais veillez à référencer l'ODT cette fois-ci.
Last: utilisez le chemin complet de soffice
, de soffice.bin
et de libreoffice
et exécutez-les avec le paramètre -h
:
$ /path/to/libreoffice -h
$ /path/to/soffice -h
$ /path/to/soffice.bin -h
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.
Pour comparaison, ma propre sortie est ici:
$ /Applications/LibreOffice.app/Contents/MacOS/soffice -h
LibreOffice 4.4.3.2 88805f81e9fe61362df02b9941de8e38a9b5fd16
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 userinteraction 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.
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 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"
LibreOffice ne peut convertir que DOCX en PDF sur la ligne de commande:
Bien sûr, les résultats ne seront jamais parfaits, et parfois ils seront même inacceptables pour vous.
Re. sortie comme PDF:
Pour contrôler quel composant LibreOffice génère une sortie PDF, vous pouvez utiliser ces variantes:
--convert-to pdf:writer_pdf_Export
--convert-to pdf:calc_pdf_Export
--convert-to pdf:draw_pdf_Export
--convert-to pdf:impress_pdf_Export
--convert-to pdf:writer_web_pdf_Export
Re. entrée qui est pas DOCX:
Pour appliquer des infiltres aux formats d’entrée non-DOCX, vous pouvez utiliser (la liste n’est pas complète):
--infilter="HTML Document" # for HTML input
--infilter="MediaWiki" # for MediaWiki input
--infilter="Text CSV" # for CSV spreadsheet input
--infilter="Microsoft PowerPoint 2007/2010 XML" # for PPTX input
--infilter="Microsoft PowerPoint 97/2000/XP" # for PPT input
--infilter="Windows Metafile" # for WMF input
--infilter="Enhanced Metafile" # for EMF input
--infilter="Scalable Vector Graphics" # for SVG input
--infilter="Microsoft Excel 2007/2010 XML" # for XLSX input
--infilter="Microsoft Excel 97/2000/XP" # for XLS input
--infilter="Microsoft Excel 95" # for some XLS input
--infilter="Microsoft Excel 5.0" # for some XLS input
Re. sortie qui est pas PDF:
Pour convertir des formats de sortie spécifiques, vous pouvez utiliser (liste non complète):
--convert-to html:HTML
--convert-to html:draw_html_Export # force "Draw" to generate the HTML
--convert-to mediawiki:MediaWiki_Web # generate MediaWiki output
--convert-to csv:"Text - txt - csv (StarCalc)" # generate CSV spreadsheet output
--convert-to pptx:"Impress MS PowerPoint 2007 XML" # generate PPTX
--convert-to ppt:"MS PowerPoint 97" # generate PPT
--convert-to wmf:impress_wmf_Export # force "Impress" to generate the WMF
--convert-to wmf:draw_wmf_Export # force "Draw" to generate the WMF
--convert-to emf:impress_emf_Export # force "Impress" to generate the EMF
--convert-to emf:draw_emf_Export # force "Draw" to generate the EMF
--convert-to svg:impress_svg_Export # force "Impress" to generate the SVG
--convert-to svg:draw_svg_Export # force "Draw" to generate the SVG
--convert-to xlsx:"Calc MS Excel 2007 XML" # generate XLSX
--convert-to xls:"MS Excel 97" # generate XLS like Excel 97
--convert-to xls:"MS Excel 95" # generate XLS like Excel 95
--convert-to xls:"MS Excel 5.0/95" # generate XLS like Excel 5.0/95
Cela peut paraître stupide, mais j’en ai très peu souffert: sous Ubuntu 14.04, il ne suffit pas d’installer uniquement le paquet libreoffice-core ou -common pour convertir au format PDF, vous devez installer libreoffice-writer à la place/en plus. La chose importante à noter est que libreoffice-core | common semble apporter une base fonctionnelle libreoffice, d'où son nom ;-), qui ne commet pas d'erreur s'il est exécuté pour convertir un fichier, mais semble plutôt attendre sur une socket. ou tel pour une entrée ou quoi que ce soit ... Après avoir installé libreoffice-writer, qui a pour principe -core | common en tant que dépendance, la conversion d'un fichier ODT en PDF a fonctionné comme un charme avec la même ligne de commande qu'avant.
Cela semble un peu fou que l'application semble fonctionner d'une manière ou d'une autre, mais ne pourrait tout simplement pas à cause de paquets manquants, et n'en dit rien.
J'utilise aussi LibreOffice 4.2.8.2 (sous GNU/Linux), mais j'ai essayé de convertir un fichier DOC en un fichier HTML. J'ai installé libreoffice-headless
, mais le terminal était également suspendu. J'ai essayé chaque balle de Kurt Pfeifle, mais ça ne marchait pas…
La solutionétait simple: installer libreoffice-writer
(peut-être que libreoffice-filters
convient également, mais cela dépend de libreoffice-writer
et des autres gros composants de LibreOffice).
J'espère que cela aidera.