La commande " libreoffice --sans tête-convertir-pdf test.docx --outdir /pdf ne fonctionne pas

je dois attendre longtemps après avoir utilisé cette commande LibreOffice qui est destinée à convertir DOCX en PDF:

libreoffice --headless --convert-to pdf test.docx --outdir /pdf

mais je ne reçois aucune réponse et aucune erreur. Aucun fichier n'est converti. On dirait que le terminal est suspendu.

Donc, il n'y a aucun moyen de suivre l'erreur?

42
demandé sur Kurt Pfeifle 2015-05-20 15:22:52

4 réponses

  1. je voudrais d'abord essayer de donner des chemins absolus à la commande.

  2. je soupçonne que l' libreoffice binaire ne fonctionne pas, vous avez pour localiser le soffice binaire et voir si cela fonctionne.

  3. alors, votre --convert-to pdf n'est pas suffisant. Il doit être:

    --convert-to pdf:writer_pdf_Export
    

    assurez-vous de suivre exactement cette capitalisation!

  4. ensuite, la commande ne fonctionnera pas s'il y a déjà une interface graphique LibreOffice qui fonctionne sur votre système. Elle est causée par le bogue connu depuis 2011. Ajouter ce paramètre supplémentaire à votre commande:

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

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

  5. Aussi, assurez-vous que l' --outdir /pdf vous précisez existe, et que vous avoir les droits d'écriture. Ou, utilisez plutôt un dir de sortie différent. Même si ce n'est que pour le premier test et ce 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 Mavericks 10.9.5 avec LibreOffice v4.4.3.2 (en utilisant mon chemin spécifique pour le binaire soffice qui sera différent pour vous de toute façon...).

    si tout cela ne fonctionne pas travail:

  7. il peut y avoir 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 vide. Enregistrer en tant que DOCX.

  8. Essayez de nouveau. fonctionne-t-il avec le simple DOCX?

  9. si cela ne fonctionne pas, répétez l'étape 7, mais enregistrez comme ODT ceci temps.

  10. Répétez l'étape 8, mais assurez-vous de référence de l'ODT ce moment.

  11. dernière: utilisez le chemin complet vers sofficesoffice.bin et libreoffice et exécuter chaque -h paramètre:

    $ /path/to/libreoffice -h
    $ /path/to/soffice -h
    $ /path/to/soffice.bin -h
    
    • vous obtenez même une sortie ici?
    • pour lequel des trois binaires/liens symboliques?
    • enregistrer les sorties.
    • Donnez-nous vos sorties!!!

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

    existe-il des changements dans les noms de paramètres, capitalisation boursière, le nombre de tirets, etc.??

    a titre de 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.
    
  12. Ajouter un argument de plus à votre ligne de commande pour forcer l'application d'un filtre d'entrée quand soffice ouvre votre DOCX fichier:

    --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"
    

mise à Jour

LibreOffice ne peut pas seulement convertir DOCX en PDF sur la ligne de commande:

  • C'est peut-processus format d'entrée qu'il peut ouvrir et "lire": DOC, XLS, XLSX, PPT, PPTX, ...
  • Il peut convertir format de sortie qu'il peut "écrire": DOC, XLS, XLSX, PPT, PPTX, ...

De bien sûr, les résultats ne seront jamais parfaits, et parfois ils seront même inacceptables pour vous.

Re. sortie PDF:

De contrôle, LibreOffice composant génère de sortie au format 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. d'entrée, qui est not DOCX:

pour renforcer les infiltrations pour les 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. une sortie qui est not PDF:

pour convertir en 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
71
répondu Kurt Pfeifle 2016-07-21 11:29:02

pourrait sembler stupide mais j'ai juste souffert de cela: dans Ubuntu 14.04 il n'est pas suffisant d'installer seulement le paquet libreoffice-core ou-common pour convertir en PDF, mais vous devez installer libreoffice-writer à la place/en plus. La chose importante à noter est que libreoffice-core / common semble apporter une certaine base libreoffice fonctionnelle, d'où le nom; -), qui ne fait pas d'erreur si elle est exécutée pour convertir un fichier, mais semble juste attendre sur une certaine socket ou tel pour l'entrée ou quoi... Après que j'ai installé libreoffice-writer, qui a-core / commun comme une dépendance, convertir un fichier ODT en PDF a fonctionné comme un charme avec la même ligne de commande exacte comme utilisé avant.

semble un peu fou que l'application semble fonctionner d'une façon ou d'une autre, mais ne pourrait tout simplement pas à cause de paquets manquants, et ne dit rien à ce sujet.

4
répondu Thorsten Schöning 2017-01-26 14:02:54

mise à Jour

la version actuelle de libreoffice fonctionne: v5.2.6.2 (mac)

j'utilise la commande suivante

/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to pdf --outdir . the_file_to_convert

Vieux

il semble que la conversion ne fonctionne pas dans une version plus récente (>4.2.4.2) J'utilise libreoffice 4.2.4.2 Vous pouvez télécharger des versions plus anciennes à partir http://downloadarchive.documentfoundation.org/libreoffice/old/4.2.4.2/

  • linux (utilisant le paquet deb):

    libreoffice4.2 --headless --convert-to pdf  myfile.odt
    
  • windows:

    swriter.exe --headless --convert-to pdf myfile.odt
    
2
répondu lumos0815 2017-12-05 15:45:17

J'utilise LibreOffice 4.2.8.2 aussi (sur GNU/Linux) mais j'ai essayé de convertir un fichier DOC en un fichier HTML. J'ai installé libreoffice-headless, mais le terminal était suspendu aussi. J'ai essayé chaque balle de Kurt Pfeifle, mais ça ne marchait pas...

solution était simple: installer libreoffice-writer (peut-être libreoffice-filters est ok aussi, mais ça dépend libreoffice-writer plus les autres Gros composants de LibreOffice).

J'espère que cela aidera.

0
répondu Linkid 2017-05-23 12:20:50