Convertir DOCX (MS Office 2007) a Texto
Estoy recibiendo con mucha frecuencia documentos en el formato docx de MS Office 2007, un formato que aún OpenOffice no acepta sin ayuda de extensiones.
Un día recibí un docx cuyo contenido tenía que publicarse urgentemente. Fue entonces que decidí hacer algo al respecto:
$ unzip carta-graduacion-d.docx
$ cd word/
$ cat document.xml | sed -e 's/<\/w\:p>/\n/g’ | sed -e ’s/<[^>]*>//g’ | iconv -f utf8 -t iso88591
La última línea del código sólo extrae el texto y trata de conservar la estructura de los párrafos. Una breve explicación de lo que hace el código:
- El unzip es porque los documentos docx son archivos zip (también los de OpenOffice)
- El primer sed cambia </w:p> por “\n”, caracteres que indican el final de un párrafo.
- El segundo sed remueve todos las etiquetas (”tags”) XML.
- El programita iconv cambia el encoding de utf8 a iso-8859-1 para que los acentos sean interpretados correctamente.
Si lo escribiéramos como un “script” bash para la consola de linux, nombrémoslo docx2txt.sh, luciría algo así:
#!/bin/sh
# docx2txt.sh
docx=$1
unzip $docx
cd word/
cat document.xml | sed -e 's/<\/w\:p>/\n/g’ | sed -e ’s/<[^>]*>//g’ | iconv -f utf8 -t iso88591
Se debe declarar como un archivo ejecutable de esta forma:
$ chmod +x docx2txt.sh
Luego se podría usar de esta forma:
$ ./docx2txt.sh carta-graduacion-d.docx > carta-graduacion-d.txt
El contenido textual de carta-graduacion-d.docx ahora estaría en el archivo carta-graduacion-d.txt. Sin imágenes, sin decoraciones, sin tablas, sin formatos especiales. Sólo texto simple y legible.
Por lo menos ya sé qué hacer con esos anejos docx.
Más artículos como este en:
Algunos artículos relacionados:



