CtxDocEdit – Drucken auf ausgewählten Drucker

Wie bereits im Artikel Drucken mit dem CtxDocEdit angekündigt, wird es in der Version 5.6.06 eine Möglichkeit geben den Inhalt eines CtxDocEdit-Objektes auf einem beliebigen Drucker auszugeben.

Da, wie in dem Artikel beschrieben, an die COM-Eigenschaft PrintDevice ein Geräte-Kontext übergeben werden muss, haben wir den Befehl WinDocPrint() implementiert. Der Befehl hat folgenden Funktionskopf:

WinDocPrint(
  Object        : handle;    // Deskriptor des CtxDocEdit-Objektes
  opt Pages     : alpha;     // Seitenauswahl
  opt PrtDevice : handle;    // Deskriptor eines PrintDevices
  opt Copies    : int;       // Anzahl der Exemplare
) : int;                     // Fehlercode

Pages – Seitenauswahl mit range(), odd() oder even()

In Pages kann eine Seitenauswahl angegeben werden. Mit range() wird ein Bereich oder eine Aufzählung von Seiten gedruckt. Wird Pages nicht angegeben oder range() ohne weitere Parameter angegeben, werden alle Seiten des Dokumentes gedruckt.

Beispiele:
'range()'         // Alle Seiten drucken
'range(1-10)'     // Seiten 1 bis 10 drucken
'range(1,3,5-9)'  // Seiten 1, 3 und 5 bis 9 drucken

Mit odd() können alle ungeraden, oder ein Bereich von ungeraden Seiten gedruckt werden.

Beispiele:
'odd()'      // Alle ungeraden Seiten drucken
'odd(1,10)'  // Alle ungeraden Seiten im Bereich 1 bis 10 drucken

Mit even() können alle geraden Seiten oder ein Bereich von geraden Seiten gedruckt werden.

Beispiele:
'even()'      // Alle geraden Seiten drucken
'even(1,10)'  // Alle geraden Seiten im Bereich 1 bis 10 drucken

PrtDevice – CONZEPT 16 PrintDevice-Objekt

Im Parameter PrtDevice kann der Deskriptor eines mit PrtDeviceOpen() geöffneten PrintDevice-Objektes übergeben werden, um den Zieldrucker zu definieren. Wird kein PrintDevice angegeben, erfolgt die Ausgabe auf dem Standarddrucker.

Copies – Anzahl der Exemplare

Mit diesem Parameter kann die Anzahl der zu druckenden Exemplare definiert werden. Ist dieser Parameter nicht angegeben, wird die Eigenschaft ppCopies des PrintDevice-Objektes ausgelesen. Ist hingegen kein PrintDevice-Objekt definiert, wird ein Exemplar gedruckt. Die Anzahl der Exemplare kann daher auch über den Drucker-Auswahldialog (WinOpen(_WinComPrint)) gesetzt werden.

Beim Druck von mehreren Exemplaren kann über die Eigenschaft ppCollate des PrintDevice-Objektes definiert werden, ob die Exemplare sortiert werden (alle Seiten eines Exemplars am Stück), oder nicht (alle Exemplare einer Seite am Stück).

Der Aufruf des Befehls kann beispielsweise wie folgt aussehen:

$ctxDocEdit->WinDocPrint('range(1-5,7,9)', tPrtDevice, 2);

3 Antworten

  1. @Daniel:
    Nein nicht nötig, es geht eher darum Aufzählung und Bereich zu mischen. Aber das lässt sich ja leicht selbst implementieren.

  2. @tsauter:
    Die Formatierung ist an die bestehenden Eigenschaften ppSelectPrt, und ppSelectPvw des Druckprozessors angelehnt. Mit odd() und even() kann nur ein Bereich angegeben werden. Der Minimalwert dieses Bereichs wird mit Komma vom Maximalwert getrennt.

    Bei range() können mehrere Werte und auch Bereiche angegeben werden. Daher ist es bei range wichtig zu unterscheiden, ob nur eine einzelne Seite, oder ein Bereich von Seiten angesprochen werden soll.

    Wenn es für Sie relevant ist, können wir bei odd() und even() zusätzlich die Form odd(1-10) implementieren.

  3. Sehr gut! Noch eine Frage: in range() wird eine Bereich mit 1-10 angegeben, in odd() und even() mit 1,10? Oder ist das da auch eine Aufzählung?

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Leave the field below empty!

IHRE EVALUIERUNGSLIZENZ - JETZT ANFORDERN!

TESTEN SIE DIE CONZEPT 16 VOLLVERSION - UNVERBINDLICH und KOSTENFREI

Melden Sie sich bei unserem Newsletter an

Anrede*
     
Zustimmung zur Datenverarbeitung gem. DSGVO*



WordPress Cookie-Hinweis von Real Cookie Banner