Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1441 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [Servlet]Ouverture d'un fichier non HTML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Servlet]Ouverture d'un fichier non HTML

n°758931
The Flint
Will for ever
Posté le 10-06-2004 à 11:06:36  profilanswer
 

Salut,  
Pour générer du pdf facilement, j'utilise l'API Itext qui fonctionne plutôt bien. J'ai vu que certains l'avaient utilisée ici, donc peut être pourra t-on me répondre, je ne suis pas sûr d'ailleurs que mon problème soit directement lié à l'utilisation de cette API.
 
Voici le corps la méthode doPost de la servlet qui doit générer le pdf :  
 

Code :
  1. response.setContentType("application/pdf" );
  2. response.setHeader("Content-disposition","attachment; filename=test.pdf" );
  3. Document document = new Document();
  4. try {
  5.   //ContentType and create an instance of the corresponding Writer  
  6.   PdfWriter.getInstance(document, response.getOutputStream());
  7.   document.open();
  8.   document.add(new Paragraph(new Date().toString()));
  9. }
  10. catch(DocumentException de) {
  11.   de.printStackTrace();
  12.   System.err.println("document: " + de.getMessage());
  13. }
  14. document.close();


 
Code trouvé sur le site du créateur de l'API : http://www.lowagie.com/iText/examples/Chap0105.java
Le problème :  
- tout d'abord une nouvelle fenêtre du navigateur s'ouvre avec l'URL de la servlet.  
- Ensuite boîte de dialogue voulez vous ouvrir/enregistrer le fichier "NomServlet" et nom pas "test.pdf".  
Si je clique sur energister, ça marche à peu près, il m'enegistre bien un "test.pdf".  
Si je clique sur ouvrir : deuxième boite de dialogue (enfin) voulez vous ouvrir/enregistrer le fichier "test.pdf". Enregistrer passe. Mais ouvrir plante, il me dit que le fichier n'existe pas....  
 
 
D'où les questions :  
1) Comment faire pour ne pas avoir une nouvelle instance de navigateur qui s'ouvre (j'ai mis un target="_blank" dans ma jsp, mais je ne sais pas quoi mettre)  
2) Je voudrai directement la bonne fenêtre : voulez vous ouvrir/enregistrer le fichier "test.pdf"  
 
Any Help please ...
_________________
show time !!!


Message édité par The Flint le 10-06-2004 à 11:09:08

---------------
Krikazaaak
mood
Publicité
Posté le 10-06-2004 à 11:06:36  profilanswer
 

n°759283
pascal34
one point !
Posté le 10-06-2004 à 14:55:32  profilanswer
 
n°759400
The Flint
Will for ever
Posté le 10-06-2004 à 16:03:26  profilanswer
 

Oui, mais j'interviens justement sur ce post aussi.
Il n'y pas de solution de trouvée pour le moment.
 
Donc [:phlos]


---------------
Krikazaaak
n°759490
pascal34
one point !
Posté le 10-06-2004 à 17:04:06  profilanswer
 

The Flint a écrit :

Enregistrer passe. Mais ouvrir plante, il me dit que le fichier n'existe pas....  


 
Ce qui est vrai puisque le fichier est généré à la volée !!!

n°760005
The Flint
Will for ever
Posté le 11-06-2004 à 08:52:00  profilanswer
 

pascal34 a écrit :

Ce qui est vrai puisque le fichier est généré à la volée !!!


 
Umf  :heink:  :heink:  
mais non, ça marche en fait très bien avec Mozilla, mais pas avec IE.
Le fichier est quand même généré avant d'être ouvert donc il existe.


---------------
Krikazaaak
n°760032
pascal34
one point !
Posté le 11-06-2004 à 09:38:48  profilanswer
 

Ca sent le bug IE !!!
Ca ne fera jamais qu'un de plus.

n°760039
The Flint
Will for ever
Posté le 11-06-2004 à 09:45:40  profilanswer
 

Bah ouais. c'est pas que ça me gène profondément, mais comme c'est une appli pro et que 95% des gens utilisent IE je préfererai que ça fonctionne sous IE même si ça ne doit pas fonctionner avec mozilla.


---------------
Krikazaaak
n°760062
pascal34
one point !
Posté le 11-06-2004 à 10:01:50  profilanswer
 

Maintenant, tu devrais pouvoir imposer d'avoir IE 5.5 minimum.
Ca merde pour toutes les versions ?

n°760092
The Flint
Will for ever
Posté le 11-06-2004 à 10:15:47  profilanswer
 

IE 6.0 malheureusement.
Je doute que ce soit mieux avec une version antérieure.


---------------
Krikazaaak
n°760118
pascal34
one point !
Posté le 11-06-2004 à 10:38:53  profilanswer
 

Essaie de faire générer un simple fichier texte (type mime: text/plain je crois) par ta servlet et vois comment se comporte IE

mood
Publicité
Posté le 11-06-2004 à 10:38:53  profilanswer
 

n°760123
The Flint
Will for ever
Posté le 11-06-2004 à 10:44:25  profilanswer
 

C'est une idée...
je vais essayer.


---------------
Krikazaaak
n°760383
Bysounours
Posté le 11-06-2004 à 13:24:19  profilanswer
 

Personellement j'ai eu me même genre de problème avec IE.
Dans mon cas, on ouvre un fichier pdf généré à la volée dasn une nouvelle fenêtre.
 
Le souci venait du fait que on passait deux fois dans la fonction qui nous ouvre le fichier et l'affiche. Je suppose que c'etais une fois pour la servelet et une fois pour le fichier en lui même.
 
On a résolu le pb en ajoutant :
 
        response.setHeader("Cache-Control", "" );
        response.setHeader("Pragma", "" );
        response.setHeader("Expires", "" );
 
Depuis plus de pb avec IE, et ca fonctionne toujours correctement avec Mozilla.
 
J'espere que cela va pouvoir vous aider.

n°760403
The Flint
Will for ever
Posté le 11-06-2004 à 13:45:39  profilanswer
 

Légère amélioration avec ce code ajouté.
Il m'ouvre toujours deux fenêtre successives, mais si je fais deux fois ouvrir, cette fois ci, le fichier s'ouvre sans encombres.
Donc merci beaucoup, plus que le prblème de la double fenêtre à régler (une première avec le nom de la servlet, et une deuxième avec le nom du fichier).


---------------
Krikazaaak
n°760422
Bysounours
Posté le 11-06-2004 à 14:04:31  profilanswer
 

Personnelement, j'écris directement le fichier dans la variable "response" de cette manière :
 
response.getOutputStream().write(array);
 
ou array est un tableau de byte, et response est du type HttpServletResponse.
 
Maintenant je ne sais absolment pas si ca permet de sauvegarder le fichier ou si ca va l'ouvrir dans le navigateur.
 

n°760429
The Flint
Will for ever
Posté le 11-06-2004 à 14:06:26  profilanswer
 

Bysounours a écrit :

Personnelement, j'écris directement le fichier dans la variable "response" de cette manière :
 
response.getOutputStream().write(array);
 
ou array est un tableau de byte, et response est du type HttpServletResponse.
 
Maintenant je ne sais absolment pas si ca permet de sauvegarder le fichier ou si ca va l'ouvrir dans le navigateur.


 
Ok pour ça, je fais à peu près ça.
Mais tu finis ton code comment ? Tu fermes l'outpustream, tu le flush???


---------------
Krikazaaak
n°760438
Bysounours
Posté le 11-06-2004 à 14:11:02  profilanswer
 

juste un close, je fais pas de flush.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [Servlet]Ouverture d'un fichier non HTML

 

Sujets relatifs
[HTML/ASP] Lien vers application ?Requete HTTP, Lire le flot d'une page HTML dans un script php
Utiliser un __gnu_cxx::stdio_filebuf pour lire un fichierUn bon éditeur HTML pour Gnome
ecriture dans un fichieronversion d'un fichier ;wav en fichier .c
écriture fichier txt/inirecher chaine dans fichier texte
probleme : taille de fichier limitée à 2Mo en upload (ovh)...Impression d'un fichier par une application J2EE
Plus de sujets relatifs à : [Servlet]Ouverture d'un fichier non HTML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR