General Purpose:

        PDF2PDFA-CS-CL - Commandline Client for a PDF2PDFA Converter Service to convert files remotely from PDF to PDF/A
                                       format on a server via SOAP Web-service.

PDF2PDFA-CS-CL
v 1.3.2
XKEY GmbH
Processing of ZIP files with PDF2PDFA-CS-CL

For PDF/A-3b as well as for ZUGFeRD documents it is possible to embed additional file attachments directly into the PDF and therefore using the PDF file like a file container for exchange or archiving of the attachments.

Functions ZIP file-processing:
  • The ZIP file can contain attachments, which will be embedded in PDF/A-3b or ZUGFeRD. To make this possible, there has to be a subfolder on the same folder level, where the PDF file is located, with the same name as the PDF, including a ‘$’ in front and behind the name.
  • For example: For a file ‘Test.pdf’, a subfolder with the name ‘$Test$’ needs to exist. If such a folder exists all contained files will be added as attachments to the output file.
  • If a ZUGFeRD XML file, with the name ‘ZUGFeRD-invoice.xml’, is located in a $…$ folder, a ZUGFeRD compliant PDF can be created with this file. In case only a single PDF is located in the folder, it is not necessary to create a $…$ subfolder – in this case it is sufficient to put the ‘ZUGFeRD-invoice.xml’ at the same folder level. The creation of a $…$ subfolder is only necessary if there were additional attachments besides the XML to be transferred.
Requirements:

        • MS-Windows 7/10, MS-Server 2008, 2012, 2016, 2019

        • .NET Runtime 4.0
Commandline Parameters:


Parameter
Description
/src=["]<source file>["]   
The source file (or directory) path. Only PDF files and ZIP files are allowed to process. Also a TXT can be used to allow to define multiple files / folders to be processed. The TXT file contains path to the files or folders in each line which has to be processed. If in one line separated by a ";" a second path (file / folder) is defined then this information has will be used as destination for the converted PDF files. For the second path also a folder can be used - then the name of the source file will also used for the destination file. For the parameter only a name of the file, also without extension can be used. Then the defaults are the actual folder from where the CL application is started and as default extension *.pdf is used. The ZIP file can contain attachments, which will be embedded in PDF/A-3b or ZUGFeRD. To make this possible, there has to be a subfolder on the same folder level, where the PDF file is located, with the same name as the PDF, including a "$" in front and behind the name. For example: For a file "Test.pdf", a subfolder with the name "$Test$" needs to exist. If such a folder exists all contained files will be added as attachments to the output file. If a ZUGFeRD XML file, with the name "ZUGFeRD-invoice.xml", is located in a $…$ folder, a ZUGFeRD compliant PDF can be created with this file. In case only a single PDF is located in the folder, it is not necessary to create a $…$ subfolder – in this case it is sufficient to put the "ZUGFeRD-invoice.xml" at the same folder level. The creation of a $…$ subfolder is only necessary if there were additional attachments besides the XML to be transferred. For the source filename parameter (/src=) you can also use the * (asterisk) and ? (question mark) wildcards.
/zfxml=["]<ZUGFeRD XML>["]   
Path to an XML file which is needed for embedding to the PDF document to create a ZUGFeRD compliant electronic invoice. Works only with ZUGFeRD PDFA converter profiles. Overwrites the default file selected from the ZUGFeRD converter profile. To use the same name like the PDF also for the XML file use the keyword "pdfname", e.g. /zfxml=["]pdfname["]. The XML file will be searched in the directory where the PDF file is located.
/dst=["]<destination file path>["]   
The destination file (or directory) path. If this parameter is missing the source file is overwritten. For the parameter only a name of the file, also without extension can be used. Then the defaults are the actual folder from where the CL application is started and as default extension *.pdf is used. For the destination filename parameter (/dst=) you can also use the variables: DATE, TIME, ORIGNAME, ORIGEXT, PROFILE. Use {} to qualify the variable name.
/config=["]<PDFA profile>["]
Name of an existing PDFA profile. If it does not exist the selected profile from the UI will be used
/subfolders=true|false
Specifies whether the subfolders should be processed in a folder structure (default: false)
/del=true|false
Specify whether the converted file (and XML) should be deleted (default: false, file will be not deleted)
/overwrite=true|false
Specifies whether the file with the same name in the destination folder should be overwritten (default: false).
"true" - If the destination file already exists it will be overwritten.
"false" - If the destination file already exists a counter will be added to name.
/locked=skip|wait
If a file is locked during the processing, the file will be marked as locked by a *.lock file.
"skip" - all locked files will be skipped and not processed (default).
"wait" - the processing stops till the locked file is free.
If a *.lock file will be deleted, the application retries to process the file again.
/log=["]<log file path>["]
The path of the log file. If the parameter is missing no log will not be written.
/lang=en|de
The user interface language of the PDFA profile windows. If missing the default language from the OS will be used
/?
Help
Exit Status Codes:

        Every command for CL application returns an exit status.

        List of all exit status codes:

         0  - command executed successfully - all files were processed successfully

         1  - command executed successfully but locked files were skipped

        -1  - command executed with errors (syntax errors, non-existent profile, Zip file error, etc)
Sample:

        • PDF2PDFA-CS-CL.exe /src="c:\temp\doc_in.pdf" /dst="c:\temp\doc_out.pdf"

        • PDF2PDFA-CS-CL.exe /src="c:\temp_in" /dst="c:\temp_out\{origname}_{time}.{origext}" /lang=de

        • PDF2PDFA-CS-CL.exe /src="c:\temp\doc_in.pdf" /dst="c:\temp_out" /lang=en

        • PDF2PDFA-CS-CL.exe /src="c:\temp_in" /subfolders=true

        • PDF2PDFA-CS-CL.exe /src="c:\temp\doc_in.pdf" /zfxml="c:\ZUGFeRD-invoice.xml" /config="MyProfile"

        • PDF2PDFA-CS-CL.exe /src="doc_in" /dst="doc_out" /log=true

        • PDF2PDFA-CS-CL.exe /src="c:\temp\file.txt" /del=true /locked=wait /overwrite=true
READ ME
Contact Information:


        XKEY GmbH

        Gerstlgasse 30 A-1210 VIENNA / AUSTRIA


        T    +43 1 2784318-0,

        F    +43 1 2784318-10

        E    support@xkey.at

        W   www.xkey.at
Allgemeiner Einsatzbereich:

        PDF2PDFA-CS-CL - Kommandozeilen Client Anwendung für den PDF2PDFA Konverter Service. Ermöglicht die
                                       Konvertierung von PDF nach PDF/A über einen PDF2PDFA Server wobei die Kommunikation über
                                       eine SOAP Web-Service Schnittstelle erfolgt.

PDF2PDFA-CS-CL
v 1.3.2
XKEY GmbH
Verarbeitung von ZIP Dateien mit PDF2PDFA-CS-CL

Bei PDF/A-3b und damit auch für ZUGFeRD Dokumenten ist es möglich zusätzliche Datei-Anhänge direkt in das PDF einzubetten und damit die PDF Datei wie einen Daten-Container für die Weitergabe oder Archivierung der Anhänge zu nutzen.

Funktionen ZIP Datei-Verarbeitung:
  • Anhänge können über die ZIP Datei zum Einbetten in die PDF/A-3b bzw. ZUGFeRD mitgegeben werden. Dazu muss in der gleichen Ordnerebene in der sich die PDF Datei befindet ein Unterordner mit dem gleichen Namen wie das PDF + “$” davor und dahinter vorhanden sein. Z.b.: für die Datei “Test.pdf” ein Unterordner mit dem Namen “$Test$”. Ist ein solcher Ordner vorhanden so werden alle darin enthaltenen Dateien als Anhänge in die Ausgabedatei eingefügt.
  • Fall in einem $..$ Ordner eine ZUGFeRD XML Datei mit dem Namen “ZUGFeRD-invoice.xml” vorhanden ist so kann damit auch ein ZUGFeRD konformes PDF erzeugt werden. Befindet sich in einem Ordner nur ein einziges PDF so muss für die ZUGFeRD XML nicht unbedingt ein $..$ Unterordner angelegt werden – in dem Fall reicht es aus die “ZUGFeRD-invoice.xml”in der gleichen Ordnerebene abzulegen. Ein $..$ Unterordner wäre nur erforderlich falls neben dem XML zusätzliche Anhänge mitgegeben werden sollen.
Voraussetzungen:

        • MS-Windows 7/10, MS-Server 2008, 2012, 2016, 2019

        • .NET Runtime 4.0
Kommandozeilen Parameter:


Parameter
Beschreibung
/src=["]<Ursprungs Datei>["]   
Pfad zur Ursprungs Datei (oder Verzeichnis). Es können PDF bzw. ZIP Dateien verarbeitet, bzw. können auch TXT Dateien verwendet werden um mehrere Dateien oder Ordner auf einmal zu verarbeiten. Die TXT Datei enthält den Pfad zu den Dateien bzw. Ordnern die verarbeitet werden sollen. Falls in einer Zeile getrennt mit einem ";" ein weiterer Pfad zu einer Datei / Ordner angegeben ist so wird dieser als Zielpfad für die konvertierte Datei angenommen. Für diesen 2ten Pfad kann auch nur ein Ordner angegeben werden, dann wird als Ziel-Dateiname der gleiche wie der Ursprungsname angenommen. In der Kommandozeile kann nur der Dateiname auch ohne Erweiterung benutzt werden. Standardmäßig wird der aktuelle Pfad von dem aus die Anwendung gestartet wurde sowie als Standard-Erweiterung *.pdf angenommen. Anhänge können über die ZIP Datei zum Einbetten in die PDF/A-3b bzw. ZUGFeRD mitgegeben werden. Dazu muss in der gleichen Ordnerebene in der sich die PDF Datei befindet ein Unterordner mit dem gleichen Namen wie das PDF + "$" davor und dahinter vorhanden sein. Z.b.: für die Datei "Test.pdf" ein Unterordner mit dem Namen "$Test$". Ist ein solcher Ordner vorhanden so werden alle darin enthaltenen Dateien als Anhänge in die Ausgabedatei eingefügt. Fall in einem $..$ Ordner eine ZUGFeRD XML Datei mit dem Namen "ZUGFeRD-invoice.xml" vorhanden ist so kann damit auch ein ZUGFeRD konformes PDF erzeugt werden. Befindet sich in einem Ordner nur ein einziges PDF so muss für die ZUGFeRD XML nicht unbedingt ein $..$ Unterordner angelegt werden – in dem Fall reicht es aus die "ZUGFeRD-invoice.xml" in der gleichen Ordnerebene abzulegen. Ein $..$ Unterordner wäre nur erforderlich falls neben dem XML zusätzliche Anhänge mitgegeben werden sollen. Für den Parameter des Ursprungs Dateinamens (/src=) können auch die Platzhalter * (Stern) und ? (Fragezeichen) verwendet werden.
/zfxml=["]<ZUGFeRD XML>["]   
Pfad zur XML Datei um eine ZUGFeRD konforme PDF Datei für elektronische Rechnungslegung zu erzeugen. Der Parameter kann nur zusammen mit einem ZUGFeRD PDFA Konvertier Profil verwendet werden. Eine im ZUGFeRD Konvertier Profil vorgegebene XML Datei wird dadurch überschrieben. Um für das XML den gleichen Namen wie für die PDF Datei zu verwenden kann der Schlüsselname "pdfname", z.B. /zfxml=["]pdfname["] verwendet werden. Die XML muss im gleichen Ordner wie die PDF Datei vorhanden sein.
/dst=["]<Ziel Datei>["]   
Pfad zur Ziel-Datei (oder Verzeichnis). Fehlt dieser Parameter so wird die Ausgangsdatei überschrieben. In der Kommandozeile kann nur der Dateiname auch ohne Erweiterung benutzt werden. Standardmäßig wird der aktuelle Pfad von dem aus die CL-Anwendung gestartet wurde angenommen. Für den Ziel-Dateinamen (/dst=) können auch die Variablen DATE, TIME, ORIGNAME, ORIGEXT und PROFILE verwendet werden. Zur Kennzeichnung der Variablen müssen die Zeichen {} hinzugefügt werden.
/config=["]<PDFA Profil>["]
PDFA Profilname. Falls nicht vorhanden wird das ausgewählte Standard-Profil verwendet.
/subfolders=true|false
Legt fest ob die gesamte Unterordner-Struktur auch verarbeitet werden soll. Wird nichts angegeben so werden keine Unterordner verarbeitet.
/del=true|false
PDF Datei (sowie eventuell XML) nach dem Konvertieren löschen (Default = false, Datei wird nicht gelöscht)
/overwrite=true|false
Legt fest ob eine Datei mit dem gleichen Namen im Ordner überschreiben werden soll oder nicht (Standardwert: false).
"true" - Ist eine Datei mit gleichem Namen bereits vorhanden so wird diese überschrieben.
"false" - Ist eine Datei mit gleichem Namen bereits vorhanden so wird ein Zähler an den Namen angehängt.
/locked=skip|wait
Ist eine Datei während der Verarbeitung gesperrt so wird sie über eine *.lock Datei als gesperrt markiert.
"skip" - Alle gesperrten Dateien werden übersprungen und nicht verarbeitet (Default)
"wait" - Die Verarbeitung wird angehalten bis die gesperrte Datei wieder frei ist.
Wird die *.lock Datei gelöscht, so wird wieder versucht die Datei zu verarbeitet.
/log=["]<Log-Datei>["]
Pfad zur Log-Datei. Fehlt diese Angabe so wird keine Log-Datei geschrieben.
/lang=en|de
Auswahl der Sprache für das PDFA Benutzerinterface. Fehlt die Angabe so wird die Betriebssystem Sprache verwendet.
/?
Hilfe
Exit Status Codes:

        Nach der Ausführung der Kommandozeilen Anwendung wird ein Exit Status zurückgegeben.

        Folgende Exit Status Codes werden zurückgegeben:

         0  - Ausführung war erfolgreich, alle Dateien wurden ohne Fehler verarbeitet.

         1  - Ausführung war erfolgreich, jedoch wurden gesperrte Dateien übersprungen.

        -1  - Fehler sind bei der Ausführung aufgetreten (Syntax Fehler, Profil nicht vorhanden, ZIP Datei Fehler usw.)
Beispiel:

        • PDF2PDFA-CS-CL.exe /src="c:\temp\doc_in.pdf" /dst="c:\temp\doc_out.pdf"

        • PDF2PDFA-CS-CL.exe /src="c:\temp_in" /dst="c:\temp_out\{origname}_{time}.{origext}" /lang=de

        • PDF2PDFA-CS-CL.exe /src="c:\temp\doc_in.pdf" /dst="c:\temp_out" /lang=en

        • PDF2PDFA-CS-CL.exe /src="c:\temp_in" /subfolders=true

        • PDF2PDFA-CS-CL.exe /src="c:\temp\doc_in.pdf" /zfxml="c:\ZUGFeRD-invoice.xml" /config="MyProfile"

        • PDF2PDFA-CS-CL.exe /src="doc_in" /dst="doc_out" /log=true

        • PDF2PDFA-CS-CL.exe /src="c:\temp\file.txt" /del=true /locked=wait /overwrite=true
READ ME
Kontakt Information:


        XKEY GmbH

        Gerstlgasse 30 A-1210 VIENNA / AUSTRIA


        T    +43 1 2784318-0,

        F    +43 1 2784318-10

        E    support@xkey.at

        W   www.xkey.at