OVH Cloud OVH Cloud

Help !!! Problème avec Response

4 réponses
Avatar
Millox Frédéric
Bonjour,

J'ai un problème que je n'arrive pas à résoudre et c'est assez pressé

Lorsque je clique sur une image, l'application génére, à partir de
l'ensemble des pdfs selectionnés, un pdf complet ( toutes les pages sont
concaténées ).

Etant sur une application web, je l'affiche à partir du cache du browser de
cette façon :

Response.Expires = 0
Response.Buffer = True
Response.ContentType = "application/pdf"
Response.AddHeader("Content-Disposition", "inline; filename=" + ".pdf")
Response.BinaryWrite(p.get_buffer())
Response.End()

p étant une instance d'une classe appartenant à une librairie gérant la
création de pdfs.

Jusque là, aucun problème. Le pdf généré est affiché dans le frame
spécifique grâce à acrobat reader.

Cependant j'ai voulu rajouter un petit bout de javascript pour la navigation
de mon site qui est sur un autre frame.

donc j'ai mis :

LiteralNav.Text = "<script
language=""javascript"">parent.Nav.location.href='Nav.aspx';</script>" avec
LiteralNav de type Literal
soit
Response.Write("<body><script>parent.Nav.location.href='Nav.aspx';</script></body>")

Et là, le bout de code est jamais executé.... si je met en commentaire le
bout de code permettant d'afficher le pdf généré comme énoncé si dessus et
que je clique sur l'image, le bout de code est executée.

Visiblement, il y a un conflit lors l'utilisation des deux "Response".

Merci d'avance.

--
fmillox

4 réponses

Avatar
Julien
En général j'utilise plutôt les méthodes
Page.RegisterClientScriptBlock et Page.RegisterStartupScript pour
ajouter du javascript dynamiquement. Ca t'éviterais d'utiliser un
Response.Write
Avatar
Millox Frédéric
Salut Julien,

J'ai écrit le code :

Dim script As String = "<script
language=""javascript"">parent.Nav.location.href='Nav.aspx';</script>"

If Not Page.IsClientScriptBlockRegistered("clientScript") Then
Page.RegisterClientScriptBlock("clientScript", script)
End If

OU

Page.RegisterStartupScript("clientScript", script)

A LA PLACE DE

Response.Write("<body><script>parent.Nav.location.href='Nav.aspx';</script></body>")

Dans les deux cas, ça marche très bien si je mets en commentaire le
bout de code permettant d'afficher le pdf généré comme énoncé dans l'exemple
précédent.
En gros, ça fait comme avant ; ça ne veut pas faire les deux actions.....

Merci quand même..... Si quelqu'un a une idée......

--
fmillox


"Julien" a écrit :

En général j'utilise plutôt les méthodes
Page.RegisterClientScriptBlock et Page.RegisterStartupScript pour
ajouter du javascript dynamiquement. Ca t'éviterais d'utiliser un
Response.Write




Avatar
Julien
Dans ta première partie tu spécifies que tu vas retourner du contenu
de type "application/pdf". Es-tu sûr que ce n'est pas cette partie qui
bloque l'exécution de ton code ?

Je ne pense pas que l'on puisse utiliser de code HTML et Javascript
dans un fichier pdf, cettte insertion de code pourrait peut-être
marcher si ton ContentType était "text/html". Ici ton navigateur ne
doit pas interpréter ce que tu lui envoies comme du code HTML (et par
conséquent il zappe aussi la fonction Javascript). A mon avis le
problème doit venir de ça, si c'est le cas, tu risque d'être
coincé, sauf peut-être en utilisant une iframe (sur une page HTML et
qui aurait pour src une page qui générerait ton pdf)...

Si quelqu'un peut me contredire ...
Avatar
Millox Frédéric
Bonjour Julien,

Ta dernière réponse m'a bien aidé en fait à l'arrivée !!!! :)

Lorsque je clique sur l'image, je fais maintenant :

Response.Write("<body><script>parent.Nav.location.href='Nav.aspx';parent.Main.location.href='GeneratePDF.aspx?pano="
& pano & "&arti=" & strTabArti.Substring(0, strTabArti.Length - 1) &
";'</script></body>")

Ce qui me permet de rester dans le ContentType "text/html" ( pas de mélange
des deux comme précedenment ) et l'autre page GeneratePDF.aspx gère la
gestion de la génération du pdf et de son affichage.

Merci beaucoup pour ton aide.

A+

--
fmillox


"Julien" a écrit :

Dans ta première partie tu spécifies que tu vas retourner du contenu
de type "application/pdf". Es-tu sûr que ce n'est pas cette partie qui
bloque l'exécution de ton code ?

Je ne pense pas que l'on puisse utiliser de code HTML et Javascript
dans un fichier pdf, cettte insertion de code pourrait peut-être
marcher si ton ContentType était "text/html". Ici ton navigateur ne
doit pas interpréter ce que tu lui envoies comme du code HTML (et par
conséquent il zappe aussi la fonction Javascript). A mon avis le
problème doit venir de ça, si c'est le cas, tu risque d'être
coincé, sauf peut-être en utilisant une iframe (sur une page HTML et
qui aurait pour src une page qui générerait ton pdf)...

Si quelqu'un peut me contredire ...