Pdf Stream von Servlet mit itext

burricall

Mitglied
Hallo zusammen

Ich habe mittels itext ein pdf erstellt und will es nun via Stream zurück an den Client schicken. Der Client (Applet) sollte dann das PDF im Browser anzeigen. Leider wird das PDF aber im Browser nicht angezeigt.

Meine doPost Methode vom Servlet sieht folgendermassen aus:

Java:
public void doPost (HttpServletRequest  request, HttpServletResponse response) throws ServletException, IOException
{ 
    try
    {
        Document document = new Document();
        ByteArrayOutputStream baos = new ByteArrayOutputStream();          
        PdfWriter.getInstance(document, baos);
        document.open();
        document.add(new Paragraph("BlaBla")); // -> hier wird das PDF erstellt
        document.close();
        response.setHeader("Expires", "0");
        response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
        response.setHeader("Pragma", "public");
        response.setContentType("application/pdf");
        response.setContentLength(baos.size());
        ServletOutputStream out = response. getOutputStream();
        baos.writeTo(out);  // -> Das Servlet schickt das PDF zurück
        out.flush();
        out.close();
    }
    catch (Exception e) { e.printStackTrace();}
 }

Aus meiner Sicht sollte das Servlet richtig sein.

Mein Clientfunktion sieht so aus:
Java:
public Vector myCall(Vector vec) 
{
    try 
    {
        URL url = new URL("http://localhost:8080/toplife/servlet/Testpaket.TestServlet");
        URLConnection connection = url.openConnection();
        connection.setDoInput(true);
        connection.setDoOutput(true);
        
        ObjectOutputStream  toServer = 
        new ObjectOutputStream(new GZIPOutputStream(connection.getOutputStream()));
        
        // [B]ein Vector wird ans Servlet geschickt mit Daten für das PDF[/B]
        toServer.writeObject(vec); 
        toServer.flush();
        toServer.close();

        // [B]Client wartet hier auf PDF vom Servlet[/B]
        BufferedInputStream bis = new BufferedInputStream(connection.getInputStream());
        bis.close();
      }
      catch ( Exception ex ) 
      {
        // a real program would need to handle this exception
      }
      return vec;
  }

Leider finde ich zur Zeit keine Lösung. Ich bitte um Hilfe. Danke :)
 

Blakh

Bekanntes Mitglied
Java:
response.setContentType("application/pdf");

Verstehe das vllt. irgendwie nicht, aber wenn du das pdf von einem Applet angezeigt haben willst, wieso setzt du ContentType der Response auf pdf?
 

burricall

Mitglied
Da ist alles in Ordnung. Wenn ich das PDF direkt als Link vom Servlet anspreche wird das PDF angezeigt. Allerdings ohne die Daten. Die Daten müssen ja zuerst gesendet werden.
 

burricall

Mitglied
@Blakh

Der Client schickt einen Vektor an das Servlet. Dieser Vektor wird vom Servlet benötigt um das PDF mit itext zu erstellen. Im Vektor sind sozusagen die Daten, die für das PDF benötigt werden. Anschliessend wird das PDF über den Stream wieder zurück an den Client geschickt. Das PDF wird nicht als File auf dem Server gespeichert, sonst wärs ja einfach.
 

burricall

Mitglied
Natürlich in der Clientfunktion (siehe oben). Ich habe ja nur die Funktion angegeben nicht die ganze Klasse. Der Rest der Klasse ist ja nicht relevant. Oder willst du wissen wie die GUI aussieht? :)
 

burricall

Mitglied
response.setContentType("application/pdf");

Wenn man dem Client einen Stream zurückschickt muss er wissen um was für ein Dokument es sich dabei handelt. Standardmässig ist dies ein html. Mit dieser Funktion weiss der Client, dass es sich um ein PDF handelt.
 

Blakh

Bekanntes Mitglied
Du möchtest also die Daten nicht an das Applet schicken, sondern das Applet stellt den Vektor für das Servlet und das Servelt soll das PDF anzeigen? Wenn du das an ein Applet wieder schicken willst, dann müsstest du doch den response-teil anders machen, meinem Verständnis nach ;)

Sorry .. will das echt nur verstehen ;).
 

burricall

Mitglied
Ja das ganze ist ein wenig komplex :) Das Servlet ist schon richtig vertrau mir. Das PDF wird vom Client angezeigt. Das Problem muss irgendwo beim Clientcode liegen. Wie kann ich aus diesem BufferedInputStream ein PDF öffnen ???

Ich versuchs mal so:

Client -> schickt Vektor
Servlet -> stellt PDF zusammen aus Vektor
Servlet -> schickt das PDF via Stream zurück an den Client und teilt ihm mit, dass es ein PDF Dokument ist (setContentType())
Client -> sollte das PDF anzeigen.
 

burricall

Mitglied
Naja schein anscheinend zu kompliziert gewesen zu sein. Habs jetzt in einer Session zuerst den Vektor gespeichert und dann direkt das Servlet aufgerufen :autsch:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Server-Socket liest Input-Stream nicht Netzwerkprogrammierung 5
E Socket Werte mit DataInput- und Output- Stream übergeben Netzwerkprogrammierung 1
T MP3 Dateien Stream Netzwerkprogrammierung 3
C Byte Stream dekodieren Netzwerkprogrammierung 7
G Video aus RTSP Stream speichern Netzwerkprogrammierung 8
B Socket BufferedReader.readLine() beenden ohne den Stream zu closen Netzwerkprogrammierung 7
A versch. Daten im Stream erkennen Netzwerkprogrammierung 2
E stream speichern Netzwerkprogrammierung 5
S Dateitransfer - kein end of stream Netzwerkprogrammierung 5
M RTP Stream überprüfen... Netzwerkprogrammierung 4
K ein Thread pro Stream Netzwerkprogrammierung 2
M Objekt über Object-Stream, empfange "alte" Daten Netzwerkprogrammierung 2
K End of stream, BufferedInputStream Netzwerkprogrammierung 4
A Icecast / SHOUTcast MP3 Stream / icy-metaint Netzwerkprogrammierung 3
Kr0e Simpler HTTP Stream server Test Netzwerkprogrammierung 3
H String Array durch einen Stream schicken. Netzwerkprogrammierung 4
lacyuu Warum empfängt mein Stream keinen Input? Netzwerkprogrammierung 4
lordcarlos Erstes TCP programm - output stream problem Netzwerkprogrammierung 2
dayaftereh Bester Stream für ein Spiel? Netzwerkprogrammierung 15
N Socket Stream Schicken Netzwerkprogrammierung 13
N Socket Stream in String Netzwerkprogrammierung 4
M Bytes aus Stream lesen Netzwerkprogrammierung 3
J byte[] auf Stream schreiben Netzwerkprogrammierung 2
M ich habe ein stream problem Netzwerkprogrammierung 7
S Schnellster Stream Netzwerkprogrammierung 20
V Mehrere Streams durch einen Stream senden Netzwerkprogrammierung 14
W Was für ein Stream soll ich verwenden? Netzwerkprogrammierung 8
F Stream wird als Char übertragen. Char -> in String umwand Netzwerkprogrammierung 5
A java.io.StreamCorruptedException: invalid stream header Netzwerkprogrammierung 2
C invalid stream header Netzwerkprogrammierung 2
T Stream de-multiplexen Netzwerkprogrammierung 2
J gzip Stream weiterleiten Netzwerkprogrammierung 3
m@nu Ende von Stream bei HTTP-Request Netzwerkprogrammierung 3
C Problem mit Object-Stream Netzwerkprogrammierung 3
N TCP Stream auslesen Netzwerkprogrammierung 7
André B. Stream Bridge? Netzwerkprogrammierung 2
P Verschiedene Daten über einen Stream Netzwerkprogrammierung 4
T Musik-Stream: Server sendet die Datei zu schnell ? Netzwerkprogrammierung 3
N InternetRadio-Stream umleiten Netzwerkprogrammierung 2
G Writer oder Stream bei Socket? Netzwerkprogrammierung 2
G Datei über HTTP Stream senden Netzwerkprogrammierung 4
Encera Servlet Mapping Netzwerkprogrammierung 5
N Test Servlet funktioniert nicht Netzwerkprogrammierung 11
D Response in Java Servlet erzeugen Netzwerkprogrammierung 0
C Servlet erstellen klappt nicht Netzwerkprogrammierung 3
S HTTP Servlet als Instanzen im Programm starten Netzwerkprogrammierung 3
H Reponse vom Servlet leer Netzwerkprogrammierung 16
H Servlet Umlaute Netzwerkprogrammierung 20
R Socket SSL-Connect in Servlet - keystore wird nicht gefunden Netzwerkprogrammierung 2
F Kann Klasse nicht zu Servlet casten Netzwerkprogrammierung 5
S send riesige "Query" to servlet Netzwerkprogrammierung 7
S Servlet - Datei kann nicht gelöscht werden Netzwerkprogrammierung 12
N Servlet Response fehlerhaft Netzwerkprogrammierung 14
E RMI - Servlet Netzwerkprogrammierung 4
D Apache Mina und GWT Servlet Netzwerkprogrammierung 4
M Servlet als Login Netzwerkprogrammierung 20
B HTTP PDF Servlet download vom Server zum Client Netzwerkprogrammierung 3
B HTML meets Servlet Netzwerkprogrammierung 6
J ObjectOutputStream legt Servlet lahm Netzwerkprogrammierung 7
H Objekt von JSP an Servlet übergeben Netzwerkprogrammierung 4
S Bild-Datei von Servlet an Browser senden Netzwerkprogrammierung 8
S Servlet InputStream leer?! Netzwerkprogrammierung 14
H kleines Servlet Problem Netzwerkprogrammierung 2
N Servlet-RMI Kommunikation Netzwerkprogrammierung 8
D Verbindung über ein Servlet zu einem Server Netzwerkprogrammierung 4
Paule Connection Applet Servlet ohne Socket bzw RMI Netzwerkprogrammierung 2
R Problem mit Servlet ansprechen Netzwerkprogrammierung 7
B Servlet URL aufruf Netzwerkprogrammierung 4
R Servlet Komunikations Problem Netzwerkprogrammierung 4
D Einfache Applet-Servlet-Kommunikation Netzwerkprogrammierung 5
A JSP->Servlet->Programm (Ausführung) -> Servlet -&gt Netzwerkprogrammierung 2
M Servlet - Applet Kommunikation Netzwerkprogrammierung 3
R Java Applikation als Client ,Servlet als Server: Problem? Netzwerkprogrammierung 3
Z dateidownload vom servlet aus Netzwerkprogrammierung 4
T Servlet-Programmierung & Templates Netzwerkprogrammierung 4
T Einfacher Servlet-Server Netzwerkprogrammierung 8
A RMI Servlet Client Netzwerkprogrammierung 6
S object via post auf servlet send und weiter bearbeiten Netzwerkprogrammierung 11
K Applet - Servlet Kommunikation ohne Sockets Netzwerkprogrammierung 5
R applet servlet kommunikation Netzwerkprogrammierung 2
I Servlet ParameterChaos Netzwerkprogrammierung 2
C Applet <> Servlet Netzwerkprogrammierung 4
K RMI Kommunication zw. Servlet und EJB Netzwerkprogrammierung 7
L IText mit Servlets, funktioniert nicht Netzwerkprogrammierung 0

Ähnliche Java Themen

Neue Themen


Oben