Soluciones integrales de e-learning para instituciones y empresas
Curiosidades, comentarios, opiniones para estar al día de las últimas novedades.
Recibirás información detallada de nuestras ofertas, noticias, etc.
Si crees que este Artículo le puede interesar a un amigo puedes enviarselo desde aquí.
Origen del articulo: http://www.adrformacion.com
En muchos desarrollos web surge la necesidad de crear documentos que proceden de la combinación de un documento origen con los datos almacenados en la Intranet/Extranet de la empresa, algo parecido a lo que se consigue con la combinación de correspondencia de Word.
Ejemplos prácticos pueden ser los siguientes:
El control de la impresión desde un documento HTML es algo bastante complejo, por lo que generar un documento DOC, o mejor dicho RTF, nos permitirá resolver nuestro problema de una manera muy efectiva.
En este artículo desarrollaremos un ejemplo práctico, el de obtener un certificado de asistencia para cada uno de los alumnos que asisten a un curso.
Nuestra estrategia se fundamenta en los siguientes pasos:
Para nuestro ejemplo partimos de un documento .DOC que certifica que un alumno ha realizado un curso. En la siguiente imagen vemos un certificado tipo.

Será preciso crear un certificado para cada uno de los alumnos que ha realizado un curso, los datos que varía son los del alumno y los del curso realizado.
Una vez abierto el documento con Word, lo guardamos en formato RTF y sustituimos cada dato variable por unos códigos fácilmente reconocibles. Ojo, el formato RTF es muy puñetero, por lo que será preciso escribir los códigos sin confundirse para que no se introduzcan caracteres raros.

En el caso del ejemplo utilizamos la # y el * de tal manera que por ejemplo, sustituimos el nombre del alumno por #*NOMBRE*#
Guardaremos el documento con el nombre de plantilla.rtf
Crearemos dos funciones auxiliares, la primera se llama leef().

Esta función como se puede ver, recibe como argumento el nombre del fichero RTF, lo abre y almacena el contenido en la variable de texto $todo. Esta función por tanto devuelve el contenido de un fichero.
La siguiente función, rtf(), es la que crea un RTF a partir de una plantilla y sustituyendo los códigos por los datos de la Intranet.

Esta función recibe cuatro argumentos:
Vamos a comentar línea por línea el programa:
Las líneas 13 y 14 determinan el nombre y la ruta del fichero de salida, utilizamos la función time() para asegurarnos de que no se producirán dos ficheros con el mismo nombre.
En la línea 17 se almacena el contenido de la plantilla en la variable $txtplantilla
En las líneas de la 19 a la 24 se extrae el cuerpo del documento RTF, el cuerpo del documento es lo que se repite, para extraerlo primero obtenemos la cabecera del documento, la cabecera queda determinada por la etiqueta rtf sectd. Un documento rtf termina siempre en }, con esa información extraemos el cuerpo.
En el paso 3, a partir de la línea 26 vamos escribiendo el archivo resultado.
En la línea 27 escribimos la cabecera del documento
En la línea 28 ejecutamos la consulta y en la 29 entramos un un bucle, en cada ciclo obtendremos los datos de un alumno y crearemos un certificado.
En la línea 30 creamos una copia del cuerpo del documento llamada $despues, sobre esa copia realizaremos los cambios.
En la línea 31 entramos en un bucle que recorre la matriz de equivalencias, la línea 32 obtiene de la base de datos el dato, la línea 34 obtiene de la matriz el código a sustituir en la plantilla y la línea 35 sustituye el dato por el código.
Una vez sustituidos todos los campos la línea 37 escribe el certificado del alumno y las líneas 38 y 39 generan un salto de página para volver a escribir el siguiente certificado.
Una vez que hemos salido del While que va extrayendo los datos, la línea 41 cierra el documento rtf y la 42 la escritura del fichero.
Una vez hemos creado estas dos funciones ya podemos llamar a la función rtf() y generar el documento.

Comentamos las líneas:
En la línea 48 especificamos cual es la plantilla.
En la línea 49 establecemos la sentencia SQL que extrae los datos, en el caso del ejemplo es un poco compleja pues extrae los datos de varias tablas.
En las líneas desde la 50 a la 71 creamos la matriz de equivalencias, se trata de una matriz de dos dimensiones que relaciona el código que se encontrará en el archivo RTF con el campo de la sentencia SQL.
La línea 72 llama a la función rtf()
Y por fin las líneas 73 y 74 generan un enlace al archivo resultado.
Todo en esta vida es susceptible de ser mejorado, en este caso me queda pendiente el generar el archivo de salida directamente al navegador, con el objeto de no tenerlo que escribir en el disco duro.
Además tenemos desarrollados ejemplos de listados y de etiquetas que podemos documentar en posteriores artículos.
Un aspecto importante para seguir progresando en este tema es conocer la sintaxis de los documentos rtf, se trata de un trabajo un poco durillo que también podemos abordar en posteriores artículos.
* ¿Necesitas contenido? Puedes usar este artículo en tu web, o en tú boletín de correo. El único requisito es incluir la siguiente línea: "Artículo realizado por José Luis Del Rincón e incluir un enlace a www.adrformacion.com/catalogo.php?codcurso=PHP - Curso de php online".
Es muy bueno, utili y sencillo.
Seguid así.
alert('ASD')
tengo php 5.2.0
que version utilizan ?????
es que me da error el php
Bueno, de echo muy bueno, pero por k carajos lo ponen como imagen, uno k lleva prisa y tengo k escribir todo el codigo renglon por renglon, eso me lleva minutos valiosos!!! de ahi en fuera muuy bueno
Hola tengo un problema parecido solo que el mio es pasar todo el texto de una pagina web a Word a ver si me podian ayudar.
Hola mi situacion es un poco parecida a la del articulo solo que en este caso quiero obtener un documento de word RTF y publicarlo en una pagina PHP mantieniendo el mismo formato como lo hace word.
es una portal para un periodico de la ciudad, donde el periodista redacte su articulo a su gusto en word con imagenes, Negrita, cursivas,columnas etc. etc. y cuando termine de editarlo con el simple hecho de guardarlo en la ruta www del APACHE, pues la web ya este publicada sin problemas. obvio voy a generar una pagina web que extraiga dicho archivo word.
todo esto es posible?? PHP me respeta el formato de word?? o tengo que hacer algunos malavares con el codigo PHP??
rtqko xbmvipatr usibonce zgknwhs leaxkbjoy dqjn cnvs
Hola a todos, yo tengo un problema similar, estoy haciendo un sistema de correspondencia en línea, donde el usuario ingresa todos los datos y éste le genera el documento en word, pero además se requiere que el contenido sea editado por el usuario, es decir, poner negrillas, itálicas, viñetas, etc. utilizando algún tipo de WYSIWYG. Al hacerlo con un javascript, me pasa el cuerpo de la correspondencia con los tags de html y no me respeta saltos de párrafo, negrillas ni nada por el estilo.
¿Alguien tiene idea de cómo puedo depurar estos códigos al pasarlos a una plantilla de word?
Saludos
Hola a todos, yo tengo un problema similar, estoy haciendo un sistema de correspondencia en línea, donde el usuario ingresa todos los datos y éste le genera el documento en word, pero además se requiere que el contenido sea editado por el usuario, es decir, poner negrillas, itálicas, viñetas, etc. utilizando algún tipo de WYSIWYG. Al hacerlo con un javascript, me pasa el cuerpo de la correspondencia con los tags de html y no me respeta saltos de párrafo, negrillas ni nada por el estilo.
¿Alguien tiene idea de cómo puedo depurar estos códigos al pasarlos a una plantilla de word?
Saludos
hola,
estoy intentando insertar una imagen en el RTF final, cuyo nombre extraigo de base de datos y además dicha imagen varía segun el usuario pero no he podido conseguirlo.
Alguien sabe cómo puedo hacerlo?
En cierta ocacion bajava de un bosque por la tarde cuando de pronto tome un enderiezo hacia mi casa pero cuando iba a medio camino vi una paresa que se besaba y se me ocurrio esconderme para observarlos era tras una casa grande el tipo empezo a besarla y la pelada estaba exitada empeso a gemir el tipo su mano en el trasero de ella cuando de pronto empeso a meter su mano por dentro de su falda y yo exitado como nunca porque nunca habia visto algo igual se podria decir era mi primera ves que vehia esa clase de cosas y segui observando derrepente el tipo creo que le metio un dedo digo creo por que no se vehia bien estaba lejos ellos no se percataron de mi presencia y me les acerque de pronto el tipo le levanto la falda, quito su bluza y bajo su tanguita empezo a morder sus pesones Y LUEGO BAJO HACIA SU VAGINA DONDE INTRODUJO SU LENGUA Y LE LAMIO EL CLITORIS
En cierta ocacion bajava de un bosque por la tarde cuando de pronto tome un enderiezo hacia mi casa pero cuando iba a medio camino vi una paresa que se besaba y se me ocurrio esconderme para observarlos era tras una casa grande el tipo empezo a besarla y la pelada estaba exitada empeso a gemir el tipo su mano en el trasero de ella cuando de pronto empeso a meter su mano por dentro de su falda y yo exitado como nunca porque nunca habia visto algo igual se podria decir era mi primera ves que vehia esa clase de cosas y segui observando derrepente el tipo creo que le metio un dedo digo creo por que no se vehia bien estaba lejos ellos no se percataron de mi presencia y me les acerque de pronto el tipo le levanto la falda, quito su bluza y bajo su tanguita empezo a morder sus pesones Y LUEGO BAJO HACIA SU VAGINA DONDE INTRODUJO SU LENGUA Y LE LAMIO EL CLITORIS
Copyright 2009© ADRInfor S.L. Logroño | Tel: 941250116 Fax: 941236805 | Email | Politica de Privacidad | Aviso Legal