Servlet welches PDF erzeugt

neela

Bekanntes Mitglied
Hallo

Mir wurde die Aufgabe gestellt ein Servlet zu Programmieren, welches PDF erzeugt.

Mein momentanes Problem besteht darin das ich nur den Hauptspeicher nutzen soll.
Könntet Ihr mir vlt ein paar Tips geben wie ich das bewerkstelligen kann.

Mein Servlet steht an sonsten auch und auch das erzeugen der PDF mit JasperReport ist kein Problem wenn ich diese beispielsweise auf C: speichere. Was ich ja nicht machen soll.

Ich bin euch für jeden Rat dankbar.
 

XHelp

Top Contributor
Ich kenne mich zwar mit JasperReport nicht aus, aber kannst du da nicht den OutputStream rausziehen und anstatt den in die Datei zu schreiben als Output für den Servlet verwenden?
 
S

SlaterB

Gast
JasperReport schreibt doch in einen beliebigen OutputStream und ein Servlet hat die HttpResponse mit OutputStream?

siehe zum Teil (auch für ContentType der Response) z.B.
Web Server Java -- Servlets and JSP - O'Reilly Media

bzw. vielleicht noch passender
David R. Heffelfinger's Ensode.net - Displaying JasperReports PDF Reports on the Browser
dort mit byte[] als Zwischenspeicher

meine Suche war 'servlet setContentType pdf jasperreport',
setContentType konntest du sicher nicht ahnen wenn gar keine Ahnung davon, ohne dieses Stichwort wäre aber auch viel zu finden gewesen..
 

neela

Bekanntes Mitglied
vielen dank für die links

momentan versteh ich noch bahnhof aber vlt bekomme ich ja gleich doch noch die erleuchtung :)
und weis welche parts ich übernehmen muss
 
G

Gast2

Gast
In SlaterBs zweiten link steht eigentlich alles was du brauchst. Den Report in ein byte[] speichern und dann den byte[] an den Browser per Response Output Stream schicken.
 

neela

Bekanntes Mitglied
Java:
byte[]bytes = null;

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

			// Speicherung als Temporäre Datei
			
	
			String pdf1 = File.createTempFile("temp1", ".pdf").toString();
			JasperExportManager.exportReportToPdfFile(jPrint, pdf1);

das ist nun ein kleinen Teil von meinem Programm und diesen
Java:
JasperExportManager.exportReportToPdfFile(jPrint, pdf1);
muss ich jetzt in das Byte schreiben


PS. sry das ich mich so dumm anstellen hab bis jetzt nur standalone-Programme geschrieben wo alles irgendenwie ein bissl einfacher war :(
 
G

Gast2

Gast
Ja, einfach statt:
Java:
            String pdf1 = File.createTempFile("temp1", ".pdf").toString();
            JasperExportManager.exportReportToPdfFile(jPrint, pdf1);

dies hier:
Java:
            byte[] bytes = JasperExportManager.exportReportToPdf(jPrint);

Dann den byte[] in den OutputStream schreiben, wie in dem Beispiel.
 
S

SlaterB

Gast
JasperExportManager in Suchmaschine eintippen, API-Seite finden, andere Methoden der Klasse anschauen,

wenn du sie schon nicht verstehst, dann liste als deinen Teil der Arbeit wenigstens alle Methodennamen + Rückgabewerte hier auf

edit: zu spät zum Lernen ;)
 

neela

Bekanntes Mitglied
danke danke das problem is nun fast gelöst wenn ich jetzt nur keine nullpointerexception bekommen würde in der Zeile 156 irgendwas stimmt da wohl mit meinem response nicht


Code der mainklasse
Java:
package nutzschnittstelle;

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
 */

/**
 * Start des Programmes für die Ausgabe der Bodenrichtwerte
 */
public class start extends HttpServlet {
	private static final long serialVersionUID = 1L;
private static HttpServletResponse response;
	public static HttpServletResponse getResponse() {
	return response;
}

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public start() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		fachlogik.Datenbank.setRequest(request);
		//System.out.println(new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(new Date()));
		// fachlogik.Pdf.creat_pdf();
		
		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
	}

}

und hier der Code der Klasse welche die Pdf´s erzeugt
Java:
package fachlogik;


/**
 * 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<String, Object> parameter = new HashMap<String, Object>();
	static JasperReport jasperReport;
	static JasperPrint jPrint;
	static Image wappen;
	static byte[] bytes= null;

	
	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) {
		
		HttpServletResponse response = nutzschnittstelle.start.getResponse();
		
		String name;
		if (aufnahmeausschuss.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.contains("Kreis"))
			name = "Gutachterausschuss der Kreisfreien Stadt " + erstellungsort;

		else {
			if (erstellungsausschuss.contains("Oberer")) {
				name = "Oberer ";
			} else
				name = "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);

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

		
			
	
		bytes = JasperExportManager.exportReportToPdf(jPrint);
			
			 ServletOutputStream servletOutputStream = response.getOutputStream();

		      servletOutputStream.write(bytes, 0, bytes.length);
		      servletOutputStream.flush();
		      servletOutputStream.close();
			
		} catch (JRException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
	}
ich denke mal die anderen Klassen sind für das Problem uninteressant
 
Zuletzt bearbeitet:

XHelp

Top Contributor
[JAVA=66]HttpServletResponse response = nutzschnittstelle.start.getResponse();[/code]
Da wird wohl null zurückkommen. Aber der Aufbau ist eh irgendwie... hm... komisch auf den ersten Blick.

Nachtrag: warum ist bei der der Response in den Servlet statisch? oO
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D HTTP Aufruf einer Methode aus einem Servlet heraus Allgemeine Java-Themen 0
M Parameter auslesen im Servlet Allgemeine Java-Themen 0
E Die if-Anweisung in einer Java Bean bzw. in einem Servlet? Allgemeine Java-Themen 8
A Registrierungs-servlet Allgemeine Java-Themen 0
S Servlet, per URLConnection Mit String Http Parameter mitsenden Allgemeine Java-Themen 3
F Benachrichtigungs-System Webapp Java Servlet Allgemeine Java-Themen 10
B Userdaten in Hashmap speichern - Servlet Allgemeine Java-Themen 6
S Bildaufbau durch Servlet -> Exception Allgemeine Java-Themen 11
U Servlet in Webseite einbinden Allgemeine Java-Themen 1
S Java Servlet Cache + Cache-Management Allgemeine Java-Themen 14
J package javax.servlet does not exist Allgemeine Java-Themen 5
P Servlet Eingaben sicher machen Allgemeine Java-Themen 5
P DocumentBuilder servlet Allgemeine Java-Themen 9
V [solved]Von Java Prog über ein JSP/Servlet auf DB zugreifen Allgemeine Java-Themen 3
M Applet Servlet Kommunikation ein Problem bei externem Server Allgemeine Java-Themen 3
G Servlet über apache Tomcat ansprechen Allgemeine Java-Themen 6
E Servlet wartet auf Thread Allgemeine Java-Themen 2
N Hardware-Webserver mit Java (JSP/Servlet)-Unterstützung? Allgemeine Java-Themen 8
K HTML-Formular findet Servlet nicht Allgemeine Java-Themen 2
K Servlet im Browser aufrufen Allgemeine Java-Themen 3
J einfachster Servlet-Aufruf klappt nicht Allgemeine Java-Themen 3
I Servlet von einem Swing Based GUI aufrufen Allgemeine Java-Themen 5
G Servlet Register/Login-Prozedur Allgemeine Java-Themen 9
T URL in Servlet auslesen? Allgemeine Java-Themen 4
A Was ist bei einem Servlet beim Client notwendig? Allgemeine Java-Themen 22
T Profiler für Servlet Allgemeine Java-Themen 2
T Servlet und JFrame Allgemeine Java-Themen 2
L E-Mail Auswertung mit Servlet (Excel) Allgemeine Java-Themen 3
L String ausgeben in Servlet Allgemeine Java-Themen 2
P Filestream von HTML-Form zu Servlet Allgemeine Java-Themen 6
B Suche Webhoster mit Javaunterstützung (JSP, Servlet) Allgemeine Java-Themen 10
P Was ist der Unterschied zwischen JSP und Servlet ? Allgemeine Java-Themen 4
M Wo krieg' ich die Datei Servlet.jar Allgemeine Java-Themen 3
R Servlet Probleme im Internet Explorer (per LAN) Allgemeine Java-Themen 4
G Servlet - "Client immer am neuesten Stand" Allgemeine Java-Themen 2
N Diagramm beschriften, Servlet Allgemeine Java-Themen 5
R suche servlet.jar Allgemeine Java-Themen 2
P Servlet, Deserialisieren, StreamCorruptedException Allgemeine Java-Themen 9
R Servlet, das File zurückliefert Allgemeine Java-Themen 4
1 Applet soll PDF von Servlet empfangen Allgemeine Java-Themen 3
E Servlet-Beispiel gesucht Allgemeine Java-Themen 3
H Variablenübergabe von Servlet zu JSP Allgemeine Java-Themen 18
M Mit HTML in Servlet Daten austauschen Allgemeine Java-Themen 3
H Servlet/Applet Kommunikation Allgemeine Java-Themen 2
M Servlet --> Berechnung --> Timeout vom Proxy oder IE!? Allgemeine Java-Themen 7
A Formular POST übergabe an Servlet Allgemeine Java-Themen 4
G Welches Problem besteht bei den Typparametern? Allgemeine Java-Themen 5
S Programm entwickeln, welches ein Dreieckspuzzle lösen kann Allgemeine Java-Themen 5
Z Welches GUI Framework für Java ist aktuell? Allgemeine Java-Themen 16
D Verkauf von einem Programm welches ich in Java geschrieben habe Allgemeine Java-Themen 4
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
U Welches ist das richtige Entwurfsmuster Allgemeine Java-Themen 2
S Byte Array welches in Laufzeit aufgelöst wird // Objekt Array Allgemeine Java-Themen 3
F Welches Design Pattern? Allgemeine Java-Themen 3
T WeakReference/PhantomReference: Mitbekommen WELCHES Objekt nun GC'ed wird Allgemeine Java-Themen 2
P "Komplexe" Datenbankabfragen, welches ist der bessere Weg Allgemeine Java-Themen 4
A Welches Speichermanagement für einen Kalkulator Allgemeine Java-Themen 7
T Welches Tuturial soll ich paralell lesen ? Allgemeine Java-Themen 3
R Welches User-Verzeichnis wählen für Configurationsdateien - Windows Allgemeine Java-Themen 2
G Gleiche Packages in verschiedenen JAR Dateien - Welches Package wird verwendet? Allgemeine Java-Themen 5
E Welches Dateiformat für gespeicherte Einstellungen? Allgemeine Java-Themen 20
A Erkennen welches Fenster bei windowDeactivated aktiviert wird? Allgemeine Java-Themen 2
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
ARadauer Welches Programm hört auf Port? Allgemeine Java-Themen 3
P Textfiles laden - egal welches Encoding Allgemeine Java-Themen 9
N Welches design pattern? Allgemeine Java-Themen 8
André Uhres Welches Werzkeug benutzt ihr um eure Mails zu lesen? Allgemeine Java-Themen 47
A Welches Programmdesign? Allgemeine Java-Themen 6
D Welches Pattern kann ich nutzen? Allgemeine Java-Themen 9
F welches array ist im jedem programm? Allgemeine Java-Themen 6
Z Testen welches BS benutzt wird Allgemeine Java-Themen 3
T Welches Webframew0rk für pure Java? Allgemeine Java-Themen 13
M Welches Linux zum Java testen? Allgemeine Java-Themen 5
D Welches Fenster ist im moment aktiv? Allgemeine Java-Themen 11
K Welches Betriebssystem ist in Benutzung? Allgemeine Java-Themen 11
M Welches Objekt ruft die Methode auf? Allgemeine Java-Themen 12
S Welches Verschlüsselungsverfahren Allgemeine Java-Themen 9
G Welches Java GUI Buch würdet Ihr empfehlen Allgemeine Java-Themen 2
W VersionsVerwaltung welches Tool Verwendet ihr Allgemeine Java-Themen 12
D Welches Linux in Verb. mit Java Allgemeine Java-Themen 9
S Welches LookAndFeel ist das? Allgemeine Java-Themen 2
Chucky Java Buch - nur welches? online oder kaufbuch? Allgemeine Java-Themen 18
P Welches JRE braucht meine Applikation? Allgemeine Java-Themen 3
W welches layout? Allgemeine Java-Themen 3
I OpenPDF erzeugt riesige PDFs, wenn Grafiken über PdfGraphics2D#drawImage gezeichnet werden Allgemeine Java-Themen 1
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
I PDF-Drucker erzeugt nur A4-Seiten Allgemeine Java-Themen 2
Arif Input/Output Serialisierung - Datei wird nicht erzeugt Allgemeine Java-Themen 3
Seikuassi Input/Output ZipOutputStream erzeugt zu großes .zip-Archiv Allgemeine Java-Themen 3
J OOP Überwachen, ob ein Objekt erzeugt wird Allgemeine Java-Themen 9
T MEthodenauruf testen, wenn instanz erst erzeugt wird Allgemeine Java-Themen 0
G Thread erzeugt nicht plausible NullPointerException Allgemeine Java-Themen 7
Antoras Micro-benchmark für parallel vs. sequentiell erzeugt unerwartetes Ergebnis Allgemeine Java-Themen 8
H XML-File mit Java erzeugt Frage Allgemeine Java-Themen 10
H Wie erzeugt man einen Daemon? Allgemeine Java-Themen 7
N FileOutputStream erzeugt datei Allgemeine Java-Themen 8
G Hibernate search (Lucene) - Index wird nicht rechtzeitig erzeugt? Allgemeine Java-Themen 2
P Java TrayIcon erzeugt hohe Systemauslastung Allgemeine Java-Themen 5
K Programm erzeugt Seitenfehler Allgemeine Java-Themen 2
G Programm erzeugt ständig neue Strings . Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben