Conversión masiva de documentos a LibreOffice

Uno de los «problemas» con los que nos estamos encontrando es la existencia simultánea de archivos procedentes de versiones de las suites ofimáticas de Microsof y de archivos con los nuevos formatos de LibreOffice.

Aunque se ha recomendado el uso de estos últimos para los nuevos documentos hay quien sigue utilizando como base/plantilla algún fichero con extensiones DOC, DOCX, XLS, XLSX, PPT o PPTX, con lo que al guardar el nuevo trabajo mantiene el formato y extensión del original.

Aunque esto no debería ser un problema como tal, en la práctica está llevando a equívocos por la creación de duplicados (archivos con el mismo nombre y distintas extensiones: DOCX y ODT, p.ej.). En algunos casos (pocos) se ha producido pérdida de información durante el proceso de importación/exportación entre formatos.

mswtolow

Teniendo en cuenta que durante los últimos años se han generado más de 120.000 documentos en estos formatos, de los cuales más de 30.000 de uso reciente, entenderéis que la situación parece delicada.

Evidentemente no vamos a ponernos a modificar «a mano» cada uno de los documentos según los vayamos trabajando con ellos (primera opción descartada). En su lugar se va a proponer lo siguiente:

1) Haremos copia de todos estos ficheros, para su consulta en modo sólo-lectura en caso de necesidad, a una nueva ubicación preparada para ello.

2) Se procederá a buscar y convertir automáticamente todos los ficheros tomando como parámetros la fecha del último acceso y su formato. De esta manera para convertir todos los ficheros Microsoft DOC a LibreOffice ODT combinaríamos las órdenes de consola findsoffice:

find . -name \*.[Dd][Oo][Cc] -a -atime -365 -exec soffice --headless --convert-to odt {} \;

Explicación de la búsqueda:

  • find : comando de búsqueda de ficheros y directorios
  • . : Un punto significa «explorar» desde el directorio actual
  • -name \*.[Dd][Oo][Cc] : localiza todos los ficheros que terminen en DOC, doc, o cualquier combinación de mayúsculas y minúsculas
  • -a : equivale al operador lógico Y (and), y permite combinar varios criterios de búsqueda
  • -atime -365 : localiza los archivos que fuesen accedidos en los últimos 365 días.
  • -exec …. {} \; : ejecuta un comando concreto para cada documento localizado. Las llaves {} representan el nombre del documento. El parámetro -exec siempre termina en \;

Orden para la conversión

  • soffice : comando para la ejecución desde consola de LibreOffice.
  • –headless : indica a LibreOffice que no debe iniciar de manera gráfica, que trabaje de manera «invisible».
  • –conver-to odt : indica el formato al que convertir. En este caso al formato nativo del procesador de textos LibreOffice Write: ODT.
  • {} : tal como se explicó más arriba, representa el nombre del fichero a convertir que proporcionará la orden de búsqueda.

Combinaciones principales

Cada tipo de documento necesita ser identificado por su extensión (etiqueta) y será convertido a un nuevo formato  apropiado:

Formato Original Extensión a buscar Formato de salida
MS Word
97 a 2003
[Dd][Oo][Cc] odt
MS-Word
2007
 [Dd][Oo][Cc][Xx]
 MS Excel
97 a 2013
[Xx][Ll][Ss] ods
MS Excel
2007
[Xx][Ll][Ss][Xx]
MS PowerPoint
97 a 2003
[Pp][Pp][Tt] odp
 MS PowerPoint
2007
[Pp][Pp][Tt][Xx]

 Notas

  • La ejecución de la orden «soffice» sólo funciona si no está arrancado ningún programa de libreOffice.
  • También puede utilizarse para leer cualquier archivo de texto, hoja de cálculo, presentaciones  o plantillas que sea capaz de importar LibreOffice,  para realizar la conversión contraria o para convertirlos en PDF.
  • El proceso no modifica ni borra los ficheros originales (pero si sobrescribe el fichero de salida en caso de que exista!)
  • Desgraciadamente no conozco un método sencillo y automático para convertir las bases de datos de MS Access.