Ab List & Label 30 wird das DefinePrintOptions-Ereignis für jedes einzelne Projekt des Kombinationsdrucks (siehe auch NextCombinationPrintStep Ereignis) ausgelöst, um bspw. den jeweils verwendeten Drucker, Schacht etc. bestimmen zu können.
Für die Implementierung wird die DOM-API verwendet, um im DefinePrintOptions-Ereignis auf das zu druckende Projekt zugreifen zu können.
Nachfolgendes Code-Snippet zeigt, wie in .NET im zweiten und dritten Projekt des Kombinationsdrucks jeweils ein eigener Drucker zugewiesen wird.
// helper: represents the currently active project
// to define different printers
private int counter = 0;
private void BTN_Print_Click(object sender, EventArgs e)
{
counter = 0;
using (ListLabel LL = new ListLabel())
{
// define used data source
LL.DataSource = SqlConnectionDataProvider();
// define the projects for combination print
// by separating them by a semicolon
string proj1 = Path.Combine(startPath, "template01.lst");
string proj2 = Path.Combine(startPath, "template02.lst");
string proj3 = Path.Combine(startPath, "template03.lst");
string projects = proj1 + ";" + proj2 + ";" + proj3;
// register the event DefinePrintOptions to get called
// for each project before printing to define its
// individual used printer
LL.DefinePrintOptions += LL_DefinePrintOptions;
ExportConfiguration exportConfig =
new ExportConfiguration(
LlExportTarget.Pdf,
@"C:\temp\export.pdf",
projects
);
LL.Export(exportConfig);
}
}
private void LL_DefinePrintOptions(object sender, EventArgs e)
{
// get the current loaded list project with DOM
ProjectList proj = new ProjectList(sender as ListLabel);
proj.GetFromParent();
// define the used printer to use for the projects
if (counter == 1)
{
proj.Regions[0].Device.Name =
"\"Microsoft Print to PDF\"";
}
else if (counter == 2)
{
proj.Regions[0].Device.Name =
"\"Microsoft XPS Document Writer\"";
}
// save the changes in the current loaded project
proj.Save();
counter++;
}