tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von ThirdKeeper
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
4062
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von ThirdKeeper
    ThirdKeeper ThirdKeeper ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    62
    Hallo zusammen,

    bin ziemlich !

    Versuche nun seid geraumer Zeit ein PDF das mittels Acrobat 9 Pro als Vorlage erzeugt wurde mit Daten zu füllen.

    Dazu öffne ich die Vorlage mit iText:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    ...
    PdfReader reader = new PdfReader("vorlagen/default.pdf");
    FileOutputStream out = new FileOutputStream
         ("Dokumente/Doc"+getModel().getId()+".pdf");
     
    PdfStamper stamper = new PdfStamper(reader, out);
    ...
    Solch eine Vorlage besitzt ja eine sogenannte AcroForm welche wiederum aus
    AcroFields besteht. Die Felder fülle ich mit iText z.B. so:
    Code :
    1
    2
    3
    4
    
    ...
    AcroFields form = stamper.getAcroFields();
    form.setField("author", getModel().getAuthor());
    ...

    bis hier hin alles super.

    Das Problem!

    In die Mitte des Dokuments möchte ich noch eine dynamisch erzeugte Tabelle einfügen
    welche man leider nicht als AcroField in der Vorlage definieren kann
    (erst recht nicht, weil sie dynamisch ist).

    Nun kann ich mit iText leider nicht einfach eine PdfPTable in das Document adden!?
    Funktioniert das überhaupt?

    Falls ja, währe ich für einen kleine Codeschnipsel oder überhaupt einen Lösungsansatz
    sehr dankbar
     
    Gruß Lars

  2. #2
    Avatar von ThirdKeeper
    ThirdKeeper ThirdKeeper ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    62
    Keiner dabei der sich mit iText auskennt?

    Ich möchte doch nur wissen wie einem PdfStamper oder einem PdfContentByte, Elemnte wie z.B. Chunk oder PdfPTable positioniert hinzugefügt werden können.
     
    Gruß Lars

  3. #3
    Avatar von ThirdKeeper
    ThirdKeeper ThirdKeeper ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    62
    So könnte eine mögl. Lösung aussehen:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    ...
    private void setPreText(PdfContentByte cb) 
    throws DocumentException {
       cb.setTextMatrix(getPagePosX(PAGE_BORDER_LEFT_CM),
          getInvertPagePosY(10.5f));
       PdfPTable table = new PdfPTable(3);
       table.addCell(new Phrase("One"));
       table.addCell(new Phrase("Two"));
       table.addCell(new Phrase("Three"));
       table.writeSelectedRows(0, -1, getPagePosX(PAGE_BORDER_LEFT_CM),
          getInvertPagePosY(10.5f), cb);
    }...

    Problem es wird eine exception geworfen:

    Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: The table width must be greater than zero.
    at com.lowagie.text.pdf.PdfPTable.writeSelectedRows(Unknown Source)
    at com.lowagie.text.pdf.PdfPTable.writeSelectedRows(Unknown Source)
    at com.lowagie.text.pdf.PdfPTable.writeSelectedRows(Unknown Source)
     
    Gruß Lars

  4. #4
    Avatar von ThirdKeeper
    ThirdKeeper ThirdKeeper ist offline Mitglied Silber
    Registriert seit
    Sep 2007
    Beiträge
    62
    So, da hab ich es endlich geschafft!
    Hier für alle die ein ähnliches Problem haben:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    ...
    PdfPTable table = new PdfPTable(3);
    table.setTotalWidth(200);
    table.addCell(new Phrase("One"));
    table.addCell(new Phrase("Two"));
    table.addCell(new Phrase("Three"));
     
    PdfContentByte cb = getStamper().getOverContent(1);   // 1 = erste Seite
    table.writeSelectedRows(0, -1,      // 0 = ab Zeile 1; -1 = bis letzte Zeile
          getPagePosX(PAGE_BORDER_LEFT_CM),    // X-Start-Punkt
          getInvertPagePosY(10.5f),   //Y-Start-Punkt
          cb);
    ...
    Geändert von ThirdKeeper (10.11.09 um 09:31 Uhr)
    rallec bedankt sich. 
    Gruß Lars

Ähnliche Themen

  1. Java und Pdf mit iText
    Von vogella im Forum Java Technology News
    Antworten: 0
    Letzter Beitrag: 07.08.09, 06:49
  2. Java + iText
    Von peter53757 im Forum Java
    Antworten: 1
    Letzter Beitrag: 02.12.08, 13:55
  3. PDF erzeugen mit iText?
    Von freek0815 im Forum Java
    Antworten: 3
    Letzter Beitrag: 21.08.06, 16:01
  4. String Table Resourcen hinzufügen
    Von Rettig im Forum VisualStudio & MFC
    Antworten: 4
    Letzter Beitrag: 11.04.05, 11:26
  5. SWT Table Daten bearbeiten, Zeilen hinzufügen
    Von melko im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 17.08.04, 10:42