Saltar al contenido

El comando `libreoffice –headless –convert-to pdf test.docx –outdir / pdf` no funciona

Ya no necesitas buscar más en otros sitios porque estás al sitio justo, tenemos la solución que buscas y sin problemas.

Solución:

  1. En primer lugar, lo probaría dando rutas absolutas al comando.

  2. Sospecho que el libreoffice binario no funciona, tienes que localizar el soffice binario y ver si funciona.

  3. Entonces tu --convert-to pdf No es suficiente. Necesita ser:

    --convert-to pdf:writer_pdf_Export
    

    ¡Asegúrese de seguir exactamente estas mayúsculas!

  4. A continuación, el comando no funcionará si ya hay una instancia de GUI de LibreOffice en funcionamiento en su sistema. Es causado por un error conocido desde 2011. Agregue este parámetro adicional a su comando:

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

    Esto creará un entorno nuevo e independiente que puede ser utilizado por una segunda instancia de LO sin cabeza sin interferir con una primera instancia de LO de GUI que posiblemente se esté ejecutando iniciada por el mismo usuario.

  5. Además, asegúrese de que el --outdir /pdf que especifique que existe y que tiene permiso de escritura. O, mejor dicho, utilice un directorio de salida diferente. Incluso si es solo para la primera prueba y esta ronda de depuración:

    $ mkdir $HOME/lo_pdfs
    
  6. Por eso:

    /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
    

    Esto me funciona en Mac OS X Mavericks 10.9.5 con LibreOffice v4.4.3.2 (usando mi ruta específica para el binario soffice que será diferente para ti de todos modos …).

    Si todo esto no funciona:

  7. Puede ser un problema con el archivo DOCX específico con el que intentas usar el comando … Así que primero crea tu propio documento DOCX muy simple. Utilice LibreOffice para esto. Escribe “¡Hola mundo!” en una página que de otro modo estaría vacía. Guárdelo como DOCX.

  8. Intentar otra vez. ¿Funciona con el DOCX simple?

  9. Si nuevamente no funciona, repita el paso 7, pero esta vez guárdelo como ODT.

  10. Repita el paso 8, pero asegúrese de hacer referencia al ODT esta vez.

  11. Último: use la ruta completa para soffice, para soffice.bin y para libreoffice y ejecutar cada uno con el -h parámetro:

    $ /path/to/libreoffice -h
    $ /path/to/soffice -h
    $ /path/to/soffice.bin -h
    
    • ¿Incluso obtienes una salida aquí?
    • ¿Para cuál de los tres binarios / enlaces simbólicos?
    • Registre las salidas.
    • Cuéntanos tus salidas !!!

    Compárelos con la línea de comando que utilizó:

    ¿Hay cambios en los nombres de los parámetros, las mayúsculas, el número de guiones utilizados, etc.?

    A modo de comparación, mi propia salida está aquí:

    $ /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 
            Specify X-Display to use in Unix/X11 versions.
      -p 
            print the specified documents on the default printer.
      --pt  
            print the specified documents on the specified printer.
      --view 
            open the specified documents in viewer-(readonly-)mode.
      --show 
            open the specified presentation and start it immediately
      --accept=
            Specify an UNO connect-string to create an UNO acceptor through which
            other programs can connect to access the API
      --unaccept=
            Close an acceptor that was created with --accept=
            Use --unnaccept=all to close all open acceptors
      --infilter=[: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:[=]
            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. Agregue un argumento más a su línea de comando para hacer cumplir la aplicación de un filtro de entrada cuando soffice abre su archivo DOCX:

    --infilter="Microsoft Word 2007/2010/2013 XML"
    

    o

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

Actualizar

LibreOffice no solo puede convertir DOCX a PDF en la línea de comando:

  • Puede procesar alguna formato de entrada que puede abrir y “leer”: DOC, XLS, XLSX, PPT, PPTX, …
  • Puede convertir a alguna formato de salida que puede “escribir”: DOC, XLS, XLSX, PPT, PPTX, …

Por supuesto, los resultados nunca serán perfectos y, a veces, incluso serán inaceptables para usted.

Re. salida como PDF:

Para controlar qué componente de LibreOffice genera salida PDF, puede utilizar estas 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. entrada que es no DOCX:

Para hacer cumplir los infiltrados para formatos de entrada que no son DOCX, puede usar (la lista no está completa):

--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. salida que es no PDF:

Para convertir a formatos de salida específicos, puede usar (lista no completa):

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

Actualizar

La versión actual de libreoffice está funcionando: v5.2.6.2 (mac)

Estoy usando el siguiente comando

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

VIEJO

Parece que la conversión no funciona en la versión más reciente (> 4.2.4.2) Estoy usando libreoffice 4.2.4.2 Puede descargar versiones anteriores desde http://downloadarchive.documentfoundation.org/libreoffice/old/4.2.4.2/

  • linux (usando el paquete deb):

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

    swriter.exe --headless --convert-to pdf myfile.odt
    

Puede sonar estúpido, pero sufrí solo de esto: en Ubuntu 14.04 no es suficiente instalar solo el paquete libreoffice-core o -common para convertir a PDF, sino que necesita instalar libreoffice-writer en su lugar / adicionalmente. Lo importante a tener en cuenta es que libreoffice-core | common parece traer alguna base funcional de libreoffice, de ahí el nombre ;-), que no genera errores si se ejecuta para convertir algún archivo, sino que parece esperar en algún socket o algo así para la entrada o lo que sea … Después de instalar libreoffice-writer, que tiene -core | common como dependencia, la conversión de algún archivo ODT a PDF funcionó a la perfección con exactamente la misma línea de comando que se usó antes.

Parece un poco loco que la aplicación parezca que funciona de alguna manera, pero simplemente no podría nunca debido a la falta de paquetes y no dice nada al respecto.

Finalizando este artículo puedes encontrar las críticas de otros administradores, tú además eres capaz mostrar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 4)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *