Einzelne PDF's aus Rechnungslauf erstellen

Für jede mehrseitige Rechnung in einem Rechnungslauf sollte ein separates PDF mit der Rechnungs Nr. als Filename erzeugt werden. Mit der Export Funktion wird nur 1 PDF für alle Rechnungen erstellt.
Kann mir jemand einen Tipp geben?

Hier wurde eine undokumentierte Funktion diskutiert, die helfen könnte:

Im Event QueryFileNameForExportJob können Sie jeweils einen neuen Dateinamen übergeben und so je Rechnung eine PDF-Datei erzeugen. Dies gilt für die Verwendung von DataBinding und den AutoMasterMode AsVariables.

Vielen Dank für den Hinweis.
Wenn ich im Event QueryFileNameForExportJob mit e.Filename = “NewFilename” angebe, werden trotzdem alle Rechnungen in nur 1 PDF mit dem unter exportConfiguration angegebenen Filenamen gespeichert.

Folgend sehen Sie die Voraussetzungen damit man dieses Event sinnvoll nutzen kann.
1)
Die Muttertabelle (sagen wir mal die Tabelle Orders), muss als DataMember gesetzt sein hier über

LL.SetDataBinding(_commandSetDataProvider, “Orders”);

Die Daten der Muttertabelle müssen als Variablen gesetzt werden->

LL.AutoMasterMode = LlAutoMasterMode.AsVariables;

Durchlauf

-Der Export wird gestartet (über ExportConfiguration) ->LlExportTarget muss “Preview sein”
-Event QueryFileNameForExportJob wird gefeuert und der Name für das gesplittete File wird gesetzt.
-Nach dem Export, Konvertieren der Vorschaudateien ins PDF Format. (den Pfad zu den Vorschaudateien definieren Sie in der ExportConfiguration Klasse), z.B.

ExportConfiguration expConfig = new ExportConfiguration(LlExportTarget.Preview, @“c:\temp\pdfSplit\test.ll”, “invoices.lst”);
expConfig.ShowResult = false;
expConfig.ExportOptions.Add(LlExportOption.ExportQuiet, “1”);

Wenn Sie sich fragen, wieso man hier nicht gleich ins PDF Exportiert, dieser Event und das splitten der Dateien, funktioniert nur für das Preview Format, daher das spätere manuelle Konvertieren.

Kleiner Tipp, wenn Sie irgend ein Feld aus der Tabelle für den Dateinamen verwenden möchten, dann müssten Sie sich diesen im Event AutoDefineVariable immer wegspeichern, z.B. (Quick&Dirty)

Zwei Variablen in Ihrer Form/Klasse erstellen:

int counterFileName = 0;
string OrderID; //wir nehmen mal die Bestellungs Nr.

Im AutoDefineVariable folgendes:

private void LL_AutoDefineVariable(object sender, AutoDefineElementEventArgs e)
{
//auslesen der aktuellen Order ID und als Dateinamen verwenden, nur beim Druck.
if (!e.IsDesignMode)
if (e.Name == “Orders.OrderID”)
OrderID = e.Value.ToString();
}

Im LL_QueryFileNameForExportJob Event folgendes:

void LL_QueryFileNameForExportJob(object sender, QueryFileNameForExportJobEventArgs e)
{
++counterFileName;
//Anstatt der 11041 den Wert aus dem ersten Datensatz auslesen und eintragen.
//für die erste Datei muss man sich den ersten Datensatz auf dem man steht selber holen, /
//da hier im Event das File schon da ist und die OrderID nicht mehr eingefügt werden kann.
string newFileName = string.Format(“file{0}.pdf”, counterFileName ==1 ? “11041” :
OrderID);
string dir = System.IO.Path.GetDirectoryName(e.FileName);
e.FileName = System.IO.Path.Combine(dir, newFileName);
}