Hallo,
ich möchte gerne einen Outputstream zu einem Inputstream konvertieren, damit ich das auf der Webseite anzeigen lassen kann (via Primefaces):
Bekomme aber diese Meldung:
io.undertow.servlet.spec.ServletOutputStreamImpl cannot be cast to java.io.ByteArrayOutputStream
Jemand eine Idee?
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?