Bonjour,
je débute avec tapestry, mon problème est le suivant :
J'essaie de faire un lien me permettant d'exporter un objet au format PDF. J'ai une classe qui me permet de convertir un objet donné en PDF (avec iText) et l'écrire dans un OutputStream. J'ai un actionlink dans ma page pour lancer la conversion en question. J'ai aussi réussi à obtenir mon PDF dans mon navigateur une fois le lien cliqué à l'aide d'une StreamResponse, mais sur la page du navigateur directement. Ce que je voudrais c'est avoir le dialogue de téléchargement du navigateur pour que l'utilisateur fasse ce qu'il veut du fichier PDF.
Pour le moment j'ai ça :
Mon lien dans la page :
L'appel dans ma "page java" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <a t:type="actionlink" t:id="exportPDF"><img src="${asset:context:images/icoPDF.gif}" width="20"/></a>
Mon objet PdfResponse
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 @OnEvent(component="exportPDF") public Object onExportPdf() { return new PdfResponse(contract); }
Je pense que c'est cette classe qui pose problème, je ne vois pas comment faire en sorte de lancer le dialogue de téléchargement et revenir sur ma page.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public class PdfResponse implements StreamResponse { public PdfResponse(PdfExportable pdfObject) { super(); this.pdfObject = pdfObject; } public String getContentType() { return null; } public InputStream getStream() throws IOException { return null; } public void prepareResponse(Response response) { try { pdfObject.exportToPdf(response.getOutputStream("application/pdf")); } catch (IOException e) { e.printStackTrace(); } } private PdfExportable pdfObject; }
Partager