Eli
85meneos

Como utilizar OpenOffice desde PHP

Explicación de como utilizar OpenOffice instalado en el servidor web, desde PHP, y así poder convertir documentos de oficina a formatos visualizables por el navegador, o al formato que queramos, es una forma de salvar el obstáculo de los formatos cerrados, poco documentados, o a los que PHP no da soporte. Se dan un par de ejemplos, como pasar de ods a xhtml, y extraer una presentación en forma de imágenes JPEG.

etiquetas: openoffice, php, web2.0
votos negativos: 1  usuarios: 77  anónimos: 8  
  1. #5   #4 No es muy congruente que hables de portabilidad en su acepción referente a arquitectura, cuando estamos hablando de sistemas.

    Cuando te digo portabilidad, es que meter una macro en el OOo y ejecutarla con shell_exec, se puede hacer en 1 minuto, por cualquiera, y en cualquier sistema operativo (¿estás insinuando que shell_exec es solo para un sistema concreto, por ejemplo, Unix? ;-) )

    Sin embargo, un binding a PHP, tal como describes, no es un proceso tan sencillo, yo puedo resumir en 3 pasos el uso con macros:

    1. instala OOo
    2. copia la macro al directorio Tools
    3. ejecútala

    Todos los sistemas operativos disponen de llamadas al sistema para ejecutar OOo con parametros, en to...  » ver todo el comentario
    votos: 0, karma: 12
    por jcarlosn el 24-02-2008 12:13 UTC
  2. #7   #6 no voy a citarte "punto-a-punto" tu post como tu has echo con el mio, por que eso SI es demagogia.

    Sin embargo, una puntualización:

    También está el problema de que, si lo deseas, no podrás poner OOo en una máquina "gorda" (o varias), y varios servidores front-end haciéndole(s) peticiones, tendrás que instalar y configurar OOo+Xfvb en cada máquina nueva, añadiendo más carga a los administradores.

    A no? que me lo impide? no veo el problema aquí, solo tendrías que poner el PHP que hace de front-end en la máquina gorda, y consumirlo desde las máquinas front-end.

    No quiero decir ...  » ver todo el comentario
    votos: 0, karma: 12
    por jcarlosn el 24-02-2008 15:34 UTC
  3. #8   Por cierto: Por otra parte, desarrollar un escritorio web y proporcionar herramientas para convertir formatos, no es un problema cotidiano

    Eso no, pero lidiar con formatos de archivo, si.
    votos: 0, karma: 12
    por jcarlosn el 24-02-2008 15:58 UTC
  4. #10   No me he puesto a la defensiva, la palabra escrita no tiene tono, solo estaba aclarando mi punto de vista acerca de algunos comentarios que has echo, pero vaya, que era de forma totalmente constructiva.
    votos: 0, karma: 12
    por jcarlosn el 24-02-2008 22:15 UTC
  5. #1   Esto vendría a ser la analogía en el software libre, al uso de Office de Microsoft a través de COM es2.php.net/com
    votos: 0, karma: 11
    por jcarlosn el 23-02-2008 21:10 UTC
  6. #3   #2 yo también conozco UDK (UNO) y he trabajado con el en C++, sin embargo, veo muy exagerado crear un binding para comunicarte con OpenOffice desde PHP, no olvides que PHP tiene api para com, pero no para UNO.

    Crear un código PHP para comunicarse con UNO en pure-php es un proyecto de una envergadura MUY considerable, yo considero que técnicamente es cierto que usar UDK sería lo mas parecido a COM, pero en cuestiones de facilidad, quien está acostumbrado a COM de Office, esto lo mas cercano, no tiene pies ni cabeza que para hacer una web, tengas que implementarte bindings en C++, aparte de la perdida de portabilidad que ello conlleva.
    votos: 0, karma: 11
    por jcarlosn el 23-02-2008 22:08 UTC
  7. #2   #1 No exactamente, porque lo que hace es ejecutar soffice cada vez que hay que leer algo. Si quieres usarlo como con el componente COM de Office, tienes que hacerlo a través de UDK (udk.openoffice.org), al que se puede acceder desde C++, Python, Java o como componente COM. La "forma correcta" (tm) de hacer lo mismo que en el artículo sería trabajar con el componente de UDK desde PHP, bien haciendo un pequeño código en C++ y luego hacer el binding a PHP (con SWIG, por ejemplo) o "hablando" el protocolo de UNO desde PHP (mucho más trabajo). Además, es más rápido, puesto que sólo es necesaria una instancia de OOo escuchando en un puerto en localhost, a la que se conecta tu código PHP (o lo que sea). Yo he trabajado con UDK en Java, Python y C++ (haciendo un binding para Ruby) y la verdad es que la documentación es bastante amplia, aunque no siempre bien organizada.
    votos: 0, karma: 6
    por esteve.fernandez el 23-02-2008 21:58 UTC
  8. #4   #3 Que digas que pierdes portabilidad si lo haces en C++, mientras que en el artículo ejecutas shell_exec y preparas todo el entorno para Unix no es muy congruente. De todas formas, si has trabajado con el UDK desde C++, no deberías tener demasiados problemas. La API es bastante flexible y la documentación amplia, como ya te he dicho. Si usas sólo funciones de OOo tienes la portabilidad garantizada, además si necesitas algo muy concreto (por ejemplo, una función que convierta un documento de texto de cualquier formato a otro), se puede encapsular en una única función y hacer el binding a PHP con SWIG de esa sola función (el binding son 5 minutos). Es más, puedes seguir con las macros y pasárselas al binding como parámetro, con lo que el código es aún más pequeño. Aquí tienes un ejemplo de cómo llamar a una macro desde una función escrita en C++: www.oooforum.org/forum/viewtopic.phtml?t=13712
    votos: 0, karma: 6
    por esteve.fernandez el 24-02-2008 09:56 UTC
  9. #6   #5 No es muy congruente que hables de portabilidad en su acepción referente a arquitectura, cuando estamos hablando de sistemas.

    Creo que no te he entendido, debo estar un poco lento.

    1. instala OOo
    2. copia la macro al directorio Tools
    3. ejecútala

    1. desarrollar un código en C++
    2. hacer un binding con swig
    3. iniciar el servicio UNO en OOo (startserver)
    4. conectar con el usando el binding

    Creo que has sido un poco parcial en estas dos listas que has hecho (todos lo somos :-)), porque con tu solución no has contado con que también que hay que desarrollar la...  » ver todo el comentario
    votos: 0, karma: 6
    por esteve.fernandez el 24-02-2008 15:27 UTC
  10. #9   #7 creo que tu definición de demagogia no se ajusta a la que tengo yo, en fin. Citar los puntos de tu mensaje es más una cuestión de estilo y claridad. Podría haber respondido directamente a todo el mensaje sin estructurarlo, haciendo que fuera más complicado responder, pero por respeto (tanto a ti, como a los demás) he creído que así sería más fácil mantener la discusión. Si piensas que es demagogia, las discusiones técnicas son todas demagogia ("Internet is for demagogy" :-)) dado que siempre se cita a quien se responde. Si te tengo que ser sincero, creo que te has puesto a la defensiva cuando no hacía falta, se puede tener una discusión técnica sin que las varias partes estén de...  » ver todo el comentario
    votos: 0, karma: 6
    por esteve.fernandez el 24-02-2008 20:53 UTC
comentarios cerrados

menéame