PDF-Dokument aus Web-Anwendung (richfaces, tomcat)

Hallo,

ich habe eine kleine Web-Anwendung zur Sammlung
von Informationen über Kunden geschrieben und
wollte dort die Möglichkeit anbieten, diese Informationen
als PDF zu speichern.
Ich „baue“ das PDF-Dokument mit iText (es wird also
dynamisch erzeugt und liegt nirgends als Datei vor), was
wunderbar funktioniert.
Allerdings weiß ich nicht, wie ich den OutputStream an den
Browser übergeben kann, bzw. wie ich dem Browser mitteile,
das sich der speichern-unter dialog öffnen soll und eben
genau dieser output-stream gespeichert werden soll.

Ich nutze tomcat und richfaces für die Web-Anwendung und möchte
es ermöglichen, dass beim Klick auf PDF-Export die
Methode für iText aufgerufen wird, das PDF-Dokument erzeugt wird
und sich danach der Speichern-Dialog öffnet.

Kann mir hier jemand weiterhelfen?

Vielen Dank

Hallo,

Allerdings weiß ich nicht, wie ich den OutputStream an den
Browser übergeben kann, bzw. wie ich dem Browser mitteile,
das sich der speichern-unter dialog öffnen soll und eben
genau dieser output-stream gespeichert werden soll.

Ich nutze tomcat und richfaces für die Web-Anwendung und
möchte es ermöglichen, dass beim Klick auf PDF-Export die
Methode für iText aufgerufen wird, das PDF-Dokument erzeugt
wird und sich danach der Speichern-Dialog öffnet.

Du musst den Content-Type in deinem OutputStream in der Response deines Servlets entsprechend setzen. Anhand dieser Header-Variable in HTTP erkennt der Browser erst, dass es sich um ein PDF handelt. Damit der Speichern-Unter-Dialog aufgerufen wird und nicht das Adobe Reader Plugin das PDF darstellt musst du die Header-Variable Content-Disposition setzen. Guckst du hier:
http://www.javaworld.com/javaworld/javatips/jw-javat…
http://www.onjava.com/pub/a/onjava/excerpt/jebp_3/in…

So vielen Dank für die Antwort.
Ich habe es jetzt hinbekommen…

hier der code im managedBean:

public String createPDF() {
try {

String filename = „foo.pdf“;
String contentType = „application/pdf“;

OutputStream out2 = createPDFExportDocument(); // creates the doc

byte[] data = ((ByteArrayOutputStream) out2).toByteArray();

FacesContext fc = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse) fc.getExternalContext().getResponse();
response.setHeader(„Content-disposition“, „attachment; filename=“

  • filename);
    response.setContentLength(data.length);
    response.setContentType(contentType);
    ServletOutputStream out;

out = response.getOutputStream();
out.write(data);
fc.responseComplete();

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return null;
}
}