Inicio
» Consejos PC
»
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
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 .
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:
-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.
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:
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.
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.
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.