Je souhaite afficher le flux d'un pdf généré via iText, depuis le serveur.
Si j'ai bien des données dans ce flux, j'affiche le pdf dans une nouvelle popup, si je n'ai pas de données correcte ou une erreur, j'affiche un message sur la page en cours (Edition.jsp)
Fichier Edition.jsp :
struts.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <s:form id="pdf" action="ExportPdf" theme="simple" > ... <sj:menu name="typeEdition" cssClass="edition" list="listeEditions" /> </s:form>
javascript, lors du click sur l'item menu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <action name="ExportPdf" class="ExportPdfAction"> <result name="success" type="stream"> <param name="inputName">inputStreamPdf</param> <param name="contentType">application/pdf</param> <param name="contentDisposition">filename="myFile.pdf"</param> <param name="bufferSize">2048</param> </result> <result name="error">/WEB-INF/web/Edition.jsp</result> </action>
Donc, je reçoi des données dans data (%PDF-1.4..) mais impossible d'afficher le pdf correctement.
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 // click sur l'item du menu $('.edition').bind('click', function(event, data) { $('#pdf').submit(); }); $('#pdf').submit(function(event) { // stop le submit normal event.preventDefault(); // post avec les paramètres var posting = $.post( $( this ).attr( 'action' ), $('#pdf').serialize()); // attend le résultat posting.done(function( data, event ) { if (data.substring(0,4) != '%PDF') { alert ("error"); } else { // le format pdf est reconnu mais pas affiché (le stream est dans l'url, mais pas dans le contenu) window.open('data:application/pdf,'+ data, 'pageEdition', 'menubar=no, height=600, width=900' ); } });
Une solution ?
Merci
Partager