iText - 2. Seite pdf

Status
Nicht offen für weitere Antworten.

Zapp_Branigan

Aktives Mitglied
Ich habe gerade zwei Stunden versucht eine zweite Seite in mein pdf einzufügen und dann mit G2D wie auf der ersten Seite schon erfolgreich geschafft. Ich bin bisschen am Verzweifeln, denke aber es ist recht einfach.
Ich würde mich sehr freuen wenn mir einer von euch die Lösung sagen kann...

Java:
Document document = new Document();
	        
	        try {
	            
	            // step 2: creation of the writer
	            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(name+".pdf"));
	            document.setPageSize(PageSize.A4.rotate());
	            
	            document.newPage();
	            
	            // step 3: we open the document
	            document.open();
	            
				
				
	            System.out.println( document.getPageSize());
	            // step 4: we grab the ContentByte and do some stuff with it
	            
	            // we create a fontMapper and read all the fonts in the font directory
	            DefaultFontMapper mapper = new DefaultFontMapper();
	            FontFactory.registerDirectories();
	            //mapper.insertDirectory("c:\\windows\\fonts");
	            
	            // we create a template and a Graphics2D object that corresponds with it
	            int w = 842;
	            int h = 595;
	            PdfContentByte cb = writer.getDirectContent();
	            
	           
	            
	            PdfTemplate tp = cb.createTemplate(w, h);
	            Graphics2D g2 = tp.createGraphics(w, h, mapper);
	            
	            BufferedImage image = ImageIO.read( new File( "data"+File.separator+"img"+File.separator+"profilbogen.jpg" ) ); 
	            
	            
	            g2.drawImage(image, 0, 0, 842, 595, null);
	           

	
	            
	            document.newPage();
	            
	            g2.dispose();
	            tp.sanityCheck(); // all the g2 content is written to tp, not cb
	            cb.addTemplate(tp, 0, 0);
	            
	                
//Hier würde ich jetzt gerne noch eine 2. Seite einfügen auf die ich mit Graphics2d zeichne...


	        }
	        catch(DocumentException de) {
	            System.err.println(de.getMessage());
	        }
	        catch(IOException ioe) {
	            System.err.println(ioe.getMessage());
	        }
	        
	        // step 5: we close the document
	        document.close();
 

max40

Bekanntes Mitglied
Java:
// ...

// step 3: we open the document
document.open();

PdfContentByte cb = writer.getDirectContent();
PdfTemplate tp = cb.createTemplate(400,400);
Graphics2D g2 = tp.createGraphics(400,400);

g2.drawString("Test Seite 1", 75, 75);
cb.addTemplate(tp, 25,25);
 
document.newPage();
    
tp = cb.createTemplate(400,400);
g2 = tp.createGraphics(400,400);
  
g2.drawString("Test Seite 2", 75, 75);

cb.addTemplate(tp, 25,25);
    
// ...
 

Zapp_Branigan

Aktives Mitglied
Ich bin immernoch zu dumm :-( tut mir leid ich habe jetzt versucht dein Beispiel zu integrieren aber es kommt eine Fehlermeldung: "Exception in thread "main" com.lowagie.text.exceptions.IllegalPdfSyntaxException: Unbalanced save/restore state operators."

Ich habe jetzt nochmal meine komplette Methode eingefügt wer sie zum Laufen bekommt ist mein persönlicher Held für heute :)

Java:
public void exportPDF()
	    {
	    	 
	        System.out.println("Using the java.awt.Graphics2D-object");
	        
	        // step 1: creation of a document-object
	        Document document = new Document();
	        
	        try {
	            
	            // step 2: creation of the writer
	            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(name+".pdf"));
	            document.setPageSize(PageSize.A4.rotate());
	            
	            
	            
	            // step 3: we open the document
	            document.open();
	            
	            PdfContentByte cb = writer.getDirectContent();
	            PdfTemplate tp = cb.createTemplate(400,400);
	            Graphics2D g2 = tp.createGraphics(400,400);
	             
	            g2.drawString("Test Seite 1", 75, 75);
	            cb.addTemplate(tp, 25,25);
	             
	            document.newPage();
	                
	            tp = cb.createTemplate(400,400);
	            g2 = tp.createGraphics(400,400);
	              
	            g2.drawString("Test Seite 2", 75, 75);
	             
	            cb.addTemplate(tp, 25,25);
	                
	            
				
	            
	            g2.dispose();
	            tp.sanityCheck(); // all the g2 content is written to tp, not cb
	            cb.addTemplate(tp, 0, 0);
	            
	           
	            
	        }
	        catch(DocumentException de) {
	            System.err.println(de.getMessage());
	        }
	        catch(IOException ioe) {
	            System.err.println(ioe.getMessage());
	        }
	        
	        // step 5: we close the document
	        document.close();
	    }
 

max40

Bekanntes Mitglied
das find ich garnicht gut! wenn ich auf die neuen Libs gehe, werde ich wohl auch das Problem bekommen!
Das ist erst seit den letzten neuen iText Versionen!
Also viel spaß beim lesen vom Changelog 1T3XT: History vielleicht findest du dort die Lösung!
 
Zuletzt bearbeitet:

Zapp_Branigan

Aktives Mitglied
Das ist doch ne Grundfunktion oder? Wie kann das denn so schwierig sein?
Ich habe gedacht das sei ganz einfach...
Weiß denn da keiner ne einfache Lösung? Von mir aus auch ein anderes Package oder so...
 
J

JohannisderKaeufer

Gast
In Zeile 22 holst du dir eine Referenz auf ein neues Graphics2D aus dem PDFTemplate.
Dieses braucht anscheinend einen Aufruf von dispose bevor das document geschlossen wird.

In Zeile 30 überschreibst du deine Referenz auf das alte Graphics2D und ersetzt es durch ein neues.
Folglich kannst du in Zeile 39 nur dein neues disposen.

Dein g2 hält also Referenzen auf zwei verschiedene Objekte.(nacheinander natürlich)
Du rufst dein dispose aber nur auf der zweiten Referenz auf.

Lösung 1:
zwischen Zeile 24 und 30
ein g2.dispose einbauen

Lösung 2:
In Zeile 30 eine neue lokale Variable erstellen. und später dann dispose() auf beiden Elementen aufrufen.

Das Ding fluppt dann bei beidem.
Verwendet hab ich iText 2.17.
 
Zuletzt bearbeitet von einem Moderator:

Zapp_Branigan

Aktives Mitglied
Danke => funktioniert! Das ist hier wirklich ein tolles Forum! Es ist echt unglaublich wie nett und schnell mir hier immer mit meinen teils etwas dummen Problemen geholfen wurde.
 

ranib

Mitglied
Hallo zusammen

ich habe das ähnliche Problem. Bei mir nimmt er den kompletten Inhalt auf eine Seite und erstellt am Schluss noch eine leere Seite. Ich erzeuge ein PDF von einer ODS Datei. Egal wie gross die ODS Datei ist, am Schluss erhalte ich eine Seite bis ans Ende ausgefüllt und abgeschnitten und noch eine leere Seite unten dran. Ich krieg den Fehler nicht raus. Jemand der mir diesbezüglich helfen kann? Wäre dringend... :(


Java:
public void createPdf(OpenDocument doc, String savePath, String fileName)
    {
        // Open the PDF document
        Document document = new Document(PageSize.A4);
        File outFile = new File(fileName + ".pdf");
        PdfDocument pdf = new PdfDocument();
        document.addDocListener(pdf);

        try {
            FileOutputStream fileOutputStream = new FileOutputStream(outFile);
            PdfWriter writer = PdfWriter.getInstance(pdf, fileOutputStream);
            pdf.addWriter(writer);

            document.open();

            // Create a template and a Graphics2D object 
            Rectangle pageSize = document.getPageSize();
            int w = (int) (pageSize.getWidth());
            int h = (int) (pageSize.getHeight());
            PdfContentByte cb = writer.getDirectContent();
            PdfTemplate tp = cb.createTemplate(w, h);

            Graphics2D g2 = tp.createPrinterGraphics(w, h, null);

            tp.setWidth(w);
            tp.setHeight(h);

            // Configure the renderer
            ODTRenderer renderer = new ODTRenderer(doc);
            renderer.setIgnoreMargins(false);
            renderer.setPaintMaxResolution(true);

            // Render
            renderer.paintComponent(g2);
            g2.dispose();

            // Add our spreadsheet in the middle of the page
            float offsetX = (pageSize.getWidth() - w - 10);
            float offsetY = (pageSize.getHeight() - h);
            cb.addTemplate(tp, offsetX, offsetY);

            // Close the PDF document
            document.close();

        } catch (FileNotFoundException ex) {
            System.out.println("FileNotFoundException");
            System.out.println("FILE: " + savePath + "\\" + fileName + ".pdf");
        } catch (DocumentException ex) {
            System.out.println("DocumentException");
        }
    }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T PDF-Generierung (itext) - läuft unter Eclipse, bei har aber leere Seite Allgemeine Java-Themen 39
J Itext Seite drehen ? Allgemeine Java-Themen 4
V Itext - "Seite . von " ausgeben Allgemeine Java-Themen 6
T iText + neue Seite Allgemeine Java-Themen 14
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
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
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
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
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
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
M Html Seite auslesen Allgemeine Java-Themen 16
L Seite einer Partner Website neu laden Allgemeine Java-Themen 1
W Java-Chat via XMLRPC mit PHP-Seite verbinden Allgemeine Java-Themen 3
L Methoden Automatischer login auf einer seite Allgemeine Java-Themen 3
OnDemand Filedownload von https-Seite Allgemeine Java-Themen 1
H Semicolon Einfügen JSP Seite Allgemeine Java-Themen 9
OnDemand Substring einer HTML Seite will nicht Allgemeine Java-Themen 5
A Drucken auf theoretisch unendlich langer Seite Allgemeine Java-Themen 2
S Bekomme mit Scanner und URL keine Html-Seite ausgelesen Allgemeine Java-Themen 3
T Methode beim Schließen der xhtml Seite? Allgemeine Java-Themen 4
T HTTP Skript für Passwortgeschützte Seite :: Häkchen setzen und Download Allgemeine Java-Themen 4
S Von HTML-Seite den Titel bekommen Allgemeine Java-Themen 2
G Java PrintFramework druckt nur eine Seite Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben