Programmierung

Ansteuern von Druckerschächten

Je nach Druckauftrag besteht die Notwendigkeit, die Ausgabe auf verschiedene Druckerschächte vorzunehmen. So kann es zum Beispiel gewünscht sein, dass lediglich die erste Seite eines Dokumentes auf das Firmenpapier mit Logo gedruckt wird oder die Kopie auf ein Papier mit geringerer Qualität.


Das setzt zum einen voraus, dass der Drucker über mehrere Druckschächte verfügt,
und zum anderen, dass die Schächte aus der Applikation heraus angesteuert werden können. In CONZEPT 16 wird über die Eigenschaft ppBinSourceName des PrintDevice-Objekts der gewünschte Papierschacht angesprochen:

ErrTryCatch(_ErrHdlInvalid, True);
try
{
  // PrintDevice öffnen
  tDevice # PrtDeviceOpen('MyPrinter',_PrtDeviceSystem);
  // Druckerschacht bestimmen
  tDevice->ppBinSourceName # 'Schacht 2';

  tJob # PrtJobOpen('',_Sys->spPathMyDocuments
                    + '\MyPrintJob.job',_PrtJobOpenRead);
  tJob->PrtJobClose(_PrtJobPrint,tDevice);
}
...
...

Die Namen der Schächte sind bei den Windows-Druckertreiber hinterlegt. Über die Funktion PrtInfoStr() und der Option _PrtInfoBinName lassen sich die Namen der Schächte des geöffneten Drucker-Device ermitteln. Die Anzahl der verfügbaren Druckerschächte liefert die Funktion PrtInfo(_PrtInfoBinCount) zurück:

ErrTryCatch(_ErrHdlInvalid, True);
{
  // PrintDevice öffnen
  tDevice # PrtDeviceOpen('MyPrinter',_PrtDeviceSystem);
  // Alle verfügbaren Schächte in einer Liste ausgeben
  for  tLoop # 1 loop inc(tLoop)
  while (tLoop <= tDevice->PrtInfo(_PrtInfoBinCount))
  {
    tDataList->
      WinLstDatLineAdd(tDevice->PrtInfoStr(_PrtInfoBinName,tLoop));
  }
}
...
...

In diesem Zusammenhang möchten wir noch einmal eine häufig gestellte Frage beantworten, ob innerhalb eines Druckjobs unterschiedliche Schächte angesprochen werden können. Hierzu ist zu sagen, dass dies unter Windows nicht möglich ist. Für einen Windows-Druckjob kann lediglich ein Ausgabeschacht definiert werden. Analog dazu ist das Mischen unterschiedlicher Formate ebenfalls nicht möglich. Eine Lösung stellt die Aufteilung des Druckauftrags in mehrere Jobs dar.

3 Kommentare

3 Kommentare “Ansteuern von Druckerschächten”

  1. Sie können bei der Eigenschaft ppBinSourceName zur Selektion des Schachtes auch Platzhalter verwenden. Zum Beispiel ‘*2’ für den ersten Schacht der mit ‘2’ endet, für ‘Fach 2’, ‘Schacht 2’ oder ‘Tray 2’.

    Außerdem können Sie mit den Funktionen PrtInfo() und PrtInfoStr() über alle Schächte iterieren und einen passenden mit der Eigenschaft ppBinSource setzen.

    In der CodeLibrary finden Sie das Beispiel "PrtInfo" das detaillierte Informationen zu den installierten Druckern – auch zu den Schächten – anzeigt.

Kommentar abgeben