G
Guest
Gast
Guten Morgen,
ich habe bereits mit folgender Implementierung versucht ein Dateidownload eines PDFs zu bewerkstelligen, was leider erfolglos blieb:
Per EJB-Stateless-Bean wird also ein ByteArrayOutputStream erzeugt, welcher beim Debugging auch den Aufbau des PDFs durchläuft.
Der Downloadlink:
Die Datei kann auch heruntergeladen werden. Allerdings erscheint mir beim Öffnen des PDFs die Meldung, dass die Datei beschädigt sei.
Die Größe der Datei beträgt dabei 1,58 KB anstatt wie vorgesehen 3 KB.
Kann mir eventuell einen Hinweis geben, wo der Ursprung des Problems ist?
ich habe bereits mit folgender Implementierung versucht ein Dateidownload eines PDFs zu bewerkstelligen, was leider erfolglos blieb:
Code:
public void downloadLink(ActionEvent e)
{
FacesContext context = FacesContext.getCurrentInstance();
HttpServletResponse response = (HttpServletResponse)context.getExternalContext(). getResponse();
File file = new File("MyPDF.pdf");
StringBuilder type = new StringBuilder("attachment; filename=");
type.append(file.getName());
response.setContentLength((int) file.length());
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", type.toString());
try {
InitialContext ctx = new InitialContext();
PDFRemote pdfGenerator = (DienstRemote) ctx
.lookup("URL zur EJB Bean");
OutputStream os = response.getOutputStream();
ByteArrayOutputStream bos = pdfGenerator.generatePDF();
bos.writeTo(os);
os.flush();
}catch(NamingException e1)
{
e1.printStackTrace();
}
catch (FileNotFoundException e2) {
e2.printStackTrace();
} catch (IOException e3) {
e3.printStackTrace();
}
}
Per EJB-Stateless-Bean wird also ein ByteArrayOutputStream erzeugt, welcher beim Debugging auch den Aufbau des PDFs durchläuft.
Der Downloadlink:
Code:
<h:commandLink value="PDFDownload" style="text-decoration: none;"
actionListener="#{pdfHandler.downloadLink}" action="download" />
Die Größe der Datei beträgt dabei 1,58 KB anstatt wie vorgesehen 3 KB.
Kann mir eventuell einen Hinweis geben, wo der Ursprung des Problems ist?