Umgang mit Device-Managed Surfaces

Wichtig

Es wird empfohlen, den IPP-Posteingangsklassentreiber von Microsoft zusammen mit Druckunterstützungs-Apps (PSA) zu verwenden, um die Druckoberfläche in Windows 10 und 11 für die Druckergeräteentwicklung anzupassen.

Weitere Informationen finden Sie im Designhandbuch für Druckunterstützungs-Apps.

Wenn Unidrv Druckseitenbilder rendert, werden von GDI verwaltete Zeichnungsflächen verwendet. Alle Bilder werden als Bitmaps gerendert. Für Geräte mit Funktionen, die in diesem Szenario nicht genutzt werden können, z. B. die Möglichkeit, Vektoren zu zeichnen, können Sie benutzerdefinierte Treiberunterstützung für eine geräteverwaltete Zeichnungsoberfläche bereitstellen. Um eine geräteverwaltete Oberfläche zu unterstützen, müssen Sie ein Rendering-Plug-In bereitstellen, das Folgendes implementiert:

Die Hookingfunktionen können keine GDI-Supportdienste mit Eng-Präfix zurückrufen, wenn sie auf einer geräteseitig verwalteten Oberfläche zeichnen. Sie können jedoch eine temporäre Bitmapoberfläche erstellen und dann den Handle dieser Oberfläche an Zeichenfunktionen mit Engpräfix übergeben (siehe Rendern eines Druckauftrags).

Die IPrintOemUni::D riverDMS-Methode wird jedes Mal aufgerufen, wenn ein Druckauftrag gerendert werden soll, sodass das Rendering-Plug-In den Typ der Renderingoberfläche (von GDI verwaltet oder geräteseitig verwaltet) für jeden Auftrag angeben kann. Wenn Sie die Oberflächenauswahl auf einer auswählbaren Option in der Benutzeroberfläche verwenden, müssen Sie auch ein Benutzeroberflächen-Plug-In bereitstellen.

Zeichnen von Text auf einer Device-Managed Surface

Das Rendering-Plug-In muss die DrvTextOut-Funktion von Unidrv (zusammen mit allen anderen Grafik-DDI-Zeichnungsfunktionen) einbinden. Das Erstellen von Text für eine geräteseitig verwaltete Oberfläche umfasst die Interaktion zwischen den folgenden vier Funktionen:

Die Schritte zum Anzeigen von Text auf einer geräteseitig verwalteten Oberfläche sind wie folgt:

  1. GDI ruft die DrvTextOut-Funktion von Unidrv auf.

  2. Unidrv ruft die DrvTextOut-Hookingfunktion des Rendering-Plug-Ins auf.

  3. Die Hookingfunktion sendet Befehle an das Gerät, um den Pinsel-, Dreh- und Clipbereich des Texts anzugeben.

  4. Die Hookingfunktion ruft die IPrintOemDriverUni::D rvUniTextOut-Methode von Unidrv auf, die heruntergeladene Schriftarten verwendet, um den Text auszugeben. Diese Methode verarbeitet auch glyphenbasiertes Ausschneiden.

  5. Wenn IPrintOemDriverUni::D rvUniTextOut keine herunterladbare Schriftart verwenden kann (weil die Schriftart nicht verfügbar ist oder gedreht wird), ruft es die IPrintOemUni::TextOutAsBitmap-Methode des Rendering-Plug-Ins auf, die den Text als Bitmap zeichnet.

  6. Nachdem IPrintOemDriverUni::D rvUniTextOut zurückgegeben wurde, muss die DrvTextOut-Hookingfunktion unter Verwendung von Vektorbefehlen (sofern unterstützt) Unterstreichungen und Durchschläge zeichnen, basierend auf den Rechtecken, die durch den prclExtra-Parameter der DrvTextOut-Funktion angegeben werden.