Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: v_haderer am 03.12.14 - 14:29:52

Titel: PDF im Backend befüllen
Beitrag von: v_haderer am 03.12.14 - 14:29:52
Hallo Zusammen,
ich habe folgende Aufgabenstellung bei der ich nicht wirklich weiterkomme,..vielleicht hat ja einer von euch eine zündende Idee ;-) .

Ich muss auf einem Notesserver des Nächtens 1000ende PDF-Formulare mit Werten aus Notesdokumenten befüllen.
XFDF muss ein PDF ja im Frontend öffnen um es befüllen zu können und fällt somit flach.  :-:

Welche Möglichkeiten habe ich, ein PDF via Serveragent zu befüllen?

vielen Dank
Titel: Re: PDF im Backend befüllen
Beitrag von: koehlerbv am 03.12.14 - 15:48:44
Schau Dir mal Notes2PDF von SoftVision an: Das ist zwar nicht billig, aber der einfachste und bequemste Weg, den ich kenne.

Bernhard
Titel: Re: PDF im Backend befüllen
Beitrag von: shiraz am 03.12.14 - 16:53:12
Swing Software hat auch sowas.
Titel: Re: PDF im Backend befüllen
Beitrag von: v_haderer am 04.12.14 - 08:07:14
Guten Morgen.
Danke für die Antworten, mei Problem ist aber leider das ich bereits bestehende PDFs befüllen muss und nicht neu erzeuge.

thx
glg
V
Titel: Re: PDF im Backend befüllen
Beitrag von: pram am 04.12.14 - 08:27:42
Hier kannst du auch mal vorbei schauen, wenns OpenSource sein soll: http://pdf-house.blogspot.de/
(Apache PDFBox hört sich vielversprechend an)

VG
Roland
Titel: Re: PDF im Backend befüllen
Beitrag von: petra.mint am 16.12.14 - 17:00:34
Hallo haderer,

wenn es auch Java sein darf, dann würde ich "iText" (itextpdf.com, Download: http://sourceforge.net/projects/itext/files/latest/download) empfehlen. Damit kommt man(n) sehr gut zurecht, wie ich finde.
Ein einfaches Codebeispiel in Java, um ein PDF-Formular (Musterformular als Anhang) zu füllen, sieht so aus:

Code
public static void main(String[] args) throws IOException, DocumentException {
String form_template = "/home/petra/temp/Formular_1.pdf";
String form_filled = "/home/petra/temp/Formular_1_filled.pdf";
PdfReader reader = new PdfReader(form_template);
PdfStamper stamper = new PdfStamper(reader, new
FileOutputStream(form_filled));
AcroFields form = stamper.getAcroFields();
form.setField("EMail", "meine.email@provider.com");
form.setField("Anrede", "Frau");
form.setField("Vorname", "Petra");
form.setField("Nachname", "Mint");
form.setField("Ort", "Berlin");
form.setField("Mobil", "+49(0)123-1234567");
// form.setListSelection("choice_2", new String[]{"German", "Spanish"});
stamper.close();
reader.close();
}

Entsprechend umgesetzt in einen Java Notes Agent klappt das auch:
Code
public void NotesMain() {
      try {
          Session session = getSession();
          AgentContext agentContext = session.getAgentContext();
          // (Your code goes here)
          DocumentCollection dc = agentContext.getUnprocessedDocuments();
          Document doc = dc.getFirstDocument();
                  String form_template = "c:/temp/Formular_0_template.pdf";
                String form_filled = "c:/temp/Formular_1_filled.pdf";
                PdfReader reader = new PdfReader(form_template);
                PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(form_filled));
                AcroFields form = stamper.getAcroFields();
                form.setField("EMail", "meine.email@provider.com");
                form.setField("Anrede", doc.getItemValueString("Anrede"));
                form.setField("Vorname", doc.getItemValueString("Vorname"));
                form.setField("Nachname", doc.getItemValueString("Nachname"));
                form.setField("Ort", doc.getItemValueString("Ort"));
                form.setField("Strasse", doc.getItemValueString("Lage"));
                form.setField("Mobil", doc.getItemValueString("Telefon")); 
              stamper.close();
                reader.close();
      } catch(Exception e) {
          e.printStackTrace();
       }
   }
Titel: Re: PDF im Backend befüllen
Beitrag von: flaite am 16.12.14 - 17:55:58
Ich hab sehr gute Erfahrungen mit iText gemacht.
- stabil.
- alt, viele Details
- umfangreich, trotzdem nicht zu steile Lernkurve und dann einfach.
- Tonnen an Tutorial, source code + stackoverflow threads von denen man copy & pasten kann.
- tiefere Dokumentation, wenn man das braucht (das Buch von dem Autor der Bibliothek von Manning, IText in Action.

Ich mach gefühlte 95% meiner Bürokommunikation mit einem völlig unobjektorientierten Code-Salat, den auch ein 3-jähriger schreiben könnte. Wollte da immer mal aufräumen.

Für itext Fragen, kann man mich über persönliche Nachricht in diesem Forum anpingen.
Titel: Re: PDF im Backend befüllen
Beitrag von: petra.mint am 16.12.14 - 18:20:36
Ich hab sehr gute Erfahrungen mit iText gemacht.
- stabil.
- alt, viele Details
- umfangreich, trotzdem nicht zu steile Lernkurve und dann einfach.
. . .

Das kann ich bestätigen. Irgendwie macht die Lib immer wieder Spaß... auch als objektorientierter und strukturierter Salat eine feine Sache. Det Coding kann ja sonst keena mehr les’n!