# PDF in JSF einbetten mit dynamischen 'src' Attribut



## TFalke (21. Jul 2011)

Hallo liebes Forum,

ich möchte auf meiner JSF Seite eine PDF mit Iframe  anzeigen lassen.
Das Problem  ist allerdings, dass ich das src Attribut nicht dynamisch  füllen kann.

Hab auch schon versucht mir das mit <hutputText> so zusammeln zu basteln, dass der richtige Inhalt geladen wird, nur renderd der Browser dann leider  nicht das iframe fenster, sondern gibt alles als plain text aus...

Habt ihr eine Idee?

So sieht  mein  Beispiel  aus:
<iframe src="#{publicBean.pdfFilepath }" style="width:850px;height:500px"></iframe> 

Hoffe,  ihr könnt mir helfen


----------



## maki (21. Jul 2011)

*verschoben*


----------



## waldek87 (21. Jul 2011)

Hast du das schon mal mit dem 

```
<f:verbatim></f:verbatim>
```
Tag versucht?


----------



## TFalke (21. Jul 2011)

Danke  für die Antwort.
Ja mit dem 
	
	
	
	





```
<f:verbatim>
```
  hab ich das auch schon versucht gehabt... hat leider nicht geklappt.

Nach ein bisschen  Suchen  habe  ich noch herausgefunden, dass  man auf die Bean  via '$' zugreifen kann(bei HTML Tags), falls  die schon initialisiert wurde.
Das füllen des src Attributes  klappt jetzt.

Leider wird PDF, die ich in 'WebContent/tmp' zwischenspeichere erst gefunden, wenn der Server neugestartet wird.
Woran liegt das? Die Datei liegt aber auf der Festplatte....

Kann ich das Tmp Verzeichnis auch auslagern? Wie kann ich das konfigurieren?


----------



## TFalke (28. Jul 2011)

Nur, um die Sache noch abzuschließen. Und vielleicht hilft es ja jemandem noch....

Die PDF sende ich als byte[] an den Client mit.

```
public void viewPdf(byte[] pdf, String filename) throws IOException {
		FacesContext faces = FacesContext.getCurrentInstance();
		HttpServletResponse response = (HttpServletResponse) faces.getExternalContext().getResponse();
		response.setContentType("application/pdf");
		response.setContentLength(pdf.length);
		response.setHeader("Content-disposition","inline; filename=\""+filename+"\"");
		ServletOutputStream out = response.getOutputStream();
		out.write(pdf);
		faces.responseComplete();
	}
```

Durch das 'inline'  bei 'Content-disposition', wird  die Datei nicht zum Download angeboten, sondern direkt im Browser angezeigt.
Da ich meine JSF sowieso mit iframe auf meiner Website einbinde, funktioniert das auch erstmal ganz gut. Nur ein "Zurück" - Link vermisse ich noch 
Wenn da jemand  einen Tipp hat, immer her damit 
Ansonsten kann das Thema hier geschlossen  werden.

Hoffe geholfen zu haben^^


----------

