PDF Export 1 Job / viele einzelne PDF-Dateien

Hallo zusammen,

ich habe folgende Anforderung:
bei einem Stapeldruck (bspw. Rechnungen) werden alle belege in einem Durchlauf erzeugt. Jeder Beleg kann zwischen 1 und N Seiten umfassen. Jeder Beleg soll als eine einzelne PDF-Datei ohne Benutzerinteraktion gespeichert werden. Filenamen und Pfad der PDF möchte ich programmatisch selbst bestimmen. Der gesamte Lauf soll zwar “silent” erfolgen, aber eine Fortschrittsanzeige besitzen (diese kann ich notfalls auch noch selbst bauen). Bei einem Lauf können durchaus >2.000 Rechnungen/PDFs rauskommen.

Eine ähnliches Szenario wurde hier schon mal vor Jahren besprochen, brachte aber kein für mich nutzbares Ergebnis.

Kann mir ein Forumsnutzer netterweise mal eine solche Schleife (gerne in “Pseudocode”) aufzeigen? Was sind die “Haken und Ösen” auf die man achten muss, in welche Fallen kann man dabei “tappen”. Genutzt wird die klassische List&Label DLL.

Vielen Dank!

Gruß
Gerold

Hallo Gerold,

vielen Dank für Ihren Beitrag.

Folgende Vorgehensweise empfehlen wir Ihnen:

Sie implementieren einen ‘Schutzjob’ (vergleichen Sie hierzu bitte die Informationen aus unserer Knowledgebase - Absatz 2 in Multithreading mit List & Label.

In einem jeweils eigenen weiteren Job werden nun Vorschaudateien für die jeweiligen Rechnungen erzeugt. Anschließend können Sie diese per LlStgsysConvert in das PDF-Format konvertieren. Beachten Sie hierzu auch, dass Sie eine semikolonseparierte Liste in den Parametern einbringen können, mit denen Sie die Konvertierungsoptionen setzen können.

Die entsprechenden Optionen finden Sie im Abschnitt ‘PDF Export-Modul’ Ihrer Programmierer-Referenz.

Per AutoBoxType können Sie die Art der Fortschrittsbox bestimmen. In Ihrem Fall empfehlen wir jedoch eine eigens programmierte Fortschrittsbox zu nutzen, da ja sonst jeder der Einzeldrucke schon von 0-100% laufen würde.

Mit freundlichen Grüßen

Patrick Preuschoff
Technischer Support
combit GmbH

Hallo Herr Preuschoff,

vielen Dank für die Info!
Leider lässt sich der Artikel nicht darüber aus, wie man einen “Schutzjob” erzeugt und wie dann die Einzel-Jobs abgearbeitet werden. Geht das auch mit der “normalen” DLL oder braucht man dafür die .Net-Komponente und erzeugt die Jobs dann als eigenen Task (TPL)?

Vielen Dank und viele Grüße
Gerold

Hallo Gerold,

vielen Dank für Ihren Beitrag.

Der Schutzjob beschreibt einen übergeordneten Job, indem zu Beginn alle benötigten List & Label Objekte instanziert und diese erst mit dem Schließen des Jobs am Ende verworfen werden. Untergeordnet können Sie nun mehrere Druckjobs öffnen und schließen.

Vorteil: Es wird gewährleistet, dass die entsprechenden Module jederzeit geladen bleiben und keine Folgefehler durch häufiges Laden und Entladen der Module auftreten. Ein Schutzjob erhöht zudem die Performance des Drucks.

Mit freundlichen Grüßen

Patrick Preuschoff
Technischer Support
combit GmbH