Servlet ausführen

neela

Bekanntes Mitglied
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
Java:
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
 
Zuletzt bearbeitet:

neela

Bekanntes Mitglied
Auf diese Weise werte ich meine XML Datei aus die ich aus db lese
Java:
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
Java:
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
 
Zuletzt bearbeitet:

neela

Bekanntes Mitglied
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 :oops: hatte oben 2 mal den gleichen quelltext drin ist nun korrigiert Sry
 
Zuletzt bearbeitet:
G

Gelöschtes Mitglied 5909

Gast
Java:
response.setContentType("application/pdf");
 
M

maki

Gast
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?
 

neela

Bekanntes Mitglied
na wenn ich es in eclipse testen bekomme mein wunderschöne pdf:D

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

maki

Gast
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

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

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

neela

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

aber bin mir da absolut nicht sicher
 
Zuletzt bearbeitet:
M

maki

Gast
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

Bekanntes Mitglied
Probelm gefunden
wenn die PDF mit der Oberen Methode
sprich
Java:
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
Java:
// 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
 

neela

Bekanntes Mitglied
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:(
 

neela

Bekanntes Mitglied
wenn ich datei auf folgender Weise speichern will erfolgt die gleiche Fehlermeldung
(auf mein localhost wird sie korrekt angelegt)
Java:
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();
 
Zuletzt bearbeitet:

neela

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

Java:
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

Bekanntes Mitglied
Java:
// 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();

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

Java:
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

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?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Servlet alle 6h ausführen Web Tier 5
E Java Servlet doPost request, Mehrere Parameter mit demselben Namen aus Tabellenzeilen Web Tier 2
R servlet-mapping führt zu 404-Fehlern Web Tier 0
B Servlet mit TomCat9 Web Tier 0
A redirect mit servlet-mapping in web.xml Web Tier 4
J Wie Mouse Event in Servlet einbinden? Web Tier 1
D JSF Servlet Mapping Web Tier 3
J Session Servlet - JavaScript Web Tier 6
D Servlet 1 Servlet für alles - Wie Cookies per Ajax? Web Tier 1
S Problem mit Checkboxen im Servlet erkennen Web Tier 3
Todesbote Servlet MVC Design Pattern Web Tier 1
A Anfänger-Frage Servlet/Applet/JSP Web Tier 0
Shams Allgemeine Verständnisfrage zum Thema Servlet (in Vaadin) Web Tier 2
H File Output Servlet Web Tier 6
I vTiger Astersik Connector: NO JSP Support for , did not find org.apache.jasper.servlet.JspServlet Web Tier 0
OnDemand Servlet oder JSP Web Tier 12
H Servlet/JSP und OSGI Web Tier 2
L Servlet Datenbank Web Tier 0
D Java EE Servlet login Problem Web Tier 1
W Servlet SPEICHERN UNTER-Dialog für mehrere Dateien Web Tier 4
A Faces Context nicht mehr erreichbar nach Servlet Aufruf Web Tier 1
S Java Bean und Java Servlet Web Tier 2
D Servlet Servlet Weiterleitung static html Web Tier 5
G GWT 404 - Servlet nicht gefunden Web Tier 6
H Applet wirft AccessControlException bei File von Servlet Web Tier 3
H Servlet lässt sich nicht deployen Web Tier 7
C Kommunkation Servlets/Browseraufruf Servlet Web Tier 4
F.S.WhiTeY Servlet Servlet wird nicht angesprochen Web Tier 3
J Servlet Zugriff Servlet Web Tier 11
A JSON von JavaScript an Servlet Web Tier 9
K Servlet + JSP: JSP-Seite ein Array/ArrayList überliefern vom Controller-Servlet Web Tier 8
0 Servlet.Properties Web Tier 3
P Servlet Wo gibt es das javax.servlet.Servlet? Web Tier 2
H Servlet Servlet nimmt HTTP-GET mit Parameter entgegen Web Tier 2
5 Bild Pfad Servlet Web Tier 2
D Datenbankzugriff im Servlet Web Tier 5
H Servlet Apache Geronimo: Servlet nicht erreichbar Web Tier 2
S Ich brauche Buchempfehlung über JSP und Servlet Web Tier 2
A Parameterübergabe an Servlet und Aufruf von Servlets per Java Code Web Tier 7
S Auswahl eine Zeile von einer HTML Tabelle im Servlet Web Tier 4
K Servlet URL Mapping Web Tier 3
S ClassPath für Servlet Web Tier 3
reibi Servlet Logging - Standard Servlet Web Tier 5
K Portlet, Servlet doGet und doPost Web Tier 4
reibi Servlet Alleinlaufendes Servlet bauen Web Tier 6
P Servlet wird nicht gefunden - HTTP Error 503 Web Tier 7
lukas24680 Servlet pro Request Web Tier 2
C Pageing mit JSp&Servlet Web Tier 5
D JSP JSP integriert ein Servlet... Wie? Web Tier 7
I Servlet vor Browser URL-Direktzugriff schützen Web Tier 3
B statische Html Seite als response erhalten (Servlet) Web Tier 3
A javax/servlet/jsp/jstl/core/Config Web Tier 1
F Servlet mapping ;-) Web Tier 3
H Servlet Mapping mit JSF Web Tier 8
B (JSP)+(Struts2)+(Servlet) Konfiguration web.xml Web Tier 2
W MVC mit Bean, JSP und Servlet Web Tier 6
T Button im Servlet - Werte übergeben Web Tier 2
J werte per post an servlet übergeben und auswerten Web Tier 3
ruutaiokwu HttpServletRequest-instanz in servlet und JSP unterschiedlich? Web Tier 5
T Bild durch anderes Bild ersetzen mit Servlet Web Tier 3
E Mein erstes Servlet Web Tier 8
S Servlet automatisch aufrufen Web Tier 2
J Kommunikation zwischen Servlet und EJB Web Tier 6
C Image in Servlet Web Tier 2
S Servlet File Upload (API oder JSPSmart download) Web Tier 4
N API Nutzung SERVLET Web Tier 12
J Memory Leak in Servlet nach längere Laufzeit Web Tier 6
ruutaiokwu template engine gesucht ohne abhängigkeit zum servlet container Web Tier 2
G Servlet Ausgabe richtig benutzen Web Tier 4
W Servlet auf sich selbst verweisen lassen (Anfängerfrage) Web Tier 6
M Servlet Ausführungsfehler Web Tier 4
M Servlet & JSP Organisation Web Tier 2
J seltsames Auslastungsproblem bei Servlet Web Tier 7
ruutaiokwu JSF - läuft ausserhalb des servlet-containers? Web Tier 5
R Direkten Servlet-Aufruf verhindern (JSP) Web Tier 3
K Formularweiterleitung an Servlet Web Tier 5
N Servlet: Problem mit getParameterValues Web Tier 4
J Dateiupload- Servlet Web Tier 14
H Probleme beim Aufrufen von Java- oder Servlet-Methoden aus Javascript Web Tier 2
G Kommunikation Servlet + Applikation Web Tier 4
megachucky Welche Servlet-Version benötigt GWT 2.0? Web Tier 13
X Servlet Select box Web Tier 6
S Java Servlet Content Type Web Tier 3
E Servlet zum speichern einer Datei in einer Datenbank Web Tier 3
M Servlet neuladen Web Tier 2
H Wie wurde ein Servlet aufgerufen Web Tier 2
J Servlet soll XML ausgeben und Javascript soll dieses einlesen Web Tier 3
H servlet fehlermeldung Web Tier 3
W JSP/Servlet Web Applikation programmierung Web Tier 9
J Faces response aus einem anderen Servlet heraus rendern Web Tier 4
E Servlet mit einem Link aufrufen? Web Tier 13
D Servlet FacesServlet is not available und Web Tier 3
S servlet bedienen mit get und post parameter Web Tier 10
S Laden von globalen Resourcen im Servlet Container..? Web Tier 3
T JBoss + Servlet + HTML Fileupload + Encoding Web Tier 1
2 Servlet: Pfad zu Webcontent Web Tier 6
J Servlet Sicherheit Web Tier 4
J struts2: vom value stack zum servlet Web Tier 14
D Servlet-Klassen und Templates trennen? Web Tier 18
MQue Servlet destroy Web Tier 11

Ähnliche Java Themen

Neue Themen


Oben