# Servlet ausführen



## neela (30. Mai 2011)

Hallo

kann mir jmd verraten was ich falsch gemacht habe. 

Wenn ich mein Servlet im Browser aufrufe erscheint ein Speicherdialog. 
Habt ihr eine Idee was mein Fehler sein könnte. 

Im folgenden is der Code von meim Servlet dargestellt 
	
	
	
	





```
package nutzerschnittstelle;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Start
 */
public class Start extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public Start() {
        // TODO Auto-generated constructor stub
    
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//response.setContentType("application/pdf");
		// TODO Auto-generated method stub
		fachlogik.Datenbank.setRequest(request, response);
		//System.out.println(new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date()));
		fachlogik.Xml.xml_auslesen();
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
	
	}

}
```
Die Klasse welche aufgerufen wird Wertet eine XML aus einer DB aus und am ende soll eine PDF im Browser angezeigt werden als ich es im Lokalhost versucht habe hat auch alles geklappt

Auf folgender Weise rufe ich mein Servlet auf: "http://lvwebdev.lvsn.de/boris/print/Start

Es währe nett von euch wenn Ihr mir auf die Sprünge helfen könntet.

Vielen Dank


----------



## Gast2 (30. Mai 2011)

Das kommt vor wenn z.b. der Content-Type deiner Seite nicht korrekt ist.


----------



## neela (30. Mai 2011)

Ich bin grade Ratlos 
an welcher Stelle hab ich da den Fehler ausgelöst ?


----------



## ARadauer (30. Mai 2011)

poste mal fachlogik.. ich hoffe das ist nicht alles static, ich sehe keine instanz...


----------



## neela (30. Mai 2011)

Auf diese Weise werte ich meine XML Datei aus die ich aus db lese 

```
package fachlogik;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.Iterator;
import java.util.List;

import org.jdom.*;
import org.jdom.input.SAXBuilder;

/**
 * Auswertung der XML-Datei (Schnittstelle)
 * 
 */
public class Xml {
	String xBwNr;
	String xFlst;

	/**
	 * Elemente welche für die Erstellung der PDF wichtig sind werden aus der
	 * XML-Datei herausgefiltert Es erfolgt eine Unterscheidung ob eine Karte
	 * bzw. eine Sachdatenauskunft gewünscht ist. <br>
	 * Anhand dieser Unterscheidung wird die entsprechende Methode für die
	 * Erzeugung der PDf aufgerufen. <br>
	 * Es erfolgt keine Rückgabe
	 * 
	 * @exception JDOMException
	 *                wenn Fehler bei der Auswertung der XML-Datei auftreten. <br>
	 *                Bsp. Unterelement nicht vorhanden
	 * 
	 * @exception IOException
	 *                Ein Eingabe- Ausgabefehler führt zu dieser Exception. <br>
	 *                Bsp. Entsprechende Datei kann nicht gefunden werden
	 */

	public static void xml_auslesen() {// Später von URL

		Document doc;
		Datenbank.template("Xml");
		//File xmlfile = new File(
			//	"C:\\Profiles\\lv14hofm\\Desktop\\boris_drucktest.xml");
		
		File xmlfile =Datenbank.template("Xml");
		try {
			doc = new SAXBuilder().build(xmlfile);
			// Wurzelelement erhalten
			Element root = doc.getRootElement();
			// Wichtige Daten aus XML herauslesen
			String nutzer = root.getChild("metadaten").getChildTextNormalize(
					"nutzer");
			String passwort = root.getChild("metadaten").getChildTextNormalize(
					"passwort");
			String art = root.getChild("metadaten")
					.getChildTextNormalize("art");
			String farbe = root.getChild("metadaten").getChildTextNormalize(
					"farbe");
			String stichtag = root.getChild("verordnung")
					.getChildTextNormalize("stichtag");
			String verordnung = root.getChild("verordnung")
					.getChildTextNormalize("nameRechtsverordnung");
			String fundstelle = root.getChild("verordnung")
					.getChildTextNormalize("fundstelle");
			String aufnahmeAussschuss = root.getChild("aufnahmeausschuss")
					.getChildTextNormalize("name");
			String strAufnahmeAusschuss = root.getChild("aufnahmeausschuss")
					.getChildTextNormalize("strasse");
			String hnrAufnahmeAusschuss = root.getChild("aufnahmeausschuss")
					.getChildTextNormalize("hausnummer");
			strAufnahmeAusschuss = strAufnahmeAusschuss + " "
					+ hnrAufnahmeAusschuss;
			String plzAufnahmeAusschuss = root.getChild("aufnahmeausschuss")
					.getChildTextNormalize("postleitzahl");
			String ortAufnahmeAusschuss = root.getChild("aufnahmeausschuss")
					.getChildTextNormalize("ort");
			String plzOrt = plzAufnahmeAusschuss + " " + ortAufnahmeAusschuss;
			String gemeinde = root.getChild("lage").getChildTextNormalize(
					"gemeinde");
			String gemarkung = root.getChild("lage").getChildTextNormalize(
					"gemarkung");
			// Flurstuecke herausfiltern
			List lageliste = root.getChild("lage").getChildren();
			Iterator lageit = lageliste.iterator();
			String flurstueck = null;
			/**
			 * ermittelt alle Flurstücke die zum dem Bodenrichtwert gehören
			 */
			while (lageit.hasNext()) {
				Element lagechild = (Element) lageit.next();
				if (lagechild.getName().equals("flurstueck")) {
					if (flurstueck == null) {
						flurstueck = lagechild.getTextNormalize();
					} else
						flurstueck = flurstueck + ", "
								+ lagechild.getTextNormalize();
				}
			}
			String bwNr = root.getChild("bodenrichtwert")
					.getChildTextNormalize("nummer");
			String erstellungAusschuss = root.getChild("abgabeausschuss")
					.getChildTextNormalize("name");
			String plzErstellungsAusschuss = root.getChild("abgabeausschuss")
					.getChildTextNormalize("plz");
			String ortErstellungsAusschuss = root.getChild("abgabeausschuss")
					.getChildTextNormalize("ort");
			String strErstellungsAussschuss = root.getChild("abgabeausschuss")
					.getChildTextNormalize("strasse");
			String nummerErstellungsAusschuss = root
					.getChild("abgabeausschuss").getChildTextNormalize(
							"hausnummer");
			String plzOrtStrHnr = plzErstellungsAusschuss + " "
					+ ortErstellungsAusschuss + " " + strErstellungsAussschuss
					+ " " + nummerErstellungsAusschuss;

			if (art.equals("Map")) {
				/*
				 * es ist eine Kartenausgabe gewünscht nötige Daten
				 * herausfiltern
				 */
				String format = root.getChild("map").getChildTextNormalize(
						"format");
				String massstab = root.getChild("map").getChildTextNormalize(
						"massstab");
				String boundingbox = root.getChild("map")
						.getChildTextNormalize("boundingbox");
				String kartengrundlage = root.getChild("map")
						.getChildTextNormalize("kartengrundlage");

				// entsprechende Pdf erzeugen
				fachlogik.Pdf.creat_pdf(aufnahmeAussschuss,
						strAufnahmeAusschuss, plzOrt, ortAufnahmeAusschuss,
						boundingbox, kartengrundlage, massstab, gemeinde,
						gemarkung, flurstueck, bwNr, erstellungAusschuss,
						ortErstellungsAusschuss, plzOrtStrHnr, verordnung,
						fundstelle, stichtag, format, farbe);
			} else {
				/*
				 * ein Sachdatenauszug ist gewünscht nötige Daten herausfiltern
				 */
				String ortsteil = root.getChild("lage").getChildTextNormalize(
						"ortsteil");
				String str = root.getChild("lage").getChildTextNormalize(
						"strasse");
				String hnr = root.getChild("lage").getChildTextNormalize(
						"hausnummer");
				String bwert = root.getChild("bodenrichtwert")
						.getChildTextNormalize("wert");
				String entw = "", nuta = "", beit = "", bauw = "", gez = "", gfz = "", grz = "", bmz = "", flae = "", gtie = "", gbrei = "", verg = "", verf = "", bod = "", acza = "", grza = "", aufw = "", weer = "";
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("entwicklungszustand")) != null)
					entw = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("entwicklungszustand");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("nutzungsart")) != null)
					nuta = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("nutzungsart");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("beitragsrechtlicher_zustand")) != null)
					beit = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize(
									"beitragsrechtlicher_zustand");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("bauweise")) != null)
					bauw = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("bauweise");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("geschosszahl")) != null)
					gez = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("geschosszahl");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("geschossflaechenzahl")) != null)
					gfz = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("geschossflaechenzahl");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("grundflaechenzahl")) != null)
					grz = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("grundflaechenzahl");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("baumassenzahl")) != null)
					bmz = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("baumassenzahl");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChild("grundstueck")
						.getChildTextNormalize("flaeche")) != null)
					flae = root.getChild("bodenrichtwert").getChild("details")
							.getChild("grundstueck").getChildTextNormalize(
									"flaeche");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChild("grundstueck").getChildTextNormalize("tiefe")) != null)
					gtie = root.getChild("bodenrichtwert").getChild("details")
							.getChild("grundstueck").getChildTextNormalize(
									"tiefe");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChild("grundstueck")
						.getChildTextNormalize("breite")) != null)
					gbrei = root.getChild("bodenrichtwert").getChild("details")
							.getChild("grundstueck").getChildTextNormalize(
									"breite");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("verfahrensgrund")) != null)
					verg = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("verfahrensgrund");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("verfahrenszustand")) != null)
					verf = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("verfahrenszustand");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("bodenart")) != null)
					bod = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("bodenart");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("ackerzahl")) != null)
					acza = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("ackerzahl");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("gruenlandzahl")) != null)
					  grza = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("gruenlandzahl");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("aufwuchs")) != null)
					aufw = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("aufwuchs");
				if ((root.getChild("bodenrichtwert").getChild("details")
						.getChildTextNormalize("wegerschliessung")) != null)
					weer = root.getChild("bodenrichtwert").getChild("details")
							.getChildTextNormalize("wegerschliessung");

				// entsprechende PDF erzeugen
				fachlogik.Pdf.creat_pdf(aufnahmeAussschuss,
						strAufnahmeAusschuss, plzOrt, ortAufnahmeAusschuss,
						ortsteil, gemeinde, gemarkung, flurstueck, str, hnr,
						bwNr, stichtag, bwert, entw, nuta, beit, bauw, gez,
						gfz, grz, bmz, flae, gtie, gbrei, verg, verf, bod,
						acza, grza, aufw, weer, erstellungAusschuss,
						ortErstellungsAusschuss, plzOrtStrHnr, verordnung,
						fundstelle, stichtag, farbe);
			}

		} catch (JDOMException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
```

und mit dieser Klasse wird die PDF erzeugt 

```
package fachlogik;


import java.awt.Image;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.StringTokenizer;
import javax.imageio.ImageIO;
import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.JasperRunManager;

import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfCopyFields;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter;

/**
 * Diese Klasse wird zum generieren der PDF`s verwendet
 */
public class Pdf {
	/**
	 * Diese HashMap enthält alle Variablen, die für das Erstellen der PDF
	 * notwendig sind.
	 */
	
	static HashMap parameter = new HashMap
();
	//static HashMap<String, Object> parameter = new HashMap<String, Object>();
	static JasperReport jasperReport;
	static JasperPrint jPrint;
	static Image wappen;
	 static byte[] pdfKompl_byte = null;

	// Methode für Erstellung des Sachdatenauzuges
	/**
	 * Mit Hilfe dieser Methode wird die PDF für den Kartendruck erzeugt. <br>
	 * Zu beginn werden die entsprechenden Parameter der HashMap übergeben.
	 * Anschliessend werden die einzelenen PDF erzeugt und in einem
	 * Tempverzeichnis abgespeichert. <br>
	 * Diese erzeugten PDF´s werden zu einer zusammengefügt und letztendlich im
	 * Browser anzeigt
	 */ 
	public static void creat_pdf(String aufnahmeausschuss, String aufnahmestr,
			String plzort, String aufnahmeort, String ortsteil, String gmd,
			String gmk, String flst, String str, String nr, String bwNr,
			String stag, String bwert, String entw, String nuta, String beit,
			String bauw, String gez, String gfz, String grz, String bmz,
			String flae, String gtie, String gbrei, String verg, String verf,
			String bod, String acza, String grza, String aufw, String weer,
			String erstellungsausschuss, String erstellungsort,
			String plzOrtStrNr, String verordnung, String fundstelle,
			String stichtag, String farbe) {

		String name;
		if (aufnahmeausschuss.indexOf("Kreis")>=0)
				//contains("Kreis"))
			name = " der Kreisfreien Stadt " + aufnahmeort + " ";
			// ggf Ort über
		else
			name = " im Landkreis " + aufnahmeausschuss + " ";

		// füllen der Hashmap
		// Daten des Aufnahmeausschuss der hashmap hinzufügen
		parameter.put("aAufnahmeAusschuss", name);
		parameter.put("aStrAufnahmeAusschuss", aufnahmestr);
		parameter.put("aOrtAufnahmeAusschuss", plzort);

		if (erstellungsausschuss.indexOf("Kreis")>=0)
				//contains("Kreis"))
			name = "Gutachterausschuss der Kreisfreien Stadt " + erstellungsort;
		else {
			if (erstellungsausschuss.indexOf("Oberer")>=0){
					//contains("Oberer")) {
				name = "Oberer Gutachterausschuss Staatsbetrieb Geobasisinformation und Vermessung Sachsen";
			} else
				name = "Gutachterausschuss des Landkreis "
						+ erstellungsausschuss;
		}
		// Daten des Erstellungsausschuss der Hashmap hinzufügen
		parameter.put("aErstellungsAusschuss", name);
		parameter.put("aPLZOrtStrNrErstellungsAusschuss", plzOrtStrNr);

		// Daten für die Sachdatenauskunft der Hashmap hinzufügen
		parameter.put("aOrtsteil", ortsteil);
		parameter.put("aStr", str);
		parameter.put("aHnr", nr);
		parameter.put("aGmd", gmd);
		parameter.put("aGmk", gmk);
		parameter.put("aFlst", flst);
		parameter.put("aBwNr", bwNr);
		parameter.put("aSTag", stag);
		parameter.put("aBwert", bwert + "  ");
		parameter.put("aEntw", entw);
		parameter.put("aNuta", nuta);
		parameter.put("aBeit", beit);
		parameter.put("aBauw", bauw);
		parameter.put("aGez", gez);
		parameter.put("aGfz", gfz);
		parameter.put("aGrz", grz);
		parameter.put("aBmz", bmz);
		parameter.put("aFlae", flae);
		parameter.put("aGtie", gtie + " m");
		parameter.put("aGbrei", gbrei + " m ");
		parameter.put("aVerg", verg);
		parameter.put("aVerf", verf);
		parameter.put("aBod", bod);
		parameter.put("aAcza", acza);
		parameter.put("aGrza", grz);
		parameter.put("aAufw", aufw);
		parameter.put("aWeer", weer);

		// wappenbild hinzufügen
		Image wappen = null;
		try {
			if (farbe.indexOf("w")>=0){
					
					//contains("w")) {
				// scharzWeiss druck
				wappen = ImageIO.read(Datenbank.template("wappen_sw"));
			} else {
				// farbiger Druck
				wappen = ImageIO.read(Datenbank.template("wappen_bunt"));
			}
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		parameter.put("aWappen", wappen);

		// Daten für Bodenrichtwert Erlaeuterung der Hashmap hinzufügen
		String fund = verordnung + " " + fundstelle + " ermittelt.";
		parameter.put("aVerordnungFundstelleErmitteln.", fund);

		// Pdf erzeugen
		try {
			Document document = new Document();
			 // ByteArrayOutputStream erzeugen
			 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
			 PdfWriter.getInstance(document, baos);
			 
			String file = (Datenbank.template("Sachdaten")).toString();
			jasperReport = JasperCompileManager.compileReport(file);
			jPrint = JasperFillManager.fillReport(jasperReport, parameter,
					new JREmptyDataSource());

			// Pdf wird in Hauptspeicher geschrieben
		pdfKompl_byte = JasperExportManager.exportReportToPdf(jPrint);
			
			
			HttpServletResponse response = Datenbank.getResponse();

			document.close();
			response.setContentType("application/pdf");
			response.setContentLength(baos.size());
			// Pdf wird im Browser angezeigt
			ServletOutputStream servletOutputStream = response
					.getOutputStream();
		baos.writeTo(servletOutputStream);
			servletOutputStream.write(pdfKompl_byte, 0, pdfKompl_byte.length);
			servletOutputStream.flush();

			System.out.println(new SimpleDateFormat("dd.MM.yyyy HH:mm:ss")
					.format(new Date()));
	
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * Mit Hilfe dieser Methode wird die PDF für den Sachdatenabgabe erzeugt. <br>
	 * Zu beginn werden die entsprechenden Parameter der HashMapübergeben.
	 * Anschliessend wird die PDF erzeugt undim Browser darstellt.
	 */
	public static void creat_pdf(String aufnahmeausschuss, String aufnahmestr,
			String plzort, String aufnahmeort, String bbox,
			String kartengrundlage, String massstab, String gmd, String gmk,
			String flst, String bwNr, String erstellungsausschuss,
			String erstellungsort, String plzOrtStrNr, String verordnung,
			String fundstelle, String stichtag, String format, String farbe) {
		String name = null;
		
		// byte[]pdf2_byte=null;
		// byte[]pdf3_byte =null;
		// Bezeichnung des AufnahmeAusschuss erstellen
		if (aufnahmeausschuss.indexOf("Kreis")>=0)
				
				//contains("Kreis"))
			name = " der Kreisfreien Stadt " + aufnahmeort + " ";// ggf Ort über
		else
			name = " im Landkreis " + aufnahmeausschuss + " ";

		// Daten des AufnahmeAusschuss der Hashmap hinzufügen
		parameter.put("aAufnahmeAusschuss", name);
		parameter.put("aStrAufnahmeAusschuss", aufnahmestr);
		parameter.put("aOrtAufnahmeAusschuss", plzort);

		// Bezeichnung des ErstellungsAusschuss erstellen
		if (erstellungsausschuss.indexOf("Kreis")>=0)
				//contains("Kreis"))
			name = "Gutachterausschuss der Kreisfreien Stadt " + erstellungsort
					+ " ";
		else {
			if (erstellungsausschuss.indexOf("Oberer")>=0){
					//contains("Oberer")) {
				name = " "
						+ "Oberer Gutachterausschuss Staatsbetrieb Geobasisinformation und Vermessung Sachsen";// +
				// "Staatsbetrieb Geobasisinformation und Vermessung Sachsen (GeoSN)Oberer Gutachterausschuss";
			} else
				name = "Gutachterausschuss des Landkreis "
						+ erstellungsausschuss + " ";
		}

		// Daten des Erstellungsausschuss der Hashmap hinzufügen
		parameter.put("aErstellungsAusschuss", name);
		parameter.put("aPLZOrtStrNrErstellungsAusschuss", plzOrtStrNr);

		// Daten für Lagebeschreiben etc. der Hashmap hinzufügen
		parameter.put("aGmd", gmd);
		parameter.put("aGmk", gmk);
		parameter.put("aFlst", flst);
		parameter.put("aBwNr", bwNr);
		// Daten fuer die Kartenauskunft der Hashmap hinzufügen
		parameter.put("aMaßstab", massstab);
		parameter.put("aKartengrundlage", kartengrundlage);
		// zerlegen der BoundingBox um Koordinaten für Rahmenbeschriftung
		// zuerhalten
		StringTokenizer tokenizer;
		tokenizer = new StringTokenizer(bbox, ",");
		String rw1 = tokenizer.nextToken();
		String hw1 = tokenizer.nextToken();
		String rw2 = tokenizer.nextToken();
		String hw2 = tokenizer.nextToken();
		parameter.put("aRw1", rw1);
		parameter.put("aHw1", hw1);
		parameter.put("aRw2", rw2);
		parameter.put("aHw2", hw2);

		String fund = verordnung + " " + fundstelle + " mit Stichtag zum "
				+ stichtag + " ermittelt.";
		parameter.put(
				"aVerordnungFundstelleErmittelnMitStichtagzum..ermittelt.",
				fund);

		// wappen hinzufügen
		try {
			if (farbe.indexOf("w")>=0){
					//contains("w")) {
				// schwarzWeiss druck ist gewünscht
				wappen = ImageIO.read(Datenbank.template("wappen_sw"));
			} else {
				// Farbdruck ist gewünscht
				wappen = ImageIO.read(Datenbank.template("wappen_bunt"));
			}
			parameter.put("aWappen", wappen);

			tokenizer = new StringTokenizer(massstab, ":");
			String massstabszahl_string = tokenizer.nextToken();
			massstabszahl_string = tokenizer.nextToken();

			Image massstabsleiste = ImageIO.read(Datenbank
					.template(massstabszahl_string));
			parameter.put("aMassstabsBild", massstabsleiste);

			// für eine schreibart entscheiden -- später nach fertigstellung der
			// XML
			
			format = format.replaceAll("a", "");
			//format = format.replace("a", "");
			format = format.replaceAll("A", "");

			// Entsprechende Mapvorlage laden
			int formatzahl = Integer.parseInt(format);
			String template = "";
			switch (formatzahl) {
			case 0: {
				template = (Datenbank.template("A0")).toString();
			}
				break;
			case 1: {
				template = (Datenbank.template("A1")).toString();
			}
				break;
			case 2: {
				template = (Datenbank.template("A2")).toString();
			}
				break;
			case 3: {
				template = (Datenbank.template("A3")).toString();
			}
				break;
			case 4: {
				template = (Datenbank.template("A4")).toString();
			}
				break;
			}

			jasperReport = JasperCompileManager.compileReport(template);
			jPrint = JasperFillManager.fillReport(jasperReport, parameter,
				new JREmptyDataSource());

			// Speicherung als Temporäre Datei
			pdfKompl_byte = JasperExportManager.exportReportToPdf(jPrint);
			/*
			 * // Anhang erzeugen erst einmal heraus genommen wenn die richtige
			 * pdf vorhanden ist wird wieder ergänzt
			 * 
			 * jasperReport = JasperCompileManager
			 * .compileReport("D:\\LV14hofm\\Erlauterung_map.jrxml");
			 * 
			 * jPrint = JasperFillManager.fillReport(jasperReport, parameter,
			 * new JREmptyDataSource());
			 * 
			 * pdf2_byte = JasperExportManager.exportReportToPdf(jPrint);
			 * 
			 * PdfReader reader3 = null;
			 * 
			 * if (farbe.equals("bunt")) { jasperReport = JasperCompileManager
			 * .compileReport("D:\\LV14hofm\\legende_bunt.jrxml");
			 * 
			 * jPrint = JasperFillManager.fillReport(jasperReport, parameter,
			 * new JREmptyDataSource());
			 * 
			 * pdf3_byte= JasperExportManager.exportReportToPdf(jPrint);
			 * 
			 * 
			 * reader3 = new PdfReader(pdf3_byte); } else { jasperReport =
			 * JasperCompileManager
			 * .compileReport("D:\\LV14hofm\\legende_sw.jrxml");
			 * 
			 * jPrint = JasperFillManager.fillReport(jasperReport, parameter,
			 * new JREmptyDataSource());
			 * 
			 * pdf2_byte = JasperExportManager.exportReportToPdf(jPrint);
			 * 
			 * reader3 = new PdfReader(pdf3_byte); }
			 */
			// Pdf´s zusammenfuegen
			PdfReader reader1 = new PdfReader(pdfKompl_byte);
			// PdfReader reader2 = new PdfReader(
			// pdf2_byte);

			HttpServletResponse response = Datenbank.getResponse();
			ServletOutputStream servletOutputStream = response
					.getOutputStream();

			PdfCopyFields copy = new PdfCopyFields(servletOutputStream);

			copy.addDocument(reader1);
			// copy.addDocument(reader2);
			// copy.addDocument(reader3);
			copy.close();

			servletOutputStream.write(pdfKompl_byte, 0, pdfKompl_byte.length);
			servletOutputStream.flush();

		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
```

vielen Dank für die Hilfe


----------



## maki (30. Mai 2011)

*verschoben*


----------



## brauner1990 (30. Mai 2011)

Ja, aber welchen ContentType hast du den? Und was bekommst du den wenn du einen Download startest?


----------



## neela (30. Mai 2011)

ich möchte das die entsprechende PDF im Browser direkt angezeigt wird

wenn ich den request absetzte bekomme ich den speicher dialog wo der Dateityp unbekannt ist und die Größe auch 0 kb ist 
???:L


bzw im Explorer  kommt eine meldung das adope die entsprechende Datei nicht öffnen kann (falsches Format, fehlerhaft etc.)


und im Opera Mozi erfolgt der Speicherdialog


PS: ich trottel  hatte oben 2 mal den gleichen quelltext drin ist nun korrigiert  Sry


----------



## Gelöschtes Mitglied 5909 (30. Mai 2011)

```
response.setContentType("application/pdf");
```


----------



## neela (30. Mai 2011)

diese Zeile hab ich doch bereits in zeile 171 stehen 
oder ist sie da falsch platziert?:bahnhof:


----------



## maki (30. Mai 2011)

> bzw im Explorer kommt eine meldung das adope die entsprechende Datei nicht öffnen kann (falsches Format, fehlerhaft etc.)
> 
> 
> und im Opera Mozi erfolgt der Speicherdialog


Gretchenfrage: Wie steht es denn nun mit dem erzeugten PDF?
Schrott oder nicht?


----------



## Gelöschtes Mitglied 5909 (30. Mai 2011)

ah sorry, aber ich hab mir den schönen code nicht antun wollen


----------



## neela (30. Mai 2011)

na wenn ich es in eclipse testen bekomme mein wunderschöne pdf

aber wenn ich mein ear dann hochlade auf den server und dann aufrufen will bekomme ich sozusagen schrott raus


----------



## maki (30. Mai 2011)

Dann muss auf dem Server etwas anders ein, die Daten zB., solltest ein paar Loggingausgaben einfügen.

Sehe dass du java.io.File verwendest, könnte ein Problem sein, die EJB Spec. erlaubt das nicht.


----------



## neela (31. Mai 2011)

Aber was nimmt man da statt dessen???:L

PS: die Datei die er speichern will trägt den namen des Servlets (also Start)


----------



## neela (31. Mai 2011)

Wahrscheinlich ist die Ursache wirklich das Static 
aber wie kann ich das denn Umgehen

aber bin mir da absolut nicht sicher


----------



## brauner1990 (31. Mai 2011)

Also wenn der Browser des Users nicht dies unterstützt, dann wird daraus halt nix...sry ist hart, aber ist so


----------



## maki (31. Mai 2011)

neela hat gesagt.:


> Wahrscheinlich ist die Ursache wirklich das Static
> aber wie kann ich das denn Umgehen
> 
> aber bin mir da absolut nicht sicher


Du könntest jetzt weiter im Nebel stochern und raten was das Problem ist, oder du setzt dich hin und findest die Urasche, zB. durch Debuggen, Loggen, Ausschlussverfahren...


----------



## neela (1. Jun 2011)

Probelm gefunden 
wenn die PDF mit der Oberen Methode 
sprich
	
	
	
	





```
String file = (Datenbank.template("Sachdaten")).toString();
			jasperReport = JasperCompileManager.compileReport(file);
			jPrint = JasperFillManager.fillReport(jasperReport, parameter,
					new JREmptyDataSource());

			// Pdf wird in Hauptspeicher geschrieben
			pdfKompl_byte = JasperExportManager.exportReportToPdf(jPrint);

			HttpServletResponse response = Datenbank.getResponse();

			response.setContentType("application/pdf");
			response.setContentLength(pdfKompl_byte.length);
			// Pdf wird im Browser angezeigt
			ServletOutputStream servletOutputStream = response
					.getOutputStream();

			servletOutputStream.write(pdfKompl_byte, 0, pdfKompl_byte.length);
			servletOutputStream.flush();
			servletOutputStream.close();

		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
```

erzeugt wird klappt es 
wenn jedoch die untere Methode genutzt werden muss

```
// Pdf wird in Hauptspeicher geschrieben
			PdfReader reader1 = new PdfReader(pdfKompl_byte);
			PdfReader reader2 = new PdfReader(
			pdf2_byte);

			HttpServletResponse response = Datenbank.getResponse();
			response.setContentType("application/pdf");
			ServletOutputStream servletOutputStream = response
					.getOutputStream();

			//wird es da durch schon geschrieben oder mus servlelOutputString,write mit rein
			PdfCopyFields copy = new PdfCopyFields(servletOutputStream);

			copy.addDocument(reader1);
			 copy.addDocument(reader2);
			 copy.addDocument(reader3);
			copy.close();

			// Pdf wird im Browser angezeigt
		
			
		    servletOutputStream.flush();
		    servletOutputStream.close();
```

kommt er zu dem Fehler da das copyfield ja nie in den ServletOutPutStream geschrieben wird:

habt ihr eine Idee wie man ein PdfCopyfield in ein Byte umwandeln kann damit es in den servletOutputStream geschrieben werden kann?

Vielen Dank


----------



## Gelöschtes Mitglied 5909 (1. Jun 2011)

10 sekunden google:

com.lowagie.text.pdf: public class: PdfCopyFields

-> Konstruktor


//Edit

ah ne das hast du ja schon gemacht. Dann solltest du mal Debuggen und kucken ob da was ankommt.

Vielleicht hilft auch einfach ein flush


----------



## neela (3. Jun 2011)

bei dem debugen bin ich auch auf keinen Fehler gestossen 
wenn ich von meinem localhost starten funktioniert auch alles 
nur wenn ich es auf den zukünftigen server laden klappt es nicht und er will mir die Datei speichern


----------



## brauner1990 (3. Jun 2011)

Funktioniert es denn wenn du die Datei speicherst? Also ist sie dann lesbar und funktional?


----------



## neela (3. Jun 2011)

wenn ich datei auf folgender Weise speichern will erfolgt die gleiche Fehlermeldung
(auf mein localhost wird sie korrekt angelegt)

```
template = (Datenbank.template("A4")).toString();

			jasperReport = JasperCompileManager.compileReport(template);
			jPrint = JasperFillManager.fillReport(jasperReport, parameter,
					new JREmptyDataSource());

			pdfKompl_byte = JasperExportManager.exportReportToPdf(jPrint);
		
			 template = (Datenbank.template("A0")).toString(); jasperReport =
			 JasperCompileManager.compileReport(template); 
			 jPrint = JasperFillManager.fillReport(jasperReport, parameter, new
			JREmptyDataSource());
			 pdf2_byte =JasperExportManager.exportReportToPdf(jPrint);
			
			
			PdfReader reader1 = new PdfReader(pdfKompl_byte);
			PdfReader reader2 = new PdfReader(pdf2_byte);
			);
			
			PdfCopyFields copy = new PdfCopyFields( new
			  FileOutputStream( "D:\\Test\werte.pdf"));
			  copy.addDocument(reader1); 
			  copy.addDocument(reader2); 
			 //copy.addDocument(reader3);
			  copy.close();
```


----------



## neela (3. Jun 2011)

ich weis zwar net wo der unterschied istzu meinem Code welchen ich am 1 um 9:18 gepostet hat 
aber nun funzt alles :toll:


```
PdfReader reader1 = new PdfReader(pdfKompl_byte);
			PdfReader reader2 = new PdfReader(pdf2_byte);
			 HttpServletResponse response = Datenbank.getResponse();
			 response.setContentType("application/pdf");	
			 ServletOutputStream servletOutputStream = response
						.getOutputStream();
				
			 PdfCopyFields copy = new PdfCopyFields (servletOutputStream);
				
			copy.addDocument(reader1); 
			  copy.addDocument(reader2); 
			 //copy.addDocument(reader3);
			  copy.close();
		
			// Pdf wird im Browser angezeigt
			 
			//servletOutputStream.write(pdfKompl_byte, 0, pdfKompl_byte.length);
			servletOutputStream.flush();
			servletOutputStream.close();
			pdfKompl_byte = null;
			pdf2_byte = null;
```

vielen dank für eure Hilfe


----------



## brauner1990 (6. Jun 2011)

neela hat gesagt.:


> ```
> // Pdf wird in Hauptspeicher geschrieben
> PdfReader reader1 = new PdfReader(pdfKompl_byte);
> PdfReader reader2 = new PdfReader(
> ...





neela hat gesagt.:


> ich weis zwar net wo der unterschied istzu meinem Code welchen ich am 1 um 9:18 gepostet hat
> aber nun funzt alles :toll:
> 
> 
> ...



Du hast am Ende einen Unterschied.
[JAVA=16]
copy.addDocument(reader3);
			copy.close();

			// Pdf wird im Browser angezeigt


		    servletOutputStream.flush();
		    servletOutputStream.close();
[/code]
[JAVA=10]
copy.addDocument(reader1); 
			  copy.addDocument(reader2); 
			 //copy.addDocument(reader3);
			  copy.close();

			// Pdf wird im Browser angezeigt

			//servletOutputStream.write(pdfKompl_byte, 0, pdfKompl_byte.length);
			servletOutputStream.flush();
			servletOutputStream.close();
			pdfKompl_byte = null;
			pdf2_byte = null;
[/code]

Das null ist unerheblich, aber wo ist dein reader3? Der ist in der VorgängerVersion, aber hier auskommentiert, dieser den Fehler erzeugt?


----------



## neela (6. Jun 2011)

nein dieser hat nicht den fehler erzeugt hab in nur auskommertiert weil ich diesen momentan nicht mehr benötige


----------



## brauner1990 (6. Jun 2011)

neela hat gesagt.:


> nein dieser hat nicht den fehler erzeugt hab in nur auskommertiert weil ich diesen momentan nicht mehr benötige



Ok, dann hab auch ich keine Ahnung!


----------

