Marco Fioretti ofrece una solución para encontrar y convertir viejos archivos de StarOffice en formatos a los que Apache OpenOffice y LibreOffice 4.x pueden acceder.

    Las versiones 4.x de Apache OpenOffice (AOO) y LibreOffice (LO) ya no pueden leer ni escribir los textos.sdw, las hojas de cálculo.sdc y las presentaciones.sdd creadas con su antepasado directo, StarOffice. Incluso las versiones más recientes de la serie 3.x pueden necesitar un filtro opcional para hacerlo. La gente ya ha empezado a preguntarse, «¿Cómo puedo recuperar mis archivos.sd*?»

    Ahora mismo, la respuesta fácil que obtienen es: «Instalar el filtro, o una versión anterior completa, y luego convertir todos esos archivos con el Asistente del Convertidor». Esta, sin embargo, a menudo puede ser una respuesta incompleta.

    La instalación de paquetes binarios de una versión extra y más antigua puede confundir a los usuarios, y será más difícil hacerlo en cada actualización del sistema. ¿Instalación desde fuentes? Incluso peor. Además, ¿cómo se encuentran los archivos a convertir? ¿Y si tu jefe te dice: «Recupera todos nuestros documentos vitales de StarOffice de esta pila de DVDs de copia de seguridad, ahora mismo, incluso aquellos con extensiones equivocadas?

    He aquí una respuesta, que utilicé esta misma semana en una situación similar. Incluso puede ser más a prueba de futuro, en y después de 2014, que el consejo, «Abre todos los archivos que puedas encontrar con un AOO/LO más antiguo. Si puedes instalarlo, por supuesto».

    Primero, busqué una versión más antigua de AOO/LO que fuera capaz de ejecutar una llave USB, porque este software está compilado para depender lo menos posible de las bibliotecas del sistema. El primero que encontré fue Libre Office Portable 3.3.4 para Windows. Sólo uso Linux, pero ese paquete funciona adecuadamente (más sobre esto más adelante) dentro de Wine sin ninguna configuración. Como tenía poco tiempo, me conformé con ello.

    Búsqueda y preparación de los expedientes

    He creado dos carpetas vacías llamadas starofficeconversion y starofficeconversion_resultado. La primera contendría copias de todos y sólo de los archivos a convertir, ordenados en las mismas carpetas y subcarpetas que en el archivo original. Trabajando de esta manera, no dañaría los archivos originales en caso de que algo saliera mal. La segunda carpeta almacenaría sólo las versiones convertidas.

    Si estuviera absolutamente seguro de que todos los archivos tenían una extensión.sdw,.sdc o.sdd, este comando (en la carpeta superior del archivo) habría sido suficiente:

    #> encontrar

    -tipo f | egrep ‘(sdw|sdc|sdd)$’ > list_1

    El comando guardaría sus nombres y rutas relativas en un archivo de texto llamado list_1. Sin embargo, no podía excluir que también hubiera archivos con nombres erróneos. Afortunadamente, el comando «file» de Linux analiza un archivo y produce una descripción de su tipo. Usando el comando file en algunos de los archivos sdw/sdc/sdd encontrados en el primer paso, me di cuenta de que lo único común en sus descripciones era la cadena «Composite Document File V2 Document». Por lo tanto, guardé las descripciones de todos los archivos en o debajo del directorio superior:

    #> encontrar

    -tipo f -exec fichero {} \; > /tmp/filetypes.log

    Los puse en un archivo llamado /tmp/filetypes.log, que tenía este formato:

    ./2001/catalog_sample.txt: Texto ASCII ./2001/contract.sdw: Archivo de documento compuesto V2 Documento, Little Endian…

    También guardé los nombres de archivo que quería – es decir, las partes antes de los dos puntos de las líneas que contenían la cadena anterior – en una lista separada:

    #> grep ‘Composite Document File V2 Document’ /tmp/filetypes.log | cut -d: -f1 > list_2

    Finalmente, fusioné las dos listas, eliminando los duplicados:

    #> cat list_1 list_2 | sort | uniq > final_list

    Esto me permitió poner todos esos archivos en un archivo tar y extraer el contenido dentro de la carpeta starofficeconversion:

    #> tar cf starofficefiles.tar -T final_list #> cd starofficeconversion #> tar xf ../starofficefiles.tar

    Convertir los archivos

    Teniendo todos mis archivos en un solo lugar, encendí mi copia antigua de LibreOffice in Wine y le dije a su Asistente de Conversión () que guardara – dentro de starofficeconversion_result – las versiones OpenDocument de todos los archivos de StarOffice que encontraría en starofficeconversion.

    El Asistente del Convertidor.

    Tuve que desmarcar la casilla de plantillas de texto y deshabilitar el registro, de lo contrario el Asistente no continuaría – pero aparte de eso, la conversión funcionó bien. Como puede ver en la , «Gemelli alla Rucola e Prosciutto Crudo», junto con muchas otras recetas familiares que no están disponibles en ningún otro lugar, están ahora a salvo del olvido.

    El proceso de conversión ha finalizado.

    Consejos finales…. y solicitudes

    Para que conste, tuve que deshabilitar el archivo de registro – de lo contrario, las macros del Convertidor en LibreOffice fallarían con este error:

    Error básico de tiempo de ejecución. Se produjo una excepción. Escribe:com.sun.star.uno.RuntimeException Message: Se ha producido una excepción C++ inesperada.

    Aquí, en cambio, hay un par de cosas que usted debe saber antes de probar esto en casa. En primer lugar, la cadena «Composite Document File V2 Document» también está presente en la descripción de muchos archivos que no son de StarOffice, y casi siempre son reconocibles por sus diferentes extensiones. Por ejemplo, mi primera lista_2 tenía entradas como «test.beh» y «trial.draw». Si no desea duplicar y procesar esos archivos también, elimine sus nombres de la lista_2 con el siguiente comando:

    egrep -v -i ` ` \.(beh|draw)$` list_2 > list2_tmp

    El AOO/LO Converter recrea todas las partes necesarias del árbol de directorios original en la carpeta de destino. En mi caso, starofficeconversion/Documents/recipes/gemelli_rucola.sdw generó starofficeconversion_result/marco/Documents/recipes/gemelli_rucola.odt. Esto es muy bueno, pero dondequiera que terminen, todas las copias convertidas pertenecen al usuario que lanzó el convertidor. Si eso es un problema para ti, pídeme un post extra sobre cómo arreglarlo.

    Cerraré esta entrada con un par de peticiones. Por favor ofrezca su ayuda y/o sugerencias en el hilo de discusión que aparece a continuación.

    • Un convertidor autónomo y amigable con la línea de comandos, hecho eliminando todo el código innecesario de las versiones anteriores de AOO/LO, sería fantástico. ¿Hay algún promotor interesado?
    • StarOffice fue fácil, pero todavía necesito una solución similar para los archivos de FrameMaker. Gracias de antemano a quien me ayude a encontrarlo.