PDA

Ver la versión completa : HTML to VARIABLE



Danilo51
20-08-2008, 08:30
Buenas gente,
Estoy trabajando en unas paginas que están "programadas" en ASP, me gustaría saber si hay alguna posibilidad de que cuando envía el HTML al navegador yo me pueda quedar ese código en una variable. Lo necesito por que estoy intentando pasar ese resultado a un documento PDF. Y si no es posible estoy abierto a alternativas.

Un saludo

Danilo51
20-08-2008, 08:59
Buenas gente,
acabo de encontrar esto:


document.getElementsByTagName('html')[0].innerHTML

pero es de JavaScript y no acabo de ver claro como enviar la variable al servidor.

Un saludo

Ktorce
20-08-2008, 09:42
Tendras que hacer un submit, bien por POST metiendo ese valor primero en un campo (oculto por ejemplo), o por GET metiendolo en la URL a cargar (te valdría que el que haga el submit sea otro FRAME de tamaño 0, osea, invisible

Un saludo

Danilo51
20-08-2008, 17:45
Buenas Ktorce,
no me aclaro con el tema:(, no hay nada del lado ASP para recoger el valor? me estoy volviendo loco y no saco nada.

En fin, un saludo.

Ktorce
20-08-2008, 19:52
El tema es que javascript se ejecuta en el navegador (cliente), por lo que si no lanzas un submit del formulario, o cargas una page del estilo http://www.sitio.com/page.asp?variable=valor para recogerlo, no hay manera. Ten en cuenta el funcionamiento de un servidor web, este te sirve una pagina web, que el navegador se encarga de interpretar, y ahi acaba la comunicación, hasta que por otros medios se solicita otra page / información, momento en el que se vuelve a establecer la comunicación. En resumen, la conexion no es constante ni continua

Danilo51
21-08-2008, 09:02
Buenas Ktorce,
Muchas gracias por la explicación. Voy a seguir intentándolo a ver si lo saco.
Un saludo:cool:

Danilo51
21-08-2008, 11:31
Buenas de nuevo,
he progresado un poco, te muestro el codigo:


<script type="text/javascript">
var a
a = document.getElementsByTagName('html')[0].innerHTML
window.location.assign('<%=urlPag%>?codpag=' + a)
</script>


Al final del html, dectectando si es la segunda vez que entro en la página, me la vuelvo a reenviar para pasarme el valor por la URL como me comentabas, pero cuando tiro a mirar que tiene me llega en blanco... Tiene alguna limitación lo que pasas por la URL?

Un saludo

Ktorce
21-08-2008, 15:24
Si, si que hay limitacion, depende de los navegadores, cada uno tiene un límite, aunque este es muy grande (varios miles de caracteres), el problema que veo a ese codigo es que no tratas el texto, por lo que estas intentando pasar tal cual espacion, retornos de carro, caracteres acentuados.....

primero trata lo que quieres pasar con la funcion escape("texto"), aunque esta funcion no codifica todos los caracteres, como puede ser el + o el *.....

Ya me contaras

PD: es necesario que tengas que capturar absolutamente todo el codigo html?, me parece una salvajada

Danilo51
21-08-2008, 16:57
Buenas Ktorce,
Ya he conseguido pasar lo que me interesa mediante un input "hidden" recojo el valor del formulario y ya ta. Pero me está costando un montón pasar el html resultante a pdf, estoy utilizando el asppdf y no hay manera de que me salga como yo lo veo por pantalla.

En cuanto a tu P.D. como podría pasar eso a pdf sin pasar el código??
Hagan sus comentarios.

Un saludo

Ktorce
22-08-2008, 09:53
ufff, ten en cuenta lo que te dije antes, una pagina web no es mas que texto plano, que cada navegador (cliente) interpreta, de la misma manera que no siempre ves una pagina igual si la abres con firefox, opera o internet explorer.

No conozco el programa asppdf, por lo que no se si este iterpreta las etiquetas HTML, y las transforma en codigo para el pdf, pero si no lo hace, lo tendras que hacer manualmete a base de reemplazar las etiquetas, por ejemplo, que reemplace todos los <br> por el carácter ASCII 10

Danilo51
22-08-2008, 15:39
Buenas Ktorce,
Teóricamente asppdf lo hace... pero no es más que teoria ya que he probado distintas formas para que interprete el html y no se lo traga ni de coña cuando se trata de capas... en fin voy a dejarlo estar y si alguien quiere un pdf que se lo imprima a mano y lo envíe por mail manualmente.

Muchisimas gracias por todo Ktorce
Hasta la próxima. ;)

KaoS
04-09-2008, 11:21
Danilo51 lo que pretendes hacer lo puedes hacer "facilmente" con cualquier librería que trabaje con Ajax, tienes un mogollón de ellas: Jquery, YUI, Ext, Prototype, etc etc.

Todas ellas te permiten acceder al DOM (Document Object Model) que es el cuerpo del HTML y con Ajax (==Javascript) puedes enviar datos sin tener que recargar la página. Puedes enviar variables tanto por post como por get al servidor, procesar lo que necesites y recuperar la respuesta de forma invisible al usuario.

Te dejo aquí dos ejemplos simples de como YUI trabaja con el DOM y hace una peticion Ajax.
Envío de variables por POST con YUI:
http://developer.yahoo.com/yui/examples/connection/post.html

Ejemplos de trabajo con el DOM con YUI:
http://developer.yahoo.com/yui/examples/dom/index.html

YUI es relativamente ligera no (pesa mucho) y a la hora de ser descargado por el cliente, además puedes linkarlo directamente al servidor de Yahoo que provee direcciones para ello) y a mi parecer bastante simple, si no te convence mira cualquiera de las otras librerías.

Suerte!