Freigeben über


Unterstützung benutzerdefinierter Papierformate

Wichtig

Die Modern Print-Plattform ist die von Windows bevorzugte Methode zur Kommunikation mit Druckern. Wir empfehlen die Verwendung des Microsoft IPP-Treibers für die Posteingangsklasse zusammen mit Print Support Apps (PSA), um das Druckverhalten in Windows 10 und 11 für die Entwicklung von Druckergeräten anzupassen.

Weitere Informationen finden Sie unter Modern Print-Plattform und der Anleitung zum Design der Print-Support-App.

Benutzerdefinierte Papierformate können für einen einzelnen Druckserver spezifisch sein und in der Regel für eine bestimmte Anwendung angepasst werden. Daher werden sie häufig als „angepasste Papierformate“ bezeichnet. Systemadministratoren verwenden den Druckordner, um angepasste Papierformate zu definieren. Wenn ein Drucker angepasste Papierformate verarbeiten kann, müssen Anbieter die GPD-Datei des Druckers verwenden, um den zulässigen Größenbereich anzugeben.

Es gibt zwei Methoden zur Beschreibung akzeptabler Größenbereiche für angepasste Papierformate:

  • Sie können Größenbereiche explizit angeben.

  • Sie können Größenbereiche relativ zum größten Papierformat des Druckers angeben.

Explizites Angeben von Papierformatbereichen

Um diese Methode zu verwenden, muss die PaperSize-Funktion Ihrer GPD-Datei einen *Optionseintrag mit einem CUSTOMSIZE-Argument enthalten. Dieser Eintrag muss die folgenden Optionsattribute enthalten:

*MinSize *MaxSize *MaxPrintableWidth *MinLeftMargin *TopMargin *BottomMargin *CenterPrintable? *CursorOrigin *Command Mit diesen GPD-Einträgen können Sie Beschreibungen angepasster Papierformate ausschließlich für Drucker mit den folgenden Eigenschaften erstellen:

  • Der Drucker unterstützt Befehle zum expliziten Auswählen angepasster Papierformate (in der Regel durch Verschieben des Cursorursprungs).

  • Der Cursorursprung bleibt für alle angepassten Papierformate fest, relativ zur oberen linken Ecke des Papiers. (Dies gilt in der Regel nicht für das Drucken im Querformat oder für Drucker mit zentrierter oder rechtsbündiger Zuführung.)

  • Die oberen und unteren Ränder sind unabhängig vom Papierformat.

  • Wenn die Papierbreite kleiner als die Summe der für *MinLeftMargin und *MaxPrintableWidth angegebenen Werte ist, gibt es keinen rechten Rand. Das bedeutet, dass der Drucker bis zum rechten Rand des Papiers drucken kann.

Befehlsparameter (in *Befehl-Einträgen angegeben) können zur Druckzeit berechnet werden, wenn Standardvariablenausdrücke verwendet werden, in der Regel einschließlich der Variablen PhysPaperLength und PhysPaperWidth. Diese Variablen repräsentieren das tatsächliche Papierformat, das für den Druckauftrag angefordert wird, wie durch eine Anwendung angegeben.

Angeben der Papierformatbereiche relativ zum größten Papierformat des Druckers

Bei Druckern, die die für die explizite Angabe angepasster Papierformatbereiche erforderlichen Funktionen nicht unterstützen, gibt es eine alternative Methode, um Papierformate relativ zum größten Papierformat des Druckers anzugeben.

Um diese Methode zu verwenden, muss die PaperSize-Funktion Ihrer GPD-Datei einen *Optionseintrag mit einem CUSTOMSIZE-Argument enthalten. Dieser Eintrag muss die folgenden Optionsattribute enthalten:

*MinSize *MaxSize *MaxPrintableWidth *CustCursorOriginX *CustCursorOriginX *CustPrintableOriginX *CustPrintableOriginY *CustPrintableSizeX *CustPrintableSizeY *Command Verwenden Sie beim Angeben eines Papierformats relativ zum größten Papierformat des Druckers die folgenden Ausrichtungsregeln:

  • Bei Druckern mit linksbündigem Einzug müssen die oberen und linken Ränder aller Papierformate ausgerichtet werden.

  • Bei Druckern mit rechtsbündigem Einzug müssen die oberen und rechten Ränder aller Papierformate ausgerichtet werden.

  • Bei Druckern mit zentriertem Einzug müssen die oberen Ränder und die Mitte des oberen Rands aller Papierformate ausgerichtet werden.

Die folgenden Schritte müssen ausgeführt werden:

  1. Ermitteln Sie die folgenden Informationen zum größten Papierformat des Druckers:

    • Der Befehl, der zum Auswählen des größten Papierformats erforderlich ist.
    • Die Werte, die für die Einträge *PageDimensions, *CursorOrigin, *PrintableOrigin und *PrintableArea GPD des größten Papierformats verwendet werden, als ob sie in die GPD-Datei aufgenommen würden. Sie werden diese Einträge jedoch nicht tatsächlich in die Datei einfügen.
  2. Erstellen Sie Formeln, die die folgenden Informationen zu jedem angepassten Papierformat angeben oder berechnen, relativ zum größten Papierformat des Druckers.

    • Der Ursprung und die Größe des druckbaren Bereichs jedes Papiers.
    • Der Cursorursprung für jedes Papier.

Bei den Formeln für Schritt 2 muss es sich um CUSTOMSIZE-Parameterausdrücke handeln, die als Werte für die folgenden GPD-Einträge angegeben werden:

*CustCursorOriginX *CustCursorOriginX *CustPrintableOriginX *CustPrintableOriginY *CustPrintableSizeX *CustPrintableSizeY

Die Option CUSTOMSIZE muss auch einen Eintrag des Typs *Command enthalten, der den Befehl angibt, der die größte Druckergröße auswählt. Dieser Befehl wird für alle angepassten Papierformate gesendet, sowie die Formeln, die für den druckbaren Bereich und das Cursorursprungsteuerelement angegeben sind, wobei der Drucker auf dem tatsächlichen Papier druckt, unabhängig von der Größe.

Beispielberechnungen

Angenommen, Ihr Drucker unterstützt angepasste Papierformate, deren Ränder die gleiche Größe wie die Ränder des größten Papierformats haben. Hierzu sind folgende Schritte erforderlich:

Legen Sie die Werte für die Einträge *PageDimensions, *CursorOrigin, *PrintableOrigin und *PrintableArea des größten Papierformats fest. (Fügen Sie diese Einträge nicht in die GPD-Datei ein.)

Legen Sie die Breite jedes Rands des größten Papierformats in Bezug auf diese Werte fest, wie in den folgenden Pseudoausdrücken gezeigt:

LeftMarginWidth=*PrintableOrigin.x RightMarginWidth=*PageDimensions.x-*PrintableArea.x-LeftMarginWidthTopMarginWidth=*PrintableOrigin.y BottomMarginWidth=*PageDimensions.y-*PrintableArea.y-TopMarginWidth

In diesen Pseudoausdrücken stellen .x und .y die horizontalen und vertikalen Komponenten des Werts für pair jedes Eintrags dar. Verwenden Sie für den Querformatdruck Querformatwerte für *PrintableArea und *PrintableOrigin.

Erstellen Sie nun Pseudoausdrücke zur Angabe oder Berechnung der druckbaren Bereiche für nicht standardmäßige Papierformate.

*CustPrintableOriginX: %d{LeftMarginWidth}

*CustPrintableOriginY: %d{TopMarginWidth}

*CustPrintableSizeX: %d{PhysPaperWidth-LeftMarginWidth-RightMarginWidth}

*CustPrintableSizeY: %d{PhysPaperLength-TopMarginWidth-BottomMarginWidth}

Beachten Sie die Verwendung der beiden Standardvariablen PhysPaperWidth und PhysPaperLength. Zur Laufzeit enthalten diese Variablen die Länge und Breite des tatsächlichen Papierformats, das von einer Anwendung angefordert wurde.

Beachten Sie, dass diese Pseudoausdrücke unabhängig davon gültig sind, ob das Papier linksbündig, rechtsbündig oder zentriert zugeführt wird.

Fügen Sie die tatsächlichen Werte, die in Schritt 1 festgelegt wurden, in diese Ausdrücke ein, um GPD-Einträge zu erstellen. Dies sind einige Beispiele:

*CustPrintableOriginX:  %d{300}
*CustPrintableOriginY:  %d{300}
*CustPrintableSizeX:   %d{PhysPaperWidth-600}
*CustPrintableSizeY:  %d{PhysPaperLength-600}

Erstellen Sie Pseudoausdrücke, die die Cursorursprungindizes berechnen. In den folgenden Pseudoausdrücken sind *CursorOrigin.x und *CursorOrigin.y Platzhalter für die horizontalen und vertikalen Komponenten des Werts für pair für den Cursorursprung des größten Papierformats.

Für Drucker mit linksbündiger Zuführung:

*CustCursorOriginX: %d{*CursorOrigin.x} *CustCursorOriginY: %d{*CursorOrigin.y} Für Drucker mit rechtsbündiger Zuführung:

*CustCursorOriginX: %d{*CursorOrigin.x+PhysPaperWidth-*PageDimensions.x} *CustCursorOriginY: %d{*CursorOrigin.y} Für Drucker mit zentrierter Zuführung:

*CustCursorOriginX: %d{*CursorOrigin.x+(PhysPaperWidth-PageDimensions.x)/2} *CustCursorOriginY: %d{*CursorOrigin.y} Fügen Sie die tatsächlichen Werte, die in Schritt 1 festgelegt wurden, in diese Ausdrücke ein, um GPD-Einträge zu erstellen. Dies sind einige Beispiele (für zentriert zugeführtes Papier):

*CustCursorOriginX:  %d{((PhysPaperWidth-14040)/2)+300}
*CustCursorOriginY:   %d{180}

Geben Sie die Werte für die verbleibenden drei GPD-Einträge an – *MinSize, *MaxSize und *MaxPrintableWidth. Der für *MaxPrintableWidth angegebene Wert wird für diese Methode nicht verwendet. Der Parser setzt jedoch das Vorhandensein des Eintrags voraus, sodass der Wert auf 1 festgelegt werden kann.

Beispiel

Im folgenden Beispiel für das GPD-Dateisegment werden akzeptable angepasste Papierformate für einen Drucker mit zentrierter Zuführung beschrieben. Im Hochformatmodus haben alle Ränder für alle angepassten Papierformate eine Größe von 300 Mastereinheiten (1/4 Zoll). Im Querformatmodus haben die oberen und unteren Ränder eine Größe von 240 Mastereinheiten, während die linken und rechten Ränder eine Größe von 200 Mastereinheiten haben.

*Option: CUSTOMSIZE
{
  *rcNameID: =USER_DEFINED_SIZE_DISPLAY
  *MinSize: PAIR(4200,9000)
  *MaxSize: PAIR(14040, 21240)
  *MaxPrintableWidth: 14040
  *MinLeftMargin: 100
  *CenterPrintable?: FALSE
  *PageProtectMem: 1692
  *InsertBlock: =PaperConstraints
  *switch: Orientation
  {
    *case: PORTRAIT
    {
       *CustCursorOriginX:  %d{((PhysPaperWidth-14040)/2)+300}
       *CustCursorOriginY:   %d{180}
       *CustPrintableOriginX:  %d{300}
       *CustPrintableOriginY:  %d{300}
       *CustPrintableSizeX:   %d{PhysPaperWidth-600}
       *CustPrintableSizeY:  %d{PhysPaperLength-600}
       *Command: CmdSelect
       {
         *Order: DOC_SETUP.13
 *Cmd: "<1B>&l101a8c1e99F<1B>*p0x0Y<1B>*c0t8064x12528Y"
 }
    }
    *case: LANDSCAPE_CC90
    {
      *switch:  Option20
      {
      *% The 8100 rotates the landscape job 180 degrees if a stapler
      *% is attached, so the staple can be placed in the top left
      *% corner of the document. The printer always rotates the
      *% landscape job, even if stapling is not selected.
        *case: 3KStapler
        {
          *CustCursorOriginX:  %d{((PhysPaperWidth-14040)/2)+200}
          *CustCursorOriginY:   %d{PhysPaperLength}
          *CustPrintableOriginX:  %d{200}
          *CustPrintableOriginY:  %d{240}
          *CustPrintableSizeX:   %d{PhysPaperWidth-400}
          *CustPrintableSizeY:  %d{PhysPaperLength-480}
          *Command: CmdSelect
          {
            *Order: DOC_SETUP.13
            *Cmd: "<1B>&l101a8c1e63F<1B>*p0x0Y<1B>*c0t12456x8184Y"
          }
        }
        *case: MBM5S
        {
          *CustCursorOriginX:  %d{((PhysPaperWidth-14040)/2)+200}
          *CustCursorOriginY:   %d{PhysPaperLength}
          *CustPrintableOriginX:  %d{200}
          *CustPrintableOriginY:  %d{240}
          *CustPrintableSizeX:   %d{PhysPaperWidth-400}
          *CustPrintableSizeY:  %d{PhysPaperLength-480}
          *Command: CmdSelect
          {
            *Order: DOC_SETUP.13
            *Cmd: "<1B>&l101a8c1e63F<1B>*p0x0Y<1B>*c0t12456x8184Y"
          }
        }
        *default
        {
          *CustCursorOriginX:  %d{((PhysPaperWidth-14040)/2)+200}
          *CustCursorOriginY:   %d{21000}
          *CustPrintableOriginX:  %d{200}
          *CustPrintableOriginY:  %d{240}
          *CustPrintableSizeX:   %d{PhysPaperWidth-400}
          *CustPrintableSizeY:  %d{PhysPaperLength-480}
          *Command: CmdSelect
          {
            *Order: DOC_SETUP.13
 *Cmd: "<1B>&l101a8c1e63F<1B>*p0x0Y<1B>*c0t12456x8184Y"
 }
        }
      } *% switch Option20
    } *% case LANDSCAPE_CC90
  } *% switch Orientation
}