Probleme mit iText

Status
Nicht offen für weitere Antworten.

firestone

Bekanntes Mitglied
Hallo

ich habe in meiner Webapplikation mit iText ein PDF erstellet und stelle es dem Benutzer im response des Servers zu verfügung. Das Klappt auch super. Der Ablauf ist folgender wenn ich auf einen Button drücke wird folgende Action aufgerufen


Code:
public class BasHLADruckenAction extends BaseAction {

	/* (Kein Javadoc)
	 * @see de.bsdwest.basweb.webcore.control.SecureAction#executeSecure(org.apache.struts.action.ActionMapping, de.bsdwest.basweb.webcore.form.BaseForm, javax.servlet.http.HttpServletRequest)
	 */
	public ActionForward executeSecure(ActionMapping mapping, BaseForm baseForm, HttpServletRequest request) throws Exception{
		
		BasHLAProduktSessionModel sesPModel = (BasHLAProduktSessionModel)
							  SessionLocator.getInstance(BasHLAProduktSessionModel.class,
								  request.getSession());
						  BasHLASessionModel sesModel = (BasHLASessionModel) SessionLocator
							  .getInstance(BasHLASessionModel.class, request.getSession());
	  Document doc = new Document ( ) ;
	  HttpServletResponse res = getResponse();
			  res.setContentType("application/pdf");
		res.setHeader("Content-Disposition",
			 " attachment; filename=\"example.pdf\"");
		res.setHeader("Expires", "0");
		res.setHeader("Cache-Control",
			"must-revalidate, post-check=0, pre-check=0");
		res.setHeader("Pragma", "public");


			 Document document = new Document();
	 ByteArrayOutputStream baos = new ByteArrayOutputStream();
	 PdfWriter.getInstance(document, baos);
	 document.open();
	 document.add(new Paragraph("Hallo"));
	 document.close();
	 
	 res.setContentLength(baos.size());
	 ServletOutputStream out = res.getOutputStream();
	 baos.writeTo(out);
	 out.flush();
		
			
	 
		
		return mapping.findForward(MAPPING_FORWARD);
	}
	
	
	
}

Hier der Struts Eintrag zu der Action die aufgerufen wird wenn man auf den Button gedrückt hat

Code:
<action path="/basHLA/BasHLADrucken" type="de.bsdwest.basweb.basHLA.control.BasHLADruckenAction" scope="request" name="basHLAProduktsuche" validate="false">
			<set-property property="roleKey" value="basHLA_HLA" />
			<forward name="forward" path="/basHLA/BasHLAProduktsuche.do?neueSuche=ja"></forward>
			
		</action>


Der Forward verweist dann auf eine andere Action die wiederum soll einfach nur ein anderes Formular aufrufen.

So führe ich das ganze aus passiert folgendes . Nachdem der Button gedrückt wurde erscheint ein Fenster wo darauf hingewiesen wird das ein pdf erstellt wurde . In diesem Dialog kann man entweder Speichern, Abbrechen oder Öffnen. Wenn ich das PDF abspeicher das klappt auch Problemlos. Danach kommt ein weiterer Dialog mit Öffnen und Schließen.

Den beende ich mit schließen. Nun sollte das Programm ja eigentlich weiter machen mit dem Aufbau des Formulars aber leider bleibt es an der Stelle stehen wo es angefangen hat das PDF zu erstellen aber das auch nur in der Internet Explorer Anzeige. Schaut man in der Konsolenausgabe nach so hat das Programm korrekt weiter gemacht.

Das Problem ist jetzt wieso ist die Anzeige im Internet Explorer stehen geblieben ? Wenn ich dann Im Internet Explorer auf aktualisieren gehe so gelange ich zu der Seite zurück wo der Button gedrückt wurde ( was vom Prinzip her ja falsch ist , weil ich ja bereits ein anderes Formular aufgebaut habe).

Wo liegt der Fehler 🙁
 
firestone hat gesagt.:
Das Problem ist jetzt wieso ist die Anzeige im Internet Explorer stehen geblieben ? Wenn ich dann Im Internet Explorer auf aktualisieren gehe so gelange ich zu der Seite zurück wo der Button gedrückt wurde ( was vom Prinzip her ja falsch ist , weil ich ja bereits ein anderes Formular aufgebaut habe).

Wo liegt der Fehler 🙁

Im Ernst: Taucht diese Reaktion nur im Internet Excluder auf?
Ist das Verhalten in Opera oder dem Firefox genauso?
 
Leider kann ich das nicht testen ich habe nur den IE installiert kann morgen versuchen ob ich einen anderen Browser installieren darf
 
Naaa, da würde ich darauf wetten, dass es am Cache-Control HTTP Header liegen... Kannst ja mal versuchen ob es geht, wenn du den auf private setzt. Einige Versionen von dem Adobe Reader Plugin haben Probleme, wenn das PDF nicht in dem Temporary Internet Files Ordner auf dem Client PC liegt. Diese Cache Control einstellung sollte das aber setzen.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben