PRINT+PLUS
  • Einleitung
  • Einrichtung
    • Installation
  • Aktualisierung
    • Aktualisierungseinführung
  • Lizenzierung
    • Lizenzierungseinführung
  • Funktionsweise von PRINT+PLUS
    • Einführung Funktionsweise
  • Gestalten von Vorlagen
    • Intro Vorlagen
    • Beispiel mit Rechnung
    • Formatierung
    • Spezielle Platzhalter für Datum, Ja/Nein-Felder, Bilder und HTML
    • Platzhalter für die Benutzerattribute von cobra CRM
    • Eigene Platzhalter
  • Einrichtung von Ausgabeformaten
    • Intro
    • Alle Einstellungen eines Ausgabeformats im Detail
    • Register "Allgemeine Konfiguration"
    • Register "Ausgangstabelle (Current)"
    • Register "Ausgangs-Vorlage"
    • Register "Übergeordnete Tabellen (Parent)"
    • Register "Untergeordnete Tabellen (Children)"
    • Register "Dokumente speichern"
    • Register "Filter-Dialog"
    • Register "Ergebnis-Verhalten"
    • Register "Skripte"
  • Ausgabe ausführen
    • Intro Ausgabe ausführen
  • AUSGABEN PER TASK AUSFÜHREN
    • Aufgaben dem Task zuweisen
    • Windows Aufgabenplanung für den Task einrichten
    • Besonderheiten in Skripten
  • Eingabemasken Steuerelement
  • Intro Eingabemasken Steuerelement
    • Steuerelement hinzufügen
  • Einbindung von Print+Plus in cobra Kampagnen
  • Intro Einbindung von Print+Plus in cobra Kampagnen
  • Grundlagen Skripting
    • C#
    • Skript-Events
    • Kontexte
    • Geladene Daten verwenden
    • Geladene Daten verändern
    • Datensätze anlegen
    • Eingabemaske öffnen
    • Eigene Werte ergänzen (Custom Values)
  • Beispielskripte
    • Nummer vergeben
    • PDF-Formulare füllen
    • PDF-Dokumente zusammenfügen
    • Generiertes Dokument via SMTP versenden
    • Weitere Ausgabe starten
    • Vorlage aus DMS-Feld holen
    • Felder für CRYPTO+PLUS verschlüsseln
    • Benutzerabhängige Drucker verwenden
    • Bilder in E-Mails einbinden
    • Zahlen in Worten ausschreiben
    • Datensatz-Bilder aus cobra einbetten
    • Ergebnisdokumente kopieren
    • Regionsspezifische Ausgabeformate
    • Andere Datenquelle-Objekte nutzen
    • DocuSign Integration
  • FAQs
    • Fehlermeldung Template konnte nicht geöffnet werden
    • DevExpress-Word-Exporter
      • Bilder in Vorlage
      • Bekannte Einschränkungen
      • Hinweise für Entwickler
  • Zusätzliches Tool im Zusammenhang mit PRINT+PLUS
    • Intro Zusätzliches Tool
Powered by GitBook
On this page
  • Konfiguration
  • Ideen
  • Stolpersteine
  • Skript
  1. Beispielskripte

PDF-Formulare füllen

Dieses Skript zeigt, wie ein fertiges PDF-Formular mit Daten aus cobra befüllt werden kann.

Es wird hier exemplarisch das Fahrgastreklamationsformular der Deutschen Bahn befüllt.

Konfiguration

  • Es gibt eine Zusatzdaten-Tabelle Fahrgastreklamation und die übergeordnete Tabelle Adresse.

  • Es handelt sich um einen Skriptexporter.

  • Ausgangstabelle ist die Fahrgastreklamation mit Präfix F.

  • Übergeordnete Tabelle ist die Adresstabelle mit Präfix A.

  • Das Skript wird als AfterLoadData ausgeführt.

  • Es werden Referenzen auf folgende DevExpress-Dlls aus dem cobra-Verzeichnis benötigt:

    • C:\Program Files (x86)\cobra\CRMPRO\Programm\Module\DevExpress.Docs.v21.2.dll

    • C:\Program Files (x86)\cobra\CRMPRO\Programm\Module\DevExpress.Pdf.v21.2.Core.dll

    • C:\Program Files (x86)\cobra\CRMPRO\Programm\Module\DevExpress.Pdf.v21.2.Drawing.dll

Ideen

  • Es werden die Daten (a und f) vorbereitet in Variablen.

  • Es wird zunächst das Original-PDF mit dem PDF-Prozessor geladen.

  • Es werden die PDF-Formfelder einzeln angesprungen mit mit den Werten aus PRINT+PLUS gefüllt.

Stolpersteine

  • Es ist nicht immer ganz leicht rauszukriegen wie die Formularfelder heißen. Dazu bietet sich im Zweifel ein Adobe Acrobat Pro oder Foxit PDF Creater an.

  • Die Werte bei Checkboxen und Radiobuttons, die gesetzt werden müssen sind leider nicht immer intuitiv von den PDF-Autoren gewählt. Um die Werte auszulesen bietet sich an die Werte einmal im Ausgangs-PDF zu setzen und dann via MessageBox anzuzeigen.

Skript

// Version 5
namespace Ruthardt.PrintPlus.Skripting
{
	using System;
	using System.Data.SqlClient;
	using System.Diagnostics;
	using System.IO;
	using System.Linq;
	using System.Windows.Forms;
	
	using DevExpress.Pdf;
	
	using Ruthardt.CobraBase.Functions.Access.Ado;
	using Ruthardt.CobraFramework.Ado;
	using Ruthardt.PrintPlus.Export.Context;
	using Ruthardt.PrintPlus.Model.Interfaces;

	public class ExampleScript : IScriptAction
	{
		public void Execute(IPrintContext printContext, ICurrentContext currentContext, IChildContext childContext)
		{
			var pdfQuelle = @"C:\Users\vm\Desktop\fahrgastrechteformular.pdf";
			var pdfZiel = @"C:\Users\vm\Desktop\fahrgastrechteformular_ausgefüllt.pdf";
            
			var a = currentContext.ParentDataByPrefix["A"];
			var f = currentContext.Data;
			
			using (PdfDocumentProcessor processor = new PdfDocumentProcessor()) 
			{
				processor.LoadDocument(pdfQuelle);
				PdfFormData data = processor.GetFormData();
                
				data["S1F1"].Value = f.GetDateValue("Reisedatum").ToString("dd");
				data["S1F2"].Value = f.GetDateValue("Reisedatum").ToString("MM");
				data["S1F3"].Value = f.GetDateValue("Reisedatum").ToString("yy");
				data["S1F4"].Value = f.GetStringValue("Startbahnhof");
				data["S1F7"].Value = f.GetStringValue("Zielbahnhof");
				
				// *** Checkbox
				// MessageBox.Show(data["S1F21"].Value.ToString());
				data["S1F21"].Value = f.GetBoolValue("Anschlusszug verpasst") ? "Ja" : "Off"; 
				
				data["S1F22"].Value = f.GetStringValue("Anschlusszug verpasst am Bahnhof");
				
				// *** Radiobutton
				// MessageBox.Show(data["S1F29"].Value.ToString());
				var art = f.GetStringValue("Auszahlungsart");
				switch (art)
				{
					case "Auszahlung":
						data["S1F29"].Value = "Auszahlung oder Überweisung";
						break;
					case "Gutschein":
						data["S1F29"].Value = "Gutschein";
						break;
				}
				
				data["S2F3"].Value = a.GetStringValue("Firma1");
				data["S2F4"].Value = a.GetStringValue("Nachname");
				data["S2F5"].Value = a.GetStringValue("Vorname");
				
				processor.ApplyFormData(data);
				processor.SaveDocument(pdfZiel);
				Process.Start(pdfZiel);
			}
		}
	}
}
PreviousNummer vergebenNextPDF-Dokumente zusammenfügen

Last updated 1 year ago