Ejecuta LibreOffice sin interfaz gráfica en Docker para la conversión de PDF.

Sí. Para conversiones de documentos puntuales, cree una pequeña imagen de Docker con LibreOffice instalado y ejecútela soffice --headless. --convert-toMonte el directorio de entrada en modo de solo lectura y un directorio de salida independiente con permisos de escritura para que el PDF aparezca en su equipo. Este ejemplo utiliza una imagen basada en Debian y convierte un archivo DOCX a PDF; no expone LibreOffice como un servicio de red.

Editor de terminal que muestra un Dockerfile basado en Debian con LibreOffice Writer y fuentes instaladas.
El Dockerfile instala LibreOffice Writer y un paquete de fuentes básico, y luego utiliza soffice como comando del contenedor.

¿Qué hace el modo sin interfaz gráfica y cuándo resulta útil Docker?

El modo sin interfaz gráfica inicia LibreOffice sin su interfaz gráfica. LibreOffice documenta este modo para su uso mediante línea de comandos y API, y sus opciones de línea de comandos admiten la conversión de archivos con un directorio de salida. Docker empaqueta la aplicación y sus dependencias para que un script o estación de trabajo pueda ejecutar la misma imagen de contenedor sin necesidad de instalar la suite de escritorio en el host.

Este patrón funciona bien para trabajos por lotes locales, tareas de integración continua o un proceso backend que recibe un archivo y guarda el resultado de la conversión. Un contenedor simple sin interfaz gráfica no es, por sí solo, una API de conversión HTTP: no escucha en ningún puerto ni acepta cargas web. Si necesita un servicio persistente, implemente una API y una cola de trabajos para el proceso de conversión y añada validación de solicitudes, tiempos de espera, límites de tamaño de archivo y aislamiento.

1. Crea las carpetas de entrada y salida.

En un host Linux o macOS que utilice Bash o un intérprete de comandos similar, cree una carpeta de proyecto con directorios separados. Coloque el documento fuente en inputy deje outputvacío para la primera ejecución:

mkdir -p lo-work/input lo-work/output
cp report.docx lo-work/input/
cd lo-work

Los comandos de Docker que se muestran a continuación utilizan rutas de estilo Unix y sintaxis de shell. En Windows, ajuste la sintaxis de la ruta del host para PowerShell o el símbolo del sistema y asegúrese de que Docker Desktop tenga permiso para compartir la unidad que contiene estas carpetas.

2. Crea una imagen con LibreOffice.

Crea un archivo llamado Dockerfileinside lo-workcon este contenido:

FROM debian:bookworm-slim

RUN apt-get update && apt-get install -y --no-install-recommends \
    libreoffice-writer fonts-liberation \
    && rm -rf /var/lib/apt/lists/*

ENTRYPOINT ["soffice"]

libreoffice-writerIncluye Writer y los filtros de conversión necesarios para los formatos de procesamiento de texto más comunes. Añádelo libreoffice-calcsi libreoffice-impressel contenedor necesita convertir hojas de cálculo o presentaciones. El paquete de fuentes es solo una base; instala las fuentes que tus documentos requieren y para las que tienes derechos de uso, ya que la falta de fuentes puede afectar el ajuste de línea y los saltos de página.

Construye la imagen desde el directorio que contiene el Dockerfile:

docker build -t lo-headless .

El ejemplo utiliza nombres de paquetes de Debian Bookworm. Las etiquetas de la imagen base y los paquetes del repositorio cambian con el tiempo; para una compilación de producción, elija una base mantenida, recompílela periódicamente para las actualizaciones de seguridad y fije la imagen base mediante un resumen si necesita compilaciones reproducibles. Evite instalar paquetes de un repositorio no relacionado solo para seguir un tutorial.

La terminal muestra `docker build -t lo-headless .` completando la compilación de la imagen del contenedor.
Cree la imagen local a partir del Dockerfile antes de ejecutar el contenedor de conversión.

3. Ejecuta LibreOffice con puntos de montaje separados.

Inicie un contenedor desechable y pase las opciones de conversión después del nombre de la imagen. El montaje de entrada es de solo lectura; solo el directorio de salida es escribible. La --useropción ejecuta el proceso con su usuario y grupo de host en Linux, mientras que HOME=/tmple da a LibreOffice un directorio de inicio escribible. Ajuste los permisos de la carpeta si el usuario de host no puede escribir en output.

docker run --rm \
  --user "$(id -u):$(id -g)" \
  --env HOME=/tmp \
  -v "$PWD/input:/input:ro" \
  -v "$PWD/output:/output" \
  lo-headless \
  --headless --nologo \
  -env:UserInstallation=file:///tmp/lo-profile \
  --convert-to pdf:writer_pdf_Export \
  --outdir /output \
  /input/report.docx

--headlessSuprime la interfaz gráfica de usuario, --convert-to pdf:writer_pdf_Exportselecciona el filtro de exportación a PDF y --outdirdirige el resultado a la carpeta de salida montada. La ruta de perfil de usuario única proporciona a este proceso un directorio de configuración de LibreOffice con permisos de escritura; si ejecuta varias conversiones simultáneamente en un contenedor de larga duración, utilice una ruta de perfil diferente para cada proceso.

Utilice --mounten su lugar -vsi prefiere la sintaxis de montaje más explícita de Docker. Los montajes de enlace están vinculados a rutas en el host del demonio de Docker, y los montajes de lectura y escritura permiten que los procesos del contenedor modifiquen archivos del host. Mantenga los montajes restringidos, evite montar su directorio personal o el socket de Docker, y no ejecute un proceso de conversión de documentos con privilegios innecesarios.

Comando de terminal que ejecuta el contenedor lo-headless con entrada de solo lectura, salida escribible, conversión sin interfaz gráfica y un perfil separado.
El comando run pasa el archivo fuente a soffice, limitando al mismo tiempo el acceso del host a las dos carpetas del proyecto.

4. Confirme que el PDF se creó

Compruebe el directorio de salida del host después de que Docker finalice:

ls -l output/
file output/report.pdf
test -s output/report.pdf

El PDF debe existir y no estar vacío. Ábralo con un lector de PDF y compruebe el número de páginas, las tablas, las imágenes, los saltos de página y las fuentes antes de utilizarlo. Que el proceso finalice correctamente no garantiza que todos los elementos se hayan renderizado según lo previsto, especialmente si el documento utiliza fuentes o funciones no disponibles en el contenedor. Utilice un directorio de salida limpio o un nombre de archivo de salida nuevo para cada ejecución, de modo que un PDF antiguo no se confunda con la última conversión.

El terminal lista el archivo report.pdf en el directorio de salida y lo identifica como un documento PDF.
Compruebe que el archivo de salida existe y se reconoce como un PDF; a continuación, revise las páginas para detectar cambios en el diseño.

¿Qué debo comprobar si la conversión falla?

  • No hay archivo de salida: confirme el nombre del archivo de origen y la ruta del contenedor, que inputse montó en /input, y que el outputdirectorio del host es escribible por el usuario seleccionado.
  • Errores de perfil o bloqueo: confirme que la -env:UserInstallationruta sea editable. Utilice un directorio de perfil independiente para cada proceso simultáneo de LibreOffice.
  • Diseño modificado: instale las fuentes necesarias en la imagen y revise el PDF. La visualización puede variar con respecto a un sistema de escritorio debido a la disponibilidad de fuentes, los filtros de exportación y las diferencias de versión.
  • Error de montaje de Docker: verifique que ambos directorios del host existan antes de usar -vo --mount, y verifique que el demonio pueda acceder a ellos.

Para conocer el comportamiento exacto de las opciones, consulte la referencia de parámetros de línea de comandos de LibreOffice . Los nombres de los paquetes se pueden consultar en la lista de paquetes de Debian Bookworm para LibreOffice Writer . La documentación oficial de Docker explica los montajes de enlace y las instrucciones del Dockerfile .

Dejar un comentario

Haz que LibreOffice reconozca tu entorno de ejecución de Java.

Haz que LibreOffice reconozca tu entorno de ejecución de Java.

Instale un entorno de ejecución de Java compatible, habilítelo en LibreOffice y solucione el problema de una lista JRE vacía sin modificar configuraciones no relacionadas.

Ejecuta LibreOffice sin interfaz gráfica en Docker para la conversión de PDF.

Ejecuta LibreOffice sin interfaz gráfica en Docker para la conversión de PDF.

Crea un pequeño contenedor de LibreOffice, convierte documentos de oficina sin interfaz gráfica de usuario y verifica la salida en formato PDF limitando el acceso a los archivos del host.

Reduce el tamaño de los archivos de LibreOffice Impress sin desenfocar las imágenes.

Reduce el tamaño de los archivos de LibreOffice Impress sin desenfocar las imágenes.

Reduce el tamaño de los archivos de presentación de LibreOffice comprimiendo las fotos incrustadas, eligiendo ajustes de imagen adecuados y comprobando la calidad de las diapositivas antes de compartirlas.

Evitar que las impresiones de tamaño personalizado se recorten en LibreOffice.

Evitar que las impresiones de tamaño personalizado se recorten en LibreOffice.

Antes de imprimir un documento de tamaño personalizado, ajuste las dimensiones de página de LibreOffice a las de su impresora, compruebe los márgenes imprimibles y corrija el escalado.

Acelere las macros de Calc leyendo y escribiendo datos en lotes.

Acelere las macros de Calc leyendo y escribiendo datos en lotes.

Sustituya el acceso repetido a celdas por lecturas y escrituras masivas de rangos, luego evalúe el resultado y proteja las fórmulas en libros de trabajo de Calc de gran tamaño.

Organiza un libro de LibreOffice con documentos maestros vinculados.

Organiza un libro de LibreOffice con documentos maestros vinculados.

Divide un manuscrito extenso en capítulos, organízalos en Writer y mantén la coherencia en los estilos, el contenido y las comprobaciones de exportación.

Conecte LibreOffice Base a PostgreSQL con el asistente integrado.

Conecte LibreOffice Base a PostgreSQL con el asistente integrado.

Utilice la opción de PostgreSQL directo de Base para introducir los datos de su servidor, iniciar sesión, guardar un archivo de conexión ODB y solucionar errores de acceso comunes.

Hacer que las fuentes personalizadas estén disponibles para LibreOffice Flatpak.

Hacer que las fuentes personalizadas estén disponibles para LibreOffice Flatpak.

Instala una fuente en la carpeta de fuentes de tu usuario de Linux, reinicia LibreOffice Flatpak y confirma que aparece en Writer sin debilitar el entorno aislado de la aplicación.

Evita los bloqueos al guardar de LibreOffice en Sonoma: Trabaja primero localmente.

Evita los bloqueos al guardar de LibreOffice en Sonoma: Trabaja primero localmente.

Proteja su trabajo y aísle los fallos al guardar en unidades de red en LibreOffice para macOS Sonoma con un flujo de trabajo que priorice lo local, comprobaciones de permisos y pruebas específicas.

Mantén intactos los ID de CSV en Calc importándolos como texto.

Mantén intactos los ID de CSV en Calc importándolos como texto.

Para conservar los ceros iniciales en Calc, configure las columnas de ID como texto durante la importación de CSV, revise la vista previa y verifique los datos guardados.