PDF in Browser anzeigen lassen
Sven
- java
0 Felix Riesterer0 Sven
Hallo!
Ich versuche grade eine PDF im Browser öffnen zu lassen. Eine statische Verlinkung ist nicht möglich, da das PDF sozusagen dynamisch ist...
Ich Streame die PDF in den Browser der zeigt mir aber den Code an (intepretiert es also nicht):
Also: %PDF-1.4 %Ç 5 0 obj <> stream x...
Mein Code sieht so aus:
``
try {
OutputStream os = response.getOutputStream();
FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[1024*1024]; //1k buffer
int bytesRead = 0;
while ((bytesRead = fis.read(buffer)) > 0) {
os.write(buffer, 0, bytesRead);
}
os.flush();
fis.close();
StringBuilder type = new StringBuilder("attachment; filename=");
type.append(file.getName());
response.setContentLength((int) file.length());
response.setContentType("application/pdf");
response.setHeader("Content-Disposition", type.toString());
``
Denke mal es fehlt nur eine richtige Einstellung bei der response. Wäre super, wenn mir jemand helfen kann.
Lieber Sven,
vermutlich sendet Dein Script keinen entsprechenden MIME-Typ im Header mit, sodass der Browser die Daten als text/html interpretiert...
Liebe Grüße aus Ellwangen,
Felix Riesterer.
Hallo!
Das Problem ist mittlerweile gefixed... Du hattest recht damit.
Allerdings bekomme ich eine Exception, da ich nicht 2x auf die Response zugreifen darf...
(Also hier: OutputStream os = response.getOutputStream();)
Irgendwie hab ich da ganz schön Schwierigkeiten.
Dachte mir, ich realisier das anders, dass ich direkt in der JSP verlinke..
<%@ page language="java" contentType="application/pdf"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@ page language="java" import="java.io.*"%>
<html>
<head>
<%
//get the book object from the request
String strLabelNam;
try {
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
strLabelNam = request.getAttribute("FileName").toString();
out.println("<meta http-equiv=\"refresh\" target=\"blank\" content=\"2; URL=http://localhost:8080/Projekt/PDF_Printer_1_28-07-2008_15-41-34_1838998991.pdf>");
} catch (Exception e) {
strLabelNam = "";
}
%>
<title>Test</title>
</head>
Hier testweise hart codiert...
Allerdings scheitert auch das! Von Adobe poppt die Fehlermeldung "Datei beginnt nicht mit %PDF-" hoch. Das tut die PDF-Datei aber ;)
Hab jetzt schon ewig mit den Mimetypes rum gespielt. Ich hab keine Ahnung woran das liegen kann. Hab gelesen, dass IE6 offenbar Probleme machen sollte. Ich benutze aber Firefox3.
Hat irgendjemand ne Idee? Für Hilfe wäre ich sehr dankbar!