Foros del Web » Programando para Internet » PHP »

Mostrar archivos DOC usando PHP

Estas en el tema de Mostrar archivos DOC usando PHP en el foro de PHP en Foros del Web. Hola. Desarrolle esta estupida, pero sencilla, aunque limitada forma de poder visualizar un documento de microsoft word utilizando PHP para procesarlo Ya que no encontre ...
  #1 (permalink)  
Antiguo 02/01/2006, 10:25
DAR
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo Mostrar archivos DOC usando PHP

Hola. Desarrolle esta estupida, pero sencilla, aunque limitada forma de poder visualizar un documento de microsoft word utilizando PHP para procesarlo

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 />
}

?>
Saludos. Darío
  #2 (permalink)  
Antiguo 02/01/2006, 12:15
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 20 años, 6 meses
Puntos: 11
No trataste de usar la clase COM (www.php.net/manual/es/ref.com.php)?
  #3 (permalink)  
Antiguo 02/01/2006, 12:24
DAR
Invitado
 
Mensajes: n/a
Puntos:
De acuerdo

"... Las funciones COM se encuentran disponibles únicamente para la versión Windows de PHP ..."

Mucha gente no tiene esa "suerte" :P
Ademas, ese servidor tendria que tener microsoft word instalado

"...Usted es responsable de la instalación del soporte para los varios objetos COM que piensa usar (tales como MS Word); nosotros no incluimos todos éstos con PHP, ni podemos hacerlo...."

Esta es una alternativa limitada pero sencilla, y no depende de Windows ni de MS Word
  #4 (permalink)  
Antiguo 29/06/2006, 14:23
 
Fecha de Ingreso: mayo-2004
Ubicación: Barcelona
Mensajes: 200
Antigüedad: 19 años, 11 meses
Puntos: 0
DAR

Te felicito, una sencilla pero ultilizima forma de visualizar documentos word,
yo por mi parte creo q la utilizare,

Molaria q se pudieran visualizar documentos excel jejeje

Creo q este tema se deberia intentar implementar, es muy util,

Gracias, Salud2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado

SíEste tema le ha gustado a 2 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 04:41.