Conversión por lotes de archivos DOCX a PDF con la interfaz de línea de comandos de LibreOffice

Si tienes una carpeta con archivos de Word, LibreOffice puede convertirlos con un solo comando. Desde la carpeta que contiene los archivos DOCX, crea una carpeta de salida vacía y ejecuta el comando libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx. Esto utiliza el filtro de exportación a PDF de Writer y deja los originales en su lugar.

Utilice una carpeta de salida nueva, confirme que LibreOffice esté instalado y revise los archivos PDF resultantes en lugar de considerar que la finalización exitosa del comando es prueba de que todas las páginas se ven bien. La línea de comandos es una herramienta práctica para procesamiento por lotes; no garantiza una paginación idéntica a la de Microsoft Word ni la reparación de documentos dañados.

Ejecutar una conversión por lotes sencilla

En Linux, abre una terminal en el directorio que contiene los archivos. Primero crea el directorio de salida:

mkdir -p pdf
libreoffice --headless --convert-to pdf:writer_pdf_Export --outdir pdf *.docx

--headlessSe ejecuta sin abrir la ventana de escritorio habitual. --convert-toSelecciona PDF como formato de destino; writer_pdf_Exportespecifica el filtro de exportación a PDF de Writer de LibreOffice; y --outdir pdfenvía los resultados a la pdfcarpeta. El intérprete de comandos se expande *.docxa los archivos coincidentes antes de que se inicie LibreOffice. LibreOffice documenta esta sintaxis de conversión y el nombre del filtro en su referencia de parámetros de línea de comandos y en la lista de filtros de conversión de archivos .

La terminal de Linux muestra un comando por lotes de LibreOffice que convierte archivos DOCX a PDF y lista los PDF resultantes.
Ejemplo de salida de terminal después de enviar un pequeño lote de archivos DOCX a LibreOffice con el filtro de exportación a PDF de Writer.

Elija el patrón de lote correcto

El comando comodín es más adecuado cuando todos los archivos DOCX se encuentran directamente en una carpeta de entrada. No busca en subcarpetas. En Linux, el patrón también distingue entre mayúsculas y minúsculas por defecto, por lo que *.docxpuede omitir archivos que terminan en .DOCX. Si el intérprete de comandos indica que el patrón no coincide, liste los archivos y compruebe sus extensiones antes de modificar el comando.

Para documentos anidados en subcarpetas, un bucle puede preservar la estructura de directorios y evitar colisiones cuando dos carpetas contienen un archivo con el mismo nombre. Configúrelo inputen el árbol de origen y pdfen un árbol de destino separado:

input="$PWD/input"
output="$PWD/pdf"
profile="file:///tmp/lo-batch-profile"

find "$input" -type f -iname '*.docx' -print0 |
while IFS= read -r -d '' file; do
  rel="${file#"$input"/}"
  dest="$output/$(dirname "$rel")"
  mkdir -p "$dest"
  libreoffice --headless \
    -env:UserInstallation="$profile" \
    --convert-to pdf:writer_pdf_Export \
    --outdir "$dest" "$file"
done

-print0y la coincidencia read -d ''maneja de forma segura los espacios y la mayoría de los caracteres inusuales en los nombres de archivo. El perfil separado evita que este trabajo por lotes compita con una sesión de LibreOffice de escritorio que utilice el mismo perfil de usuario; consulte los documentos de referencia de inicio de LibreOffice -env:UserInstallation. Use una ruta de perfil única si dos trabajos de conversión pueden ejecutarse al mismo tiempo. Mantenga el árbol de salida fuera del árbol de entrada para que la búsqueda no se desvíe hacia resultados anteriores.

La terminal de Linux muestra un bucle basado en búsqueda que envía documentos desde carpetas anidadas a carpetas de salida PDF coincidentes.
Ejemplo de un bucle de búsqueda recursivo que escribe archivos PDF en una subcarpeta llamada pdf, ubicada junto a cada carpeta de origen, lo que mantiene separados los archivos con el mismo nombre que se encuentran en carpetas diferentes.

Cuando LibreOffice ya está abierto

Un comando puede parecer que finaliza sin generar archivos o puede conectarse a un proceso de LibreOffice existente. Una instancia de escritorio en ejecución puede contener el perfil de usuario predeterminado. Cierre LibreOffice e inténtelo de nuevo; para trabajos desatendidos, la -env:UserInstallationopción aislada en el ejemplo recursivo es una medida de seguridad útil. Asigne a cada trabajo concurrente su propio directorio de perfil y espere a que un trabajo finalice antes de reutilizar ese directorio.

Si el comando indica libreoffice: command not found, instale LibreOffice a través de la fuente de paquetes compatible con su sistema operativo o utilice la ruta completa del ejecutable. En Windows PowerShell, se puede escribir un lote simple no recursivo de la siguiente manera:

$src = (Resolve-Path .).Path
$out = Join-Path $src 'pdf'
New-Item -ItemType Directory -Force -Path $out | Out-Null
$soffice = "$env:ProgramFiles\LibreOffice\program\soffice.exe"
Get-ChildItem -File -Filter *.docx | ForEach-Object {
  & $soffice --headless --convert-to pdf:writer_pdf_Export --outdir $out $_.FullName
}

Ajuste la configuración $sofficesi LibreOffice está instalado en otra ubicación. Ejecute el comando desde la carpeta de origen y utilice una nueva carpeta de salida. PowerShell Get-ChildItem -Filesolo busca en esa carpeta, a menos que se solicite recursión; los trabajos recursivos requieren un bucle que cree una carpeta de destino correspondiente para cada ruta de origen.

¿Qué puede afectar al resultado?

La conversión a PDF conserva el formato que LibreOffice puede interpretar, pero Word y LibreOffice no siempre paginan los documentos de la misma manera. La falta de fuentes, objetos incrustados no compatibles, cambios registrados, campos o tablas complejas pueden alterar los saltos de línea y el número de páginas. Para una tipografía uniforme, instale las fuentes que requieren los documentos antes de la conversión. Los archivos protegidos o cifrados con contraseña pueden requerir credenciales o manipulación manual para abrirse, y un archivo DOCX dañado puede fallar incluso si otros archivos se convierten correctamente.

No ejecute el proceso repetidamente en una carpeta que contenga archivos PDF importantes con nombres coincidentes. Utilice una ubicación de destino limpia o realice una copia de seguridad de los archivos existentes antes de abrirlos. Si un archivo es especialmente importante, ábralo en LibreOffice Writer e inspecciónelo antes de confiar en el PDF. Si la paginación exacta de Microsoft Word es un requisito contractual, LibreOffice podría no ser el renderizador adecuado; compare una muestra representativa en la aplicación que define el diseño requerido.

La terminal de Linux muestra LibreOffice ejecutándose sin interfaz gráfica con un perfil de instalación de usuario independiente antes de la exportación a PDF.
Ejemplo de comando que utiliza un perfil de usuario de LibreOffice independiente para una ejecución de conversión desatendida.

Verifica el resultado antes de compartirlo.

Primero, compara el número de archivos fuente con el número de archivos PDF. En Linux, estos comandos cuentan los archivos en una carpeta plana:

find . -maxdepth 1 -type f -iname '*.docx' | wc -l
find pdf -maxdepth 1 -type f -iname '*.pdf' | wc -l

Para la conversión recursiva, compare los recuentos en los árboles de entrada y salida completos. Un recuento coincidente es una buena referencia, pero no una garantía de calidad: un documento dañado o un duplicado sobrescrito aún podrían requerir revisión. Revise el registro de la terminal en busca de errores y confirme que cada nombre de archivo esperado aparece en el destino.

Inspeccione los PDF representativos en un visor de PDF. Verifique la primera y la última página, el número de páginas, los márgenes, las tablas, los encabezados y pies de página, las imágenes y cualquier salto de página relevante. Si pdfinfoestá instalado, pdfinfo pdf/Report.pdfproporciona metadatos como el número y el tamaño de página; no evalúa la fidelidad visual. Vuelva a convertir solo después de corregir un problema específico, como instalar una fuente faltante o cambiar el directorio de salida, y luego revise nuevamente los PDF afectados.

La terminal de Linux muestra la salida de pdfinfo con el número de páginas, el tamaño de página y el tamaño del archivo para un PDF convertido.
Ejemplo de vista de verificación que muestra los metadatos del PDF, como el número de páginas y el tamaño del papel.

El lote estará listo cuando existan todos los archivos PDF esperados, se abran sin errores y las páginas importantes conserven el diseño previsto. Para archivos extensos, conserve los archivos DOCX originales y los registros de conversión para poder rastrear cualquier fallo y volver a ejecutar el proceso sin reemplazar los archivos de salida no relacionados.

Dejar un comentario

Haz que los PDF de LibreOffice conserven las fuentes que usaste.

Haz que los PDF de LibreOffice conserven las fuentes que usaste.

Corrige las fuentes que falten o que hayan sido sustituidas en los archivos PDF de LibreOffice Writer, elige el perfil de exportación adecuado y verifica qué fuentes están incrustadas antes de compartirlas.

Conversión por lotes de archivos DOCX a PDF con la interfaz de línea de comandos de LibreOffice

Conversión por lotes de archivos DOCX a PDF con la interfaz de línea de comandos de LibreOffice

Convierta una carpeta de documentos de Word a PDF con los comandos de LibreOffice, gestione las carpetas anidadas de forma segura y verifique el resultado antes de compartirlo.

Haz que cada nuevo documento de escritor utilice tu plantilla.

Haz que cada nuevo documento de escritor utilice tu plantilla.

Establece una plantilla personalizada de LibreOffice Writer como predeterminada para que los nuevos documentos se abran con tus estilos y diseño de página preferidos.

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.