OutputStream in FileInputStream?

beta20

Top Contributor
Hallo,

ich habe eine Frage:
Wie konvertiere ich einen java.io.OutputStream in einen java.io.FileInputStream ?

Folgenden Outoutstream habe ich:
java.io.OutputStream browserStream = response.getOutputStream();

-----------
Hier generell was ich machen möchte:
Code:
        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 + "://myurl.com" ;

            HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
            response.reset();
            response.setContentType("application/pdf");
            response.setHeader("Content-Disposition", "inline; filename=\"" + "pdfTemplate.pdf" + "\"");

            OutputStream browserStream = response.getOutputStream();

            PdfRendererBuilder builder = new PdfRendererBuilder();
            builder.useFastMode();
            builder.withUri(new URL(url).toString());
            builder.toStream(browserStream);
            builder.run();
        
            FileInputStream fis = new FileInputStream(new File("C:\\samplexxx.pdf"));
            pdfTemplate = new DefaultStreamedContent(fis, "application/pdf");

Ich möchte diese Klasse befüllen, sodass das PDF im Browser angezeigt werden kann
private org.primefaces.model.StreamedContent pdfTemplate;

Sprich die letzten 2 Zeilen passen nicht






Danke für jede Hilfe
 
Zuletzt bearbeitet:
Wie konvertiere ich einen java.io.OutputStream in einen java.io.FileInputStream ?
Was genau willst du machen?

Mit einem OutputStream schreibt man Dinge irgendwo hin, mit einem FileInputStream liest man Dinge aus einer Datei.
Kannst natürlich den OutputStream in eine Datei schreiben und die dann lesen, ich bezweifle aber dass du das willst...


Sprich die letzten 2 Zeilen passen nicht
Lass die mal weg. Mit den Zeilen vorher schreibst du das PDF doch schon in den OutputStream zum Browser.
 
Prinzipiell funktioniert das auch schon alles. Die PDF wird generiert (in einem neuen Tab vom Browser).
Ich möchte aber das PDF Dokument an "pdfTemplate" übergeben, sodass ich dann Primefaces nutzen kann und die PDF dort anzeigen lassen kann
 
grob ins blaue geraten: Die PDF nicht in den OutputStream schreiben. Stattdessen zB das PDF in einen PipedOutputStream schreiben und dem PDF-Template den entsprechenden PipedInputStream geben.

(allerdings sind so angezeigte PDFs grausam, ungefähr zwischen Pest und Cholera)
 
geht in meinem Fall schlecht.
Was ich mache:
- Ich habe ein HTML Designer, welches mir das Layout einer PDF erstellt
- Dieses Layout ist dann quasi mein Template, das ich später mit richtigen Werten befülle..

Irgendeine Idee?
 
Hm, vllt versteh ich auch nicht genau was du meinst.
Derzeit habe ich einen Button "Show PDF", der ohne den unteren Codezeilen von oben auch funktionert.
Und ich werde auf eine anderen Tab weitergeleitet, in welcher sich das erstellt PDF drin ist... Hätte es aber gerne auf der eigenen Seite in einem anderen HTML Tab und nicht in einem neuen Browser TAB

Was meinst du genau mit:
"Zerhaut nicht, aber die PDFs einfach durch den Browser anzeigen lassen funktioniert meist besser..."
 

Zurück
Oben