Toon posts:

[JAVA/PDF] PDF bewerken...

Pagina: 1
Acties:

Verwijderd

Topicstarter
Voor een bestelsysteem wordt via een servlet met een aantal variabelen een offerte gemaakt. Deze offerte wordt vervolgens naar de klant gemaild welke hem kan ondertekenen en terugsturen. Deze offerte is een PDF met een vaste opmaak. Ik heb deze aangeleverd gekregen van een grafisch bureau, en het enige wat eigenlijk moet gebeuren is dat er een aantal bedragen aan toegevoegd worden.

Ik heb hiervoor een aantal dingen geprobeerd:
met FOP de offerte namaken en de bedragen erin zetten. Het ontwerp is alleen zo ingewikkeld dat dit me niet lukt.
Het ontwerp converteren naar svg, en dit proberen in te lezen met FOP en vervolgens de bedragen eroverheen zetten. Maar ik krijg geen goed svg bestand.
Wederom met FOP de bestaande pdf als achtergrond gebruiken. Maar dit lijkt niet mogelijk te zijn...

Met pjx(etymon) het pdf bestand inlezen. Inlezen gaat goed, maar ik kom er gewoon niet achter hoe ik mijn bedragen kan toevoegen...

Hetzelfde geprobeerd met pdfbox, maar ook hier zie ik niet hoe t werkt. Het lijkt allemaal nogal mager gedocumenteerd.

Is er iemand die weet of het wel mogelijk is? Ik raak langzaamaan een beetje gefrustreerd namelijk en heb het idee dat ik niet eens in de buurt van de goede methode zit.

Verwijderd

als je de pdf als AcroForm aangeleverd kan krijgen, dan zou je (iText) kunnen proberen :

eenvoudig voorbeeld van hun site ziet er als volgt uit:

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
package com.lowagie.examples.forms.fill;

import java.io.FileOutputStream;

import com.lowagie.text.pdf.AcroFields;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;

/**
 * Fill in a simple registration form.
 */
public class Register {
    /**
     * Reads a form and fills in the fields.
     * @param args no arguments needed
     */
    public static void main(String[] args) {
        System.out.println("Filling in a form");
        try {
            // we create a reader for a certain document
            PdfReader reader = new PdfReader("SimpleRegistrationForm.pdf");
            // filling in the form
            PdfStamper stamp1 = new PdfStamper(reader, new FileOutputStream("registered.pdf"));
            AcroFields form1 = stamp1.getAcroFields();
            form1.setField("name", "Bruno Lowagie");
            form1.setField("address", "Baeyensstraat 121, Sint-Amandsberg");
            form1.setField("postal_code", "BE-9040");
            form1.setField("email", "bruno@lowagie.com");
            stamp1.close();
            // filling in the form and flatten
            reader = new PdfReader("SimpleRegistrationForm.pdf");
            PdfStamper stamp2 = new PdfStamper(reader, new FileOutputStream("registered_flat.pdf"));
            AcroFields form2 = stamp2.getAcroFields();
            form2.setField("name", "Bruno Lowagie");
            form2.setField("address", "Baeyensstraat 121, Sint-Amandsberg");
            form2.setField("postal_code", "BE-9040");
            form2.setField("email", "bruno@lowagie.com");
            stamp2.setFormFlattening(true);
            stamp2.close();
        }
        catch (Exception de) {
            de.printStackTrace();
        }
    }
}


... makkelijk dan dit gaat echt niet ;)

Verwijderd

Topicstarter
Dank je! Dit werkt inderdaad heel simpel...