Respuestas:
Simplemente abra el documento con libre office y elija Exportar como PDF ... :
Para una solución de línea de comando hay unoconv que convierte archivos de la línea de comando:
unoconv -f pdf mydocument.odt
Nota: Solo a partir de Ubuntu 11.10 unoconv depende de Libre Office. Las versiones anteriores de unoconv (de Ubuntu <= 11.04) dependen de Open Office (pero también se ejecutará con Libre Office).
unoconv
, ¡es genial!
unoconv: Cannot find a suitable office installation on your system.
, por lo tanto, es inutilizable :(
También puede usar la línea de comandos de libreoffice
para su propósito. Eso te da la ventaja de la conversión por lotes. Pero los archivos individuales también son posibles. Este ejemplo convierte todos los archivos ODT en el directorio actual a PDF:
libreoffice --headless --convert-to pdf *.odt
Obtenga más información sobre las opciones de línea de comandos con:
man libreoffice
--env:UserInstallation=file:///path/to/some/directory
.
unoconv
. Por ejemplo, usé la línea con unoconv -f pdf *.ppt
éxito.
Aquí hay algunos detalles más sobre el método "no GUI".
Puede usar este método no solo para convertir archivos ODT a PDF. También funcionará para archivos MS Word DOCX (funcionará tan bien como LibreOffice puede manejar el ODT particular) y, en general, todos los tipos de archivos que LibreOffice puede abrir.
No creo que haya un binario nombrado libreoffice
como una de las otras respuestas sugeridas. Sin embargo, existe soffice(.bin)
el binario que se puede usar para iniciar LibreOffice desde la línea de comandos. Por lo general, se encuentra en /usr/lib/libreoffice/program/
; y muy a menudo, un enlace simbólico /usr/bin/soffice
apunta a esa ubicación.
Entonces, en la mayoría de los casos, los parámetros --headless --convert-to pdf
no son suficientes. Necesita ser:
--headless --convert-to pdf:writer_pdf_Export
¡Asegúrese de seguir exactamente esta capitalización!
A continuación, el comando no funcionará si ya hay una instancia de LibreOffice GUI en funcionamiento en su sistema. Es causado por el error # 37531, conocido desde 2011 . Agregue este parámetro adicional a su comando:
"-env:UserInstallation=file:///tmp/LibreOffice_Conversion_${USER}"
Esto creará un nuevo entorno separado que puede ser utilizado por una segunda instancia de LO sin cabeza sin interferir con una posible primera instancia de LO de GUI iniciada por el mismo usuario.
Además, asegúrese de que el --outdir /pdf
que especifique existe y de que tiene permiso de escritura. O, más bien, use un directorio de salida diferente. Incluso si es solo para una primera ronda de prueba y depuración:
$ mkdir ${HOME}/lo_pdfs
Por lo tanto:
/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 funciona para mí en Mac OS X Yosemite 10.10.5 con LibreOffice v5.1.2.2 (usando mi ruta específica para el binario soffice
que de todos modos será diferente en Ubuntu ...). También funciona en Debian Jessie 8.0 (usando la ruta /usr/lib/libreoffice/program/soffice
). Lo siento, no puedo probarlo en Ubuntu ahora ...
Si todo esto no funciona, cuando intente procesar DOCX:
Puede ser un problema con el archivo DOCX específico con el que prueba el comando ... Así que primero cree un documento DOCX muy simple. Use LibreOffice para esto. Escribe "¡Hola mundo!" en una página vacía Guárdelo como DOCX.
Inténtalo de nuevo. ¿Funciona con el simple DOCX?
Si nuevamente no funciona, repita el paso 7, pero guárdelo como ODT esta vez.
Repita el paso 8, pero asegúrese de hacer referencia a la ODT esta vez.
Última: Uso ruta completa soffice
, que soffice.bin
ya libreoffice
y ejecutar cada uno con el -h
parámetro:
$ /path/to/libreoffice -h # if that path exists, which I doubt!
$ /path/to/soffice -h
$ /path/to/soffice.bin -h
Compárelos con la línea de comando que utilizó:
A modo de comparación, mi propia salida (Mac OS X) está aquí:
$ /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.
Agregue un argumento más a su línea de comando para aplicar la aplicación de un filtro de entrada cuando soffice
abra 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"
Nautilus Script
Este script utiliza libreoffice para convertir archivos compatibles con LibreOffice a 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
Para ver las instrucciones de instalación, consulte aquí: ¿Cómo puedo instalar un script de Nautilus?
Nota: Decidí eliminar mi respuesta de esta pregunta y publicar una versión modificada aquí cuando me di cuenta de que unoconv
no trata bien los psw
archivos y no los convierte con éxito a otros formatos. También puede haber problemas docx
y xlsx
formatos.
Sin embargo, es Libreoffice
totalmente compatible con muchos tipos de archivos; La documentación completa está disponible en el sitio oficial, que detalla los formatos de entrada y salida válidos.
Puede usar la libreoffice
utilidad de conversión de línea de comandos o unoconv , que está disponible en los repositorios. Me parece unoconv
muy útil, y probablemente sea lo que quieres. Aunque Takkat ha mencionado brevemente unoconv
, pensé que sería útil dar más detalles y una conversión por lotes de una sola línea.
Usando el terminal, podría cd
acceder al directorio que contiene sus archivos y luego convertirlos por lotes a todos ejecutando una línea como esta:
for f in *.odt; do unoconv -f pdf "${f/%pdf/odt}"; done
(Esta frase es una modificación de mi script de traducción que aparece en esta respuesta ).
Si luego desea utilizar cualquier otro formato de archivo, simplemente sustituya el odt
y pdf
cualquier otro formato de entrada y salida compatible. Puede encontrar los formatos compatibles para un tipo de archivo ingresando unoconv -f odt --show
. Para convertir un solo archivo use, por ejemplo unoconv -f pdf myfile.odt
,.
Puede encontrar más información y opciones para el programa ingresando en la terminal man unoconv
o visitando las páginas de manual de Ubuntu en línea .
Este muy simple y liviano Nautilus Script utiliza unoconv
para convertir archivos seleccionados compatibles con LibreOffice a formato 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
Estoy agregando una nueva respuesta, porque en los últimos tiempos Pandoc abrió una serie de nuevas rutas de conversión obteniendo la capacidad de leer archivos ODT.
Cuando Pandoc lee en un formato de archivo, lo convierte a un formato interno, "nativo" (que es una forma de JSON).
Desde su forma nativa, puede exportar el documento a una amplia gama de otros formatos. No solo PDF, sino también DocBook, HTML, EPUB, DOCX, ASCIIdoc, DokuWiki, MediaWiki y lo que no ...
Como aquí el formato de salida deseado es PDF, tenemos otra opción de diferentes rutas, proporcionadas por lo que Pandoc llama un motor pdf . Aquí está la lista de motores PDF actualmente disponibles (válido para Pandoc v2.7.2 y versiones posteriores; las versiones anteriores pueden admitir solo una lista más pequeña):
pdflatex: Esto requiere que se instale LaTeX además de Pandoc.
xelatex: Esto requiere que se instale XeLaTeX además de Pandoc (también disponible como un paquete adicional para las distribuciones generales de TeX ).
contexto: Esto requiere que se instale ConTeXt además de Pandoc; ConTeXt está disponible como un paquete adicional para la mayoría de las distribuciones generales de TeX ).
lualatex: esto requiere que se instale LuaTeX además de Pandoc (también disponible como un paquete adicional para las distribuciones generales de TeX ).
pdfroff: esto requiere que se instale GNU Roff además de Pandoc.
wkhtml2pdf: Esto requiere la instalación de wkhtmltopdf además de Pandoc.
prince: Esto requiere que se instale PrinceXML además de Pandoc.
weasyprint: requiere la instalación de weasyprint además de Pandoc.
Hay algunos motores PDF más y más nuevos ahora integrados en Pandoc, que todavía no he utilizado y que actualmente no puedo describir con más detalle: tectonic y latexmk .
ADVERTENCIA: ¡No espere que la apariencia de su documento original sea idéntica en todas las salidas PDF a la vista previa de impresión o exportación PDF del ODT! Pandoc, cuando la conversión no conserva los diseños , conserva el contenido y la estructura de los documentos: los párrafos siguen siendo párrafos, las palabras resaltadas siguen enfatizadas, los encabezados siguen siendo encabezados, etc. Pero el aspecto general puede cambiar considerablemente.
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
Contexto:
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
Los comandos anteriores son los más básicos para la conversión. Dependiendo del motor de PDF que elija, puede haber muchas otras opciones posibles para controlar la apariencia del archivo PDF de salida. Por ejemplo, los siguientes parámetros adicionales se pueden agregar a todas esas rutas de enrutamiento a través de LaTeX:
-V geometry:"paperwidth=23.3cm, paperheight=1000pt, margin=11.2mm, top=2cm"
que utilizará un tamaño de página personalizado (un poco más grande que DIN A4) con márgenes de 2 cm en el borde superior y 1,12 cm en los otros tres bordes).