PDF als ByteArrayOutputStream in JSP ausgeben

aemik

Bekanntes Mitglied
Halo,

ich denke der Titel sagt schon alles. Hier mein Code:

Java:
<%@page import="java.io.*"%>
<%@page contentType="application/pdf"%>
<%
	ByteArrayOutputStream byteStream = (ByteArrayOutputStream)session.getAttribute("pdfStream");

	response.reset();
	response.setContentType("application/pdf");
	response.setContentLength(byteStream.size());

	out.clear();
	byteStream.writeTo(response.getOutputStream());
%>

Das PDF wird zwar angezeigt, aber es fiegt eine Exception:

Java:
java.lang.IllegalStateException: getOutputStream() has already been called for this response

In einem Servlet wäre das wahrscheinich garkein Problem, aber hier muss es in einer JSP passieren.
Jemand eine Idee?

Danke
 

thE_29

Top Contributor
Was ist wenn du den byteStream da einfach reingibst? Der Fehler sagt ja aus, dass die Methode schon aufgerufen wurde..
 

aemik

Bekanntes Mitglied
In einem Servlet funktioniert es einwandfrei, weil ich dort auf auf den Outputstream zugreifen kann.
In der JSP kann ich das nichtmehr ohne dass eine Exception fliegt.

Es funktioniert alles so wie ich es will in der JSP, aber ich will nicht immer eine Exception auslösen.
 
M

maki

Gast
JSPs sind dafür nicht gedacht, JSP sind für Text gedacht, der ContentType wird als text gesetzt bevor du die Chance bekommst es selber auf Binary umzustellen, nimm ein Servlet, ist ja kein Problem.
 

DerEisteeTrinker

Bekanntes Mitglied
Das Problem an den JSP-Seiten ist, dass sie erst ziemlich spät in der Reihe drankommen bei einem Web-Aufruf. Wenn du in die JSP-Seite kommst, dann steht im Header schon, dass das eine HTML-Seite wird und der Header darf nur einmal geschrieben werden. Nutze einfach ein Servlet, er zeigt es dann schon im Browser an oder der User hat eingestellt, dass er es herunterladen möchte.
 

Ähnliche Java Themen

Neue Themen


Oben