ERLEDIGT
JA
JA
ANTWORTEN
1
1
ZUGRIFFE
3012
3012
EMPFEHLEN
-
16.05.09 11:53 #1
- Registriert seit
- May 2009
- Beiträge
- 36
Hallo zusammen!
Ich erzeuge in meinem Programm einige Grafiken und möchte diese in ein PDF mit Hilfe von iText einfügen.
Momentan mache ich das folgendermaßen(Habe den Code etwas vereinfacht):
1. Grafik zeichnen (Graphics g)
2. Grafik als JPEG speichernCode :1 2 3
public static void myPaintFunction(Graphics g){ g.drawOval(10, 10, 190, 190); }
3. Grafik in PDF einfügenCode :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
public static void store(int iWidth, int iHeight, String sImgFilename){ BufferedImage img = new BufferedImage(iWidth,iHeight, BufferedImage.TYPE_INT_ARGB); myPaintFunction(img.createGraphics()); try{ FileOutputStream out = new FileOutputStream( new File( sImgFilename ) ); JPEGImageEncoder enc = JPEGCodec.createJPEGEncoder( out ); JPEGEncodeParam prm = enc.getDefaultJPEGEncodeParam( img ); prm.setQuality( 1.0f, false ); enc.setJPEGEncodeParam( prm ); enc.encode( img ); } catch(Exception ex){ } }
Code :1 2 3 4
.... Image img = Image.getInstance("nw.jpg"); document.add(img); ...
Geht das vielleicht irgendwie ohne dieses "Zwischenspeichern" in Schritt 2?
z.B. so etwas wie
Code :1 2
Image img = Image.getInstance(new myPaintFunction()) document.add(img);
-
18.05.09 07:01 #2
- Registriert seit
- Feb 2005
- Ort
- 127.0.0.1
- Beiträge
- 189
Guten Morgen,
ja, das ist möglich, ohne das Zwischenspeichern.
Schau dir dazu mal an, wie du Dokumente auf dem Drucker ausgeben kannst. Wenn du das hinbekommen hast, wird später anstelle eines Druckers in ein PDF "gedruckt". Im folgenden Code-Auszug ist das die Zeile: liste.getListe((Graphics) g2d, pidx + 1);.
Hier mal ein Code-Auszug:
Da musst dir mal rausziehen, was du gebrauchen kannst. Interessant dürfte der Part in der while-Schleife sein.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
/** * Führt die Konvertierung ins PDF-Format durch. */ public void convertToPdf() { Document document = createDocumentWithOrientation(); if(os != null) { try { PdfWriter writer = PdfWriter.getInstance(document, this.os); document.open(); PdfContentByte cb; PdfTemplate tp; Graphics2D g2d = null; try { int pidx = 0; while(liste.nextPage()) { // die Druck-Version wird in ListeDrucken.java in der Methode print() erstellt document.newPage(); cb = writer.getDirectContent(); tp = createPdfTemplateWithOrientation(cb); //cb.createTemplate(PageSize.A4.getHeight(), PageSize.A4.getWidth()); g2d = createGraphics2DWithOrientation(tp); //tp.createGraphics(PageSize.A4.getHeight(), PageSize.A4.getWidth()); g2d.translate(39.89, 38.54); logger.debug("zeichne PDF-Seite " + (pidx+1)); liste.getListe((Graphics) g2d, pidx + 1); g2d.dispose(); cb.addTemplate(tp, 0, 0); pidx++; } } catch(Throwable t) { logger.error("", t); } } catch(DocumentException de) { logger.error(de); } } document.close(); }
Gruß
Gerrit
Ähnliche Themen
-
Grafik in Grafik einfügen
Von Alice im Forum PHPAntworten: 10Letzter Beitrag: 14.12.10, 16:07 -
zeichen in String an beliebiger Stelle einfügen ohne andere Zeichen zu überschreiben
Von Burny66 im Forum C/C++Antworten: 3Letzter Beitrag: 12.08.07, 22:52 -
nach 2 Zeichen ein Zeichen einfügen
Von Gutschu im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 13.09.04, 17:44 -
Grafik einfügen
Von calippo im Forum Flash PlattformAntworten: 3Letzter Beitrag: 08.08.04, 13:45 -
€-Zeichen in Dynamische Grafik einbinden
Von Klopfer im Forum PHPAntworten: 6Letzter Beitrag: 05.02.04, 08:44





Zitieren
Login





