PDF Formulare ausfuellen und digital signieren

Unsere ZUGFeRD Bibliothek ist nicht auf ZUGFeRD limitiert. Zum Beispiel ist es ganz einfach PDF Formfelder auszufuellen.

Dazu gibt es im ZUGFeRD Toolkit eine eigene Klasse: PDFForms

Sollten Sie die COM Version der .NET Version vorziehen koennen Sie diese Library auch ueber COM referenzieren. Eine vereinfachte COM Schnittstelle gibt es im PDF Signator:
http://www.aloaha.com/pdf-applications/aloaha-pdf-signator/programmatically-fill-pdf-forms-and-digitally-sign-them/

 

Bei der Erstellung der Klasse definieren Sie auch gleich die Eingangs- und Ausgangs PDF sowie den Lizenzschluessel:

Dim InputPDF As String = “d:\pdf2\muster10.pdf”
Dim OutputPDF As String = “d:\pdf2\new.pdf”
Dim ForcePDFA As Boolean = True
Dim LicenseKey As String = “N2DEYTN3T63A3QMJBSLDLZOP7I”
Dim pform As New Aloaha_ZUGFeRD.PDFForms(InputPDF, OutputPDF, ForcePDFA, LicenseKey)

Im obigen Beispiel benutzen wir das Formular “Überweisungsschein für Laboratoriumsuntersuchungen als Auftragsleistung”: muster10.pdf

Ein anderes Beispiel ist: “Anforderungsschein für Laboratoriumsuntersuchungen bei Laborgemeinschaften”: muster10a.pdf

Natuerlich koennen Sie die Namen aller existierender Formularfelder auslesen:

Dim names() As String = pform.FormFieldNames

Sie koennen auch ganz einfach Werte in diese Felder schreiben:

pform.WriteData2FormField(“4221_Kurativ”, “1”)
pform.WriteData2FormField(“0000_Titel_Vorname_Namenszusatz_Vorsatzwort”, “John”)
pform.WriteData2FormField(“Name”, “Doe”)

Im Gesundheitswesen muessen zusaetzlich zu den PDF Formfeldern auch einige Metadaten geschrieben werden Aber auch das geht sehr einfach:

pform.WriteData2XMPField(“Anzahl_Zeichen_Titel”, “22”)

Um das fertige PDF Formular zu speichern rufen Sie dann einfach folgende Funktion auf: pform.Save

Die resultierenden PDFs sehen dann folgendermassen aus: muster10a_filled.pdf muster10_filled.pdf

Alternativ zur Save Funktion gibt es die Funktion SignAndSave. Mit der Funktion koennen Sie das Formular gleich digital Signieren.

‘ Specify CertificateSerialNumber or Sign_x509 to define signing certificate to skip signature dialog. If you have signed before you can assign value of Used_x509 to Sign_x509

Dim CertificateSerialNumber As String = “”
Dim Sign_x509 As System.Security.Cryptography.X509Certificates.X509Certificate2 = Nothing
Dim Output_PDF As String = “d:\pdf2\new.pdf”
Dim DoOverWrite As Boolean = True
Dim SignPage As Integer = 1
Dim SignReason As String = “I have seen this document”
Dim SignContact As String = “info@aloaha.com”
Dim SignLocation As String = “Pembroke”
Dim HashType As AloPDFLib.AloPDFLib.AloahaPDFNewLib.HashTypes = AloPDFLib.AloPDFLib.AloahaPDFNewLib.HashTypes.SHA256
Dim SignatureImagePath As String = “d:\images\signature.jpg”

‘ Lassen Sie die 4 Werte auf 0 wenn Sie moechten das Aloaha ein existierendes Unterschriftenfeld zur Signatur benutzt.

Dim SignatureLeft As Double = 0
Dim SignatureTop As Double = 0
Dim SignatureWidth As Double = 0
Dim SignatureHeight As Double = 0
Dim SizeIsPercent As Boolean = False

Dim DoCAdES As Boolean = True
Dim IncludeCRL As Boolean = True
Dim TSA_URL As String = “”
Dim ForceSettingsGUI As Boolean = True
Dim StopIfCertNotFound As Boolean = False

Dim Used_x509 As System.Security.Cryptography.X509Certificates.X509Certificate2 = Nothing
Dim LastSignError As String = “”

Call pform.SignAndSave(CertificateSerialNumber, Output_PDF, DoOverWrite, SignPage, _
                                     SignReason, SignContact, SignLocation, HashType, SignatureImagePath, _
                                     SignatureLeft, SignatureTop, SignatureWidth, SignatureHeight, “”, TSA_URL, _
                                     30000, SizeIsPercent, ForceSettingsGUI, StopIfCertNotFound, Sign_x509, _
                                     LastSignError, DoCAdES, IncludeCRL, “”, “”, “”, False, True, Used_x509)

 

Und hier das fertige PDF: muster10_signed.pdf

 

KBV_ITA_VGEX_Technisches_Handbuch_DiMus