iText + neue Seite

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Hi,

ich erstelle mir mittels iText ein PDF. Auf dieses Zeichne ich mit Graphcis2D Daten aus einer Datenbank. Jetzt kann es aber vorkommen, dass diese Daten mehr Platz als eine Seite kosten. Wie stelle ich es am geschicktesten an, dass alle Daten die nicht auf eine Seite passen auf eine neue eingefügt werden? Bzw. mir würde es vermutlich schon genügen, wenn ich wüsste wie man überhaupt neue Seiten anlegt. Google is da nicht so ergiebig und ich bin ziemlich neu in dem Thema ... :cry:

Danke für Antworten :)
 

thE_29

Top Contributor
Ganz genau weiß ich es auch nicht, aber die iText Hilfe ist ja sehr super!

Schau dir einfach das Kapitel mit Bildern an!
 

The_S

Top Contributor
jup, da war ich auch schon. Hilft mir aber leider nicht wirklich. Am besten ich poste mal ein bisschen Code ;) . Das ganze läuft in einem Servlet:

Diese Methode wird in der doPost aufgerufen:

Code:
	private void openPDF(HttpServletResponse response, HttpServletRequest request) {
		
	    try {	
	    	Document document = new Document();
	    	ByteArrayOutputStream os = new ByteArrayOutputStream();
	    	PdfWriter writer = PdfWriter.getInstance(document, os);
	    	document.open();
	    	PdfContentByte cb = writer.getDirectContent();
	    	Graphics2D graphics2D = cb.createGraphics(PageSize.A4.width(), PageSize.A4.height());
	    	drawPDF(graphics2D, request);
	    	graphics2D.dispose();
	    	document.close(); 
	    	response.setHeader("Expires", "0"); 
	    	response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
	    	response.setHeader("Pragma", "public");
	    	response.setContentType("application/pdf"); 
	    	response.setContentLength(os.size());
	    	ServletOutputStream out = response.getOutputStream();
	    	os.writeTo(out);
	    	out.flush(); 
	    } 
	    catch (Exception e) {
	    	e.printStackTrace();
	    }
	}

Hier wird das PDF gezeichnet:

Code:
	private void drawPDF(Graphics2D g, HttpServletRequest request) {
		
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		int high = 15;
		int pageHigh = 15;
		char lastStart = '1';
		String number = null;
		String text = null;
    	try {
		 // DB Connection aufbauen und results in ResultSet "rs" speichern
	    	while (rs.next()) {
	    		if (pageHigh >= PageSize.A4.height()) {
	    			System.out.println("New Page"); // Hier soll eine neue Seite eingefügt werden
	    			pageHigh = 15;
	    		}
	    		text = rs.getString("WAT_TEXT");
	    		number = rs.getString("WAT_NUMMER");
	    		if (number.charAt(0) != lastStart) {
	    			lastStart = number.charAt(0);
	    			g.drawString("Summe", 30, high);
	    			high += 15;
	    			pageHigh += 15;
	    		}
	    		g.drawString(number + "  " + text, 30, high);
				 high += 15;
				 pageHigh += 15;
	    	}
    	}
		 catch (Exception e) {
			 e.printStackTrace();
		 }
    	finally {
         	/*Alle DB aktivitäten beenden*/
		 }
	}

Übergebe ich der "drawPDF" Methode noch zusätzlich das Document und mach an der entsprechenden Stelle in meinem Code ein "document.newPage()" bekomm ich eine RuntimeException mit der Aussage "Unbalanced save/restore state operators"
 

The_S

Top Contributor
Ne, sind jede Menge Daten aus ner Datenbank. Will das nur sehr flexibel anordnen können, weshalb ich alles selber Zeichnen möchte. Also keine Bilder ;)

thE_29 hat gesagt.:
Oder zeichne es und speichere es als BufferedImage ab und klebs dann rauf!

Und da hab ich dann automatisch neue Seiten drin?
 

The_S

Top Contributor
Großes Bild is schlecht, muss ich erst dem Sys-Admin geben, der das ganze aufn Server klatscht. Und das dauert ;) . Wie bekomm ich den ein BufferedImage oder Graphics2D-Objekt in ein iText Image?
 

The_S

Top Contributor
ah, ich dachte es handelt sich dabei um ein iText-Image ^^. Aber leider kommt es zu keinem Zeilenumbruch ... :(

[edit] geänderter Code:

Code:
	    	BufferedImage img = new BufferedImage((int)PageSize.A4.width(), (int)PageSize.A4.height() * 2, BufferedImage.TYPE_INT_RGB);
	    	Graphics2D graphics2D = img.createGraphics();
	    	drawPDF(graphics2D, request);
	    	graphics2D.dispose();
	    	document.add(Image.getInstance(img.getScaledInstance(img.getWidth(), img.getHeight(), java.awt.Image.SCALE_SMOOTH), Color.white));
 

thE_29

Top Contributor
Du willst das er dir das Bild "abbricht" oder so?

Also aufteilt?

Oder was macht er falsch?!
 

The_S

Top Contributor
Also wenn ich das Graphics2D Objekt am Ende NICHT dispose bekomm ich mit document.newPage() eine neue Seite angezeigt und kann dort dann auch gleich weiter zeichnen. Funktioniert jetzt also alles super (wenn ich auch keine Ahnung hab warum), danke @ thE_29 :) .

Sollte jemand wissen, warum ich die Grafik nicht disposen darf, sobald ich eine neue Seite einfüge, kann er mir das ja hier mitteilen *neugierig bin*.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
izoards iText Lizenz? Allgemeine Java-Themen 2
O PDF auslesen und verändern, was ist besser iText oder PDFBox ? Allgemeine Java-Themen 9
I OpenPDF (ehem. iText) will kein PDF mit CMYK only erzeugen Allgemeine Java-Themen 6
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
W PDFs signieren mittels IText / Lowagie Allgemeine Java-Themen 0
M itext - Button der Text in Zwischenablage stellt Allgemeine Java-Themen 0
S iText: zweite Seitenhälfte mit vorhandenen pdf füllen Allgemeine Java-Themen 2
T PDF-Generierung (itext) - läuft unter Eclipse, bei har aber leere Seite Allgemeine Java-Themen 39
S JFileChooser und iText Allgemeine Java-Themen 6
T iText mit eclipse richtig in Java-Projekt einbinden Allgemeine Java-Themen 2
4a61766120617274697374 PDF iText Wort Koordinaten auslesen Allgemeine Java-Themen 1
S iText Cellen mit Attributen aus ArrayListen füllen Allgemeine Java-Themen 1
G Mein PDF Projekt mit iText Allgemeine Java-Themen 2
T itext: text in ein textfeld hinzufügen Allgemeine Java-Themen 2
K Pdf mit dynamischem Text mit iText Allgemeine Java-Themen 0
C Itext Voralagen Header Footer -> PDF Allgemeine Java-Themen 0
J iText und PdfWriter.DID_SAVE Allgemeine Java-Themen 4
S runnable jar file in Verbindung mit itext Allgemeine Java-Themen 3
I itext Libreoffice Java und ein PDF Template Allgemeine Java-Themen 1
F Input/Output Problem mit iText: Formularfeld uneditierbar machen Allgemeine Java-Themen 0
L iText PDF-Generierung ohne Speichern Allgemeine Java-Themen 10
P iText Text zentrieren Allgemeine Java-Themen 3
L iText PDF Form-Felder werden nach Bearbeitung mit iText nicht mehr richtig erkannt. Allgemeine Java-Themen 2
A Tabelle mit iText erstellen Allgemeine Java-Themen 3
B itext Graphics Allgemeine Java-Themen 4
V iText Textfelder mit Zahlen! Allgemeine Java-Themen 2
H JTable per iText in PDF: Größenanpassung möglich? Allgemeine Java-Themen 2
M itext Leerzeichen am ende unterstreichen Allgemeine Java-Themen 4
C Wie kann man die IText Table Position bestimmen? Allgemeine Java-Themen 3
N iText-Nutzung (Version 2.1.7) in kommerzieller Website Allgemeine Java-Themen 8
K iText, HTML Einrückung im Document, aber nicht im Paragraph Allgemeine Java-Themen 3
B iText Portable Collection Acrobat X Allgemeine Java-Themen 2
J iText und images Allgemeine Java-Themen 6
S iText PDF - Verständnisproblem beim Update von TableCells (Seitenzahlen) Allgemeine Java-Themen 2
T iText Dokument in DB und dann in ein JPanel Allgemeine Java-Themen 5
N iText Problem beim verlinken anderer PDFs Allgemeine Java-Themen 2
G itext BarcodeDatamatrix Allgemeine Java-Themen 4
F IText Table ohne Rand Allgemeine Java-Themen 5
P Itext PDf wird zu groß Allgemeine Java-Themen 8
D Tabellenbeschriftung im RTF-File mit IText erstellen??? Allgemeine Java-Themen 2
D pdf mit iText drucken Allgemeine Java-Themen 4
P PDF erstellen ohne iText Allgemeine Java-Themen 3
Guybrush Threepwood iText de facto nicht mehr verwendbar Allgemeine Java-Themen 15
D tiff (->komprimieren)-> iText(pdf) Allgemeine Java-Themen 2
Dissi Itext - Anordnung von Elementen durch PDF Writer Allgemeine Java-Themen 2
Z iText - 2. Seite pdf Allgemeine Java-Themen 7
W itext: Initialer Abstand in einem Dokument Allgemeine Java-Themen 2
T Deckblatt im iText realisieren... Allgemeine Java-Themen 5
T JXPanel mit seinen Komponenten auf PDF mit iText ausgeben Allgemeine Java-Themen 15
T IText: Zwei A4 PDF´s auf ein A3 PDF´s Allgemeine Java-Themen 2
A Itext: Fonts einbetten Allgemeine Java-Themen 1
A Dynamische PDF Erstellung mit iText Allgemeine Java-Themen 4
D itext & Stringlänge Allgemeine Java-Themen 10
G iText Kursiv/Fett mit IText Allgemeine Java-Themen 3
F Probleme mit iText Allgemeine Java-Themen 3
R Pdf öffnen, das von iText erstellt wurde Allgemeine Java-Themen 4
D iText und Table.setTableFitsPage(); geht nicht Allgemeine Java-Themen 12
R Pfad zu PDF bei iText in Webapps Allgemeine Java-Themen 4
D Probleme beim Umstellen von iText 1.4.4 auf Version 2.1.2 Allgemeine Java-Themen 5
G itext größe von image Allgemeine Java-Themen 2
J itext cell border Allgemeine Java-Themen 1
E Aus mehreren PDFs eines machen, zusammenfügen mittels iText Allgemeine Java-Themen 1
T Java Applet PDF erstellen mit iText, Probleme mit Pfad Allgemeine Java-Themen 1
J Itext , Spaltenbreite automatisch anpassen ? Allgemeine Java-Themen 4
Lazybone iText und Drucken Allgemeine Java-Themen 5
J Itext Seite drehen ? Allgemeine Java-Themen 4
S iText Allgemeine Java-Themen 10
A Probleme mit iText - Text in Zellen ist zu lang Allgemeine Java-Themen 7
P RTF dynamisch machen (IText, Swing) Allgemeine Java-Themen 4
L iText: Mehrseitiges PDF erzeugen Allgemeine Java-Themen 9
L Per IText erstelltes PDF automatisch drucken Allgemeine Java-Themen 13
V Itext - "Seite . von " ausgeben Allgemeine Java-Themen 6
G iText: Problem beim Drucken von AcroFormen Allgemeine Java-Themen 2
B Probleme mit itext Allgemeine Java-Themen 2
K JFreeChart und itext: Bildprobleme Allgemeine Java-Themen 4
G iText: Wie stellt man die Höhe eines Strings fest? Allgemeine Java-Themen 3
V Lösung mit iText gesucht. Allgemeine Java-Themen 2
Z Frage zu iText Allgemeine Java-Themen 2
A Übergroße Graphics2D mit iText als PDF schreiben Allgemeine Java-Themen 3
D iText: Tabelle in Footer einfügen Allgemeine Java-Themen 6
R iText: PDF-Datei erzeugen Allgemeine Java-Themen 2
P iText unter Linux zum Laufen bringen Allgemeine Java-Themen 4
R iText.jar wird zur Laufzeit nicht gefunden Allgemeine Java-Themen 4
L editieren von pdf mit iText Allgemeine Java-Themen 2
S iText - Java meets PDF Allgemeine Java-Themen 5
N neue Objektnamen durchlaufen Allgemeine Java-Themen 12
C Java11+ JavaFX HtmlEditor ContextMenu neue MenuItems hinzufügen Allgemeine Java-Themen 5
N Apache POI/ neue Reihe in Excel mit einem Button Allgemeine Java-Themen 2
B Java Mail: Prüfung auf neue Emails Allgemeine Java-Themen 1
ralfb1105 Blöcke aus Datei filtern/suchen und in neue Datei schreiben Allgemeine Java-Themen 10
G Excel Tabelle lesen und in neue Excel Tabelle einfügen Allgemeine Java-Themen 11
E neue Lizenzpflicht Java Allgemeine Java-Themen 10
T ändern neue Java Versionen was an der Programmiersprache? Allgemeine Java-Themen 15
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
KeVoZ_ Nacheinander folgende Strings in Textdokument auf neue Zeile schreiben Allgemeine Java-Themen 6
J Java Software Compare Files und Neue File erstellen Allgemeine Java-Themen 0
K Einfaches Array in 2 neue aufteilen. Allgemeine Java-Themen 2
N Neue Software in Java 7 oder 8? Allgemeine Java-Themen 3
K Neue Elemente in JList einfügen Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben