Ya que no encontre un script capaz de hacerlo por mi, me puse a analizar un documento word en formato texto (como lo tomaria php como archivo) , y descubri una sencilla forma de extraer el texto plano (sin estilos, eso ya es mas complicado) de un *.doc para mostrarlo en html, (o con alguna modificacion sencilla, crear otro archivo, txt o cual fuera)
Un archivo word se compone en varias partes, declaraciones generales, declaraciones de estilo, encabezados, datos mas, datos menos, y en el medio, el texto plano(pero esa ubicacion del texto plano cambia). Un dato curioso es que, al texto plano, lo preceden muchos caracteres NULL (pegados, sin algo en el medio)
El script se encarga de abrir el archivo, buscar una cantidad grande de NULLs seguidos, desechar los que sobren, y empezar a tomar caracteres (de nuestro verdadero texto al fin); hasta que aparezca otro NULL (termina el texto)
Ya que, procesa caracter por caracter, puede ser lento y consumir cpu si hacemos la conversion al vuelo, pero si , abrimos otro archivo, y reemplazamos los "echo" por "fputs" , podemos crear una version espejo del Word.. en un archivo txt... y nos evitamos volver a convertirlo (si es que va a ser visto muchas veces)
Sin mas.. aca va el codigo, es muy tonto, si a alguien se le ocurre como mejorarlo, o alguna mejor manera de procesarlo, para poder visualizar estilos y demas.. bienvenido sea. Espero que de algo les sirva
Código PHP:
<?
//Microsoft WORD - PHP Viewer
$fp = fopen($ruta,"r"); //$ruta es nuestro archivo .doc
$char = fgetc($fp);
$charant = NULL; $cantNull = 0;
//Tomamos 120 Nulos seguidos , siendo un nulo en PHP: \0
while($cantNull<120)
{
$char = fgetc($fp);
if ($char=="\0" && $charant=="\0")
{
$cantNull += 1;
} else {
$cantNull = 0;
}
$charant = $char;
}
//Tomamos los nulos sobrantes hasta encontrar otro caracter
$text="\0";
while($text=="\0")
{
$text = fgetc($fp);
}
//Imprimimos hasta que encuentre otro Null
echo $text;
while($text!="\0")
{
$text = fgetc($fp);
echo nl2br($text); //nl2br convierte los saltos de linea en <br />
}
?>