Konvertieren: Outputstream zu Inputstream

beta20

Top Contributor
Hallo,

ich möchte gerne einen Outputstream zu einem Inputstream konvertieren, damit ich das auf der Webseite anzeigen lassen kann (via Primefaces):

Java:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
private StreamedContent pdfTemplate;

public void createPDF() {



        LOGGER.info("START createPDF");
        FacesContext facesContext = FacesContext.getCurrentInstance();

        try {

            ExternalContext externalContext = facesContext.getExternalContext();
            String serverName = externalContext.getRequestServerName();
            String port = String.valueOf(externalContext.getRequestServerPort());
            String appName = externalContext.getRequestContextPath();
            String protocol = externalContext.getRequestScheme();
            String url = protocol + "://" + serverName + ":" + port + appName + "/common/documentEditorPreview.xhtml";

            ITextRenderer renderer = new ITextRenderer();

//            File file = new File(ConstantsStorage.ROOT_PATH_WITH_FILE_FOLDER + "/test.xhtml");
//            renderer.setDocument(file);
            renderer.setDocument(new URL(url).toString());
            renderer.layout();
            HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
            response.reset();
            response.setContentType("application/pdf");
            response.setHeader("Content-Disposition", "inline; filename=\"" + "pdfTemplate.pdf" + "\"");
            OutputStream browserStream = response.getOutputStream();

            // Primefaces
            InputStream inputStream =new ByteArrayInputStream(((ByteArrayOutputStream)browserStream).toByteArray());
            pdfTemplate = new DefaultStreamedContent(inputStream, "application/pdf");
            // Primefaces
            
            
            renderer.createPDF(browserStream);

        } catch (Exception e) {
            LOGGER.error(ExceptionUtils.getFullStackTrace(e));
            ErrorMessage.showErrorMessage();
        }
        facesContext.responseComplete();

        LOGGER.info("END createPDF");
    }


Bekomme aber diese Meldung:
io.undertow.servlet.spec.ServletOutputStreamImpl cannot be cast to java.io.ByteArrayOutputStream

Jemand eine Idee?
 

thecain

Top Contributor
Ich denke du suchst sowas:
Java:
OutputStream os = response.getOutputStream();
byte[] buffer = new byte[chunk];
int bytesRead = -1;

while ((bytesRead = base64InputStream.read(buffer)) != -1) {
    os.write(buffer, 0, bytesRead);
}
 

beta20

Top Contributor
siehe Code... ich erstelle aus einer HTML Seite eine PDF (Vorlageneditor)
Diese PDF wiederum will ich auf meiner HTML Seite als PDF ausgeben, via Stream und p:media von Primefaces
 

thecain

Top Contributor
Kannst du nicht in einen "eigenen" ByteArrayOutputStream schreiben statt den vom Servlet? Sonst kenne ich Primefaces und diesen Renderer leider zu wenig.
Aber rein intuitiv ist der Umweg über den Outputstream der Response unnötig
 

mrBrown

Super-Moderator
Mitarbeiter
Ohne Ahnung von Primefaces zu haben, klingt die Idee dahinter ziemlich falsch. HttpServletResponse ist die Antwort auf eine Anfrage eines Clients, der OutputStream davon das, was an den Client gesendet wird - daraus Serverseitig zu lesen (also genau an der Stelle, an der du auch reinschreibst), klingt ziemlich nach dem, was man nicht machen würde.


Die beiden Zeilen, die zwischen // Primefaces stehen, sind in dem Programm aber sowieso irrelevant, von daher: lösch sie einfach und zumindest der Fehler verschwindet ¯\_(ツ)_/¯
 

beta20

Top Contributor
Die beiden Zeilen, die zwischen // Primefaces stehen, sind in dem Programm aber sowieso irrelevant, von daher: lösch sie einfach und zumindest der Fehler verschwindet ¯\_(ツ)_/¯

Das ist es ja gerade. Ich benötige doch aber einen InputStream für Primefaces, damit ich die PDF anzeigen lassen kann....
Ja, das Programm läuft ohne die Primefaces zwischen // Primefaces, aber ich benötige eben diesen Inputstream...
 

mrBrown

Super-Moderator
Mitarbeiter
Wofür benötigst du denn einen InputStream von diesem OutputStream, den du selbst beschreibst (bzw in diesem Fall eben nicht, so dass der InputStream sowieso leer wäre)?

Und in deinem Beispiel brauchst du eben keinen, wofür brauchst du den denn?
 

beta20

Top Contributor
So wie ich das sehe, benötige ich für Primefaces einen Inputstream:
 

mrBrown

Super-Moderator
Mitarbeiter
Wenn du einen StreamedContent brauchst ja...aber doch nicht einen InputStream von einem OutputStream, den du grad zufällig irgendwo findest?!


Statt den Renderer direkt in den OutputStream schreiben zu lassen, schreib ein einen eigenen, extra geöffneten Stream, und für diesen kannst du dann den InputStream öffnen, so wie in dem verlinkten Artikel.
 

mihe7

Top Contributor
Ggf. funktioniert es auch so:
Java:
public StreamedContent getCreatedPdf() {
    FacesContext context = FacesContext.getCurrentInstance();

    if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
        return new DefaultStreamedContent();
    } else {
        createPdf(); // schreibt direkt in den OutputStream
        context.responseComplete(); 
        return null;
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B java.io.OutputStream zu java.io.InputStream konvertieren Java Basics - Anfänger-Themen 18
reibi OutputStream nach ByteOutputStream konvertieren Java Basics - Anfänger-Themen 21
J ArrayList in 2D-Array konvertieren. Java Basics - Anfänger-Themen 48
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
C Probleme mit Byte konvertieren nach int Java Basics - Anfänger-Themen 10
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
P String zu int konvertieren nur mit charAt Java Basics - Anfänger-Themen 8
B Milliarden konvertieren Java Basics - Anfänger-Themen 43
B InputStream (PDF) nach Image (PNG / JPG) konvertieren? Java Basics - Anfänger-Themen 2
M Zeichenkette konvertieren Java Basics - Anfänger-Themen 1
B ENUM to List<String> konvertieren Java Basics - Anfänger-Themen 2
L Konvertieren von String zu double?! Java Basics - Anfänger-Themen 6
MiMa String nach float Konvertieren Java Basics - Anfänger-Themen 23
B CSV zu XML konvertieren Java Basics - Anfänger-Themen 4
E Datentypen C# String zu Java String konvertieren Java Basics - Anfänger-Themen 3
I HTML Code in Bild (transparent) konvertieren Java Basics - Anfänger-Themen 0
E Inch zu Meilen, Yard, Feet und Inch konvertieren Java Basics - Anfänger-Themen 1
D Enumeration in String konvertieren und ausgeben Java Basics - Anfänger-Themen 1
B Methoden Dateien konvertieren Java Basics - Anfänger-Themen 3
A JAVA Fenster in ein PDF Konvertieren Java Basics - Anfänger-Themen 1
A int in ASCII Konvertieren Java Basics - Anfänger-Themen 6
A Fragmente eines Strings zu einzelnen int konvertieren Java Basics - Anfänger-Themen 3
P String in byte konvertieren, wie? Java Basics - Anfänger-Themen 4
G Objekte aus ArrayList in StringArray konvertieren?! Java Basics - Anfänger-Themen 13
A Bildgröße automatisch auf JLabel Größe konvertieren Java Basics - Anfänger-Themen 9
G String Array konvertieren in Integer Array? Java Basics - Anfänger-Themen 7
A Liste in Array konvertieren Java Basics - Anfänger-Themen 30
J BufferedReader in Integer konvertieren Java Basics - Anfänger-Themen 7
L Datentypen Object zu double zu int konvertieren Java Basics - Anfänger-Themen 6
N Datentypen Datum konvertieren mit kurzer Monatsangabe Java Basics - Anfänger-Themen 3
D Scala Iterable zu Java Collection konvertieren Java Basics - Anfänger-Themen 3
A int in String konvertieren Java Basics - Anfänger-Themen 4
T Fehler beim Konvertieren (String --> Float) Java Basics - Anfänger-Themen 5
F Sonderzeichen bei XML Serialisierung nicht konvertieren Java Basics - Anfänger-Themen 7
H String in anderen zeichensatz Konvertieren? Java Basics - Anfänger-Themen 6
H Monat von Datumausgabe in int konvertieren Java Basics - Anfänger-Themen 3
P 2D Array in 1D konvertieren?? Java Basics - Anfänger-Themen 28
turmaline String zu Date konvertieren -> Unparseable date Java Basics - Anfänger-Themen 5
C Datentypen int[][]-Array nach String[][]-Array konvertieren Java Basics - Anfänger-Themen 7
K StringWriter/String nach InputStream konvertieren Java Basics - Anfänger-Themen 3
D Collection Konvertieren Java Basics - Anfänger-Themen 7
J Konvertieren und Runden von double in int Java Basics - Anfänger-Themen 3
D OOP StringArray in doubleArray konvertieren Java Basics - Anfänger-Themen 13
H Hilfe String in lowercase konvertieren ohne api Java Basics - Anfänger-Themen 4
N String in Double konvertieren? Java Basics - Anfänger-Themen 9
K String von z.B. "\u003C" in Char konvertieren Java Basics - Anfänger-Themen 7
Z Wie Byte[] in einen String oder int konvertieren Java Basics - Anfänger-Themen 2
U von String auf int konvertieren Java Basics - Anfänger-Themen 7
G String in Date konvertieren Java Basics - Anfänger-Themen 6
S String in Datum und wieder in String konvertieren Java Basics - Anfänger-Themen 3
G char[] in byte[] konvertieren? Java Basics - Anfänger-Themen 2
G Jpanel -> BufferedImage konvertieren Java Basics - Anfänger-Themen 7
K Integer in Hex (Little Endian) konvertieren Java Basics - Anfänger-Themen 8
B String in Byte konvertieren Java Basics - Anfänger-Themen 19
T Integer zu Hexadezimal konvertieren Java Basics - Anfänger-Themen 6
G byte array in integer konvertieren Java Basics - Anfänger-Themen 15
N Daten konvertieren von xml in csv Java Basics - Anfänger-Themen 2
G Zeichenkette in char-Array konvertieren Java Basics - Anfänger-Themen 13
M HTML in PDF konvertieren? Java Basics - Anfänger-Themen 10
Q Zeitstempel in Datum konvertieren Java Basics - Anfänger-Themen 2
O Object in Float konvertieren Java Basics - Anfänger-Themen 2
M Int nach String konvertieren? Java Basics - Anfänger-Themen 11
R Konvertieren von Objektadressen Java Basics - Anfänger-Themen 2
S StringBuffer(Buchstabe) -> Double konvertieren Java Basics - Anfänger-Themen 6
D Object to int konvertieren Java Basics - Anfänger-Themen 5
F Boolescher Ausdruck (String) in boolean konvertieren Java Basics - Anfänger-Themen 5
W Java.mysql.date in GregorianCalender konvertieren Java Basics - Anfänger-Themen 2
G ArrayList aus Byte nach Char konvertieren Java Basics - Anfänger-Themen 3
A Referenztypen in primitive Konvertieren Java Basics - Anfänger-Themen 6
B String in int konvertieren Java Basics - Anfänger-Themen 9
B Java in VBA konvertieren? RETTET MEIN LEBEN Java Basics - Anfänger-Themen 14
M long in byte[] konvertieren und wieder zurück Java Basics - Anfänger-Themen 2
F Kann man den Namen einer Variable in ein String Konvertieren Java Basics - Anfänger-Themen 2
D BMP in JPEG konvertieren Java Basics - Anfänger-Themen 2
P jar File konvertieren Java Basics - Anfänger-Themen 2
G Datei konvertieren - aber wie Dateiformat einlesen Java Basics - Anfänger-Themen 15
G Pfad konvertieren Java Basics - Anfänger-Themen 9
L String in Array konvertieren Java Basics - Anfänger-Themen 5
S String in ein int wert konvertieren Java Basics - Anfänger-Themen 3
I Zahlen in Unicode konvertieren Java Basics - Anfänger-Themen 37
L von \ in / konvertieren Java Basics - Anfänger-Themen 8
G String in double konvertieren Java Basics - Anfänger-Themen 12
S Konvertieren von Gregorian Calendar nach Date ? Java Basics - Anfänger-Themen 6
H Konvertieren von String nach int Java Basics - Anfänger-Themen 9
P String zu int konvertieren ? Java Basics - Anfänger-Themen 10
S .class in .java konvertieren? Java Basics - Anfänger-Themen 5
G Char Array konvertieren Java Basics - Anfänger-Themen 7
S MBD zu CSV konvertieren Java Basics - Anfänger-Themen 2
G Kommata in Punkten konvertieren Java Basics - Anfänger-Themen 5
F String in Byte[] konvertieren Java Basics - Anfänger-Themen 2
M String in Integer konvertieren Java Basics - Anfänger-Themen 4
T int konvertieren zu double Java Basics - Anfänger-Themen 5
F Double nach Int konvertieren ? Java Basics - Anfänger-Themen 1
K Warum wird hier nur etwas in eine txt Datei geschrieben und nicht in alle drei (InputStream/OutputStream/Reader/Writer) Java Basics - Anfänger-Themen 1
berserkerdq2 Wo ist der SInn, dass man den Stream, den ich zum Schreiben nutze, outputstream nenne? Java Basics - Anfänger-Themen 5
berserkerdq2 inputstream und bufferedwirter /outputstream und bufferedwriter Java Basics - Anfänger-Themen 9
J Nachricht an OutputStream Java Basics - Anfänger-Themen 2
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
B InputStream / OutputStream / PipedOutputStream und managedExecutorService Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben