McAnam » Foros » Foro PHP
leer doc y docx



  oliver rodas        29/12/2011 02:34:02
buenas noches... quisiera saver como puedo leer archivos de word doc y docx.... en php... que se muestre en la misma pagina....se puede hacer sin librerias'??? o siempre se tiene que hacer con alguna libreria...... les agradeceria bastante su ayuda .. =D



  McAnam        05/01/2012 14:31:42
Buenas,

Pues en teoría si, otra cosa es que dependiendo lo complejo que sea lo que quieres hacer, te puede costar realmente un "mundo".

Si sólo quisieras abrir y leer el fichero en cuestión sin interpretar ni modificar ningún dato, sólo tendrías que usar el fopen / fread:

$gestor = fopen("ruta_fichero", "rb");
$datos = fread($gestor, filesize($nombre_fichero));



Sin embargo si quisieras tratar el texto o sacar alguna información, la cosa ya se complica. Ten en cuenta que los documentos Word, no son en texto plano, son en binario y tienen una estructura de datos propia.

La estructura de un fichero doc (que no docx), viene siendo aproximadamente algo como:

1 - Cabeceras
2 - Datos
3 - Formato de los datos

En este caso, tienes suerte, si sólo quieres los datos, ya que vienen (por lo general) todos juntos, precedidos (por lo general) de un gran número de NULL (\0). Por lo que buscar estos datos podría ser sencillo en la mayoría de los casos. Otra forma podría ser, buscar cadenas, es decir si sabes que va a venir algo como:

Importe: 125

Podrías buscar la posición de literal "Importe:" y coger lo que viene a continuación, o hacerlo con expresiones regulares.

Si te interesa el tema del formato del fichero binario doc, puedes ver la documentación oficial en inglés de MS:

http://download.microsoft.com/download/2/4/8/24862317-78F0-4C4B-B355-C7B2C1D997DB/[MS-OFFDI].pdf

En este link tienes más documentación sobre otros formatos de documento Microsoft (por si te han quedado ganas):

http://msdn.microsoft.com/en-us/library/cc313105(v=office.12).aspx

Como ves la cosa es complicada, además de que el formato docx es totalmente diferente, por lo que habría que buscar documentación sobre él o bien analizarlo byte a byte.

Una vez soltada la parrafada y si necesitas sacar algún dato y no sólo leerlo, en principio, podrías hacer que los documentos word, se guarden en formato de texto plano (word permite esta opción), más sencillo de manejar como HTML ó XML.

Otra cosa, supongo que no querrás usar librerías por ser tu servidor Linux y la la mayoría de las librerías que hay por ahí (al menos todas la que yo he visto) usan la librería de Microsoft, y por tanto sólo pueden usarse en servidores Windows ¿verdad?

Otra última cosa que podrías hacer en caso de que tu servidor sea Linux, sería instalar alguna aplicación que lea el formato word ¿catdoc? ¿OpenOffice? y llamarlo por la shell, con el comando shell_exec




De todas formas si explicas más detalladamente que es lo que quieres hacer, quizás encontremos una manera más sencilla de hacerlo.



Volver al foro PHP