17 noviembre, 2005

Herramientas para la consola (I)

Hoy en día lo que más utilizo es la consola (terminal, línea de comandos,... o como queráis llamarlo). Por eso se me hace imprescindible tener herramientas que me puedan resolver ciertos problemas en un momento dado.

En esta ocasión voy a explicar cómo utilizar una serie de herramientas para poder leer documentos en consola. Los documentos que vamos a poder leer son los que tengan formato Doc (.doc, formato cerrado propiedad de Microsoft) y formato Pdf (.pdf, formato abierto propiedad de Adobe). Hay muchas herramientas que convierten distintos tipos de archivos a texto plano (catdoc, pdftotext, ...). Pero la navegación por ellos se hace compleja (pierden la estructura) e incluso se pierden los enlaces que pueda contener el documento. Por estas razones nosotros vamos a convertir estos archivos a Html, formato con el que, en la mayoría de los casos, mantienen la estructura y los enlaces.

Para conseguir nuestro propósito necesitaremos las siguientes herramientas:

  • wvWare: Biblioteca para convertir documentos de Word. Nos facilita una serie de herramientas para convertir dicho formato en otros más accesibles: Html, Latex, Ps, Pdf, Dvi, Text, Abiword, Rtf, ... Sus librerías las utilizan entre otros AbiWord para abrir documentos de Word. Para instalarlo en Gnu/Debian:
    $ apt-get install wv
  • pdftohtml: Utilidad que convierte archivos Pdf en html. Para instalarlo en Gnu/Debian:
    $ apt-get install pdftohtml
  • w3m: Navegador web en modo texto. Este navegador tiene la particularidad de que sirve también como paginador, y tiene extensiones para mostrar las imágenes en framebuffer (para lo que tienes que configurar la consola para utilizar framebuffer). Para instalarlo en Gnu/Debian:
    $ apt-get install w3m
    Para poder ver imágenes en consola:
    $ apt-get install w3m-img
Como casi siempre en Linux tenemos varias alternativas para realizar cualquier tarea. Así, para poder visualizar los documentos serviría cualquier navegador en modo texto: lynx, links, ...

wvWare muestra el resultado de convertir el documento en formato Doc por la salida estándar. Los diferentes sabores de wv (wvPdf, wvHtml, ...) no lo hacen así, por lo que habría que pasarles el archivo donde queremos escribir el resultado. Lo único que le tenemos que decir a wvWare es la plantilla a utilizar para realizar la conversión, que se encuentran (en Gnu/Debian) en '/usr/share/wv/', y no son más que archivos xml. Para nuestros propósitos utilizaremos la plantilla que convierte a Html: '/usr/share/wv/wvHtml.xml' (leyendo el man nos damos cuenta de que es la plantilla por defecto). Para conseguir el resultado de la conversión por la salida estándar el comando sería el siguiente:
$ wvWare -x /usr/share/wv/wvHtml.xml nombreArchivo.doc

pdftohtml, si no se le dice lo contrario guarda el resultado en un fichero, pero con la opción '-stdout' le diremos que lo muestre por la salida estándar. Además le pasaremos la opción '-p' para que cambie los enlaces Pdf a enlaces Html. Así, el comando a utilizar sería el siguiente:
$ pdftohtml -p -stdout nombreArchivo.pdf

Ahora que tenemos en la salida estándar un archivo Html lo único que hay que hacer es redirigir esa salida a la entrada estándar de nuestro navegador preferido. En el caso de ser w3m habría que decirle que la entrada que le va a llegar es un Html. Para ello le pasamos el parámetro '-T' diciéndole el tipo del que se trata: 'text/html':
w3m -T text/html
En el caso de ser links, el comando quedaría:
links -force-html

Juntando todo lo que hemos dicho quedarían unas líneas como las siguientes:

  • Para documentos Doc:
    $ wvWare -x /usr/share/wv/wvHtml.xml nombreArchivo.doc | w3m -T text/html
  • Para documentos Pdf:
    $ pdftohtml -p -stdout nombreArchivo.pdf | w3m -T text/html

Si queremos automatizar los procesos simplemente deberíamos crearnos unos scripts. Nada más fácil:

  • viewDoc.sh:
    #!/bin/bash
    wvWare -x /usr/share/wv/wvHtml.xml $1 2>/dev/null | w3m -T text/html
  • viewPdf.sh:
    #!/bin/bash
    pdftohtml -p -stdout $1 2>/dev/null | w3m -T text/html

TODO Hacer un único script que muestre un archivo a partir de su extensión.

Espero que este post os sirva de ayuda. En posteriores envíos explicaré otras herramientas de consola. Para la mentes inquietas es todo un reto realizar las tareas más cotidianas en consola y produce fuertes dosis de satisfacción. Además esto sirve para que se le pueda dar un uso, aunque sea didáctico, a nuestros viejos equipos que no pueden con las X.

Un saludo a todos

P.D. Las herramientas wvWare y w3m las descubrí un día navegando por las páginas de LinuxDevCenter de O'Reilly, exactamente en las páginas de ejemplo de uno de sus libros. Curiosamente es lo mismo que yo hacía con los Pdf (formato que utilizo más a menudo) pero que no encontraba cómo hacerlo con los Doc.

3 comentarios:

Anónimo dijo...

Justamente hoy en prácticas de airc quería comprobar si el dns tiraba en una máquina y digo pues a lo fácil arranco lynx con una url conocida digamos www.google.es y a ver si tira.
Mi compañero se ha quedado pillao y es que aunque hay muchos estudiando informática pocos parecen informáticos y es que me ha contestado que "que era lynx" yo le he dicho que era un navegador en modo texto y me dice "¿pero eso todavía se utiliza?" y yo pues si y además es muy útil porque a parte de lo que ya has comentado tu yo le he dado otro ejemplo.

Si estamos administrando un servidor lo normal es no tener X y si por casualidad nos dan un archivo de documentación que esté en html con lynx lo ves en un momentito, otro caso práctico de donde un navegador en modo texto nos salva el pellejo.

Cheli

http://cheli.immoprestigi.com

Vradick dijo...

Justamente así empecé a utilizar las herramientas de consola. Actualmente administro unos cuantos servidores linux en la empresa donde trabajo. Y muchas veces estás en la sala de ordenadores, haciendo tareas de mantenimiento o probando cosas nuevas y necesitas leer manuales. Me resulta más cómodo que pasarme a una máquina con entorno gráfico (tenemos también un par, lamentablemente en windows, Argh!), utilizar links para buscar por internet, wget para bajarme lo necesario y los scripts anteriores para leer la documentación. Una vez te acostumbras se te antoja imprescindible (como trabajar con varios terminales).

Anónimo dijo...

Muy bueno e interesante articulo, yo también soy asiduo a la consola. Encontré un programa que también pasa a pdf y a otros formatos los documentos de Word. Siempre por consola ;D, a lo mejor os interesa. Yo lo uso mucho.

http://www.busindre.com/antiword-leer-y-tranformar-documentos-de-word-por-consola/

Gracias por el articulo y felicidades por tu blog, es muy bueno!