MxdcGetPDEVAdjustment-Funktion (mxdc.h)
Die MxdcGetPDEVAdjustment-Funktion wird von einer Druckerschnittstellen-DLL exportiert und stellt Druckerkonfigurationsdaten für den Microsoft XPS Document Converter (MXDC) bereit.
HRESULT MxdcGetPDEVAdjustment(
[in] HANDLE hPrinter,
[in] ULONG cbDevMode,
[in] const DEVMODE *pDevMode,
[in] ULONG cbIn,
[in, optional] const VOID *pvIn,
[in] ULONG cbPrintPropertiesCollection,
PrintPropertiesCollection *pPrintPropertiesCollection
);
[in] hPrinter
Das Handle des derzeit instanziierten Druckers.
[in] cbDevMode
Die Größe der DEVMODE-Struktur in Bytes, einschließlich der privaten DEVMODE-Daten des Treibers.
[in] pDevMode
Eine Kopie der DEVMODE-Struktur, die das MXDC empfangen hat. Die Druckerschnittstellen-DLL verwendet Informationen aus dieser Struktur, um die angeforderten Daten zurückzugeben.
[in] cbIn
Ein Eingabeparameter, der die Größe des pvIn-Parameters in Bytes angibt. Dieser Parameter wird derzeit nicht verwendet, und sein Wert ist null.
[in, optional] pvIn
Ein Parameter, der aus Daten besteht, die vom MXDC an die DLL der Druckerschnittstelle gesendet werden. Dieser Parameter wird derzeit nicht verwendet, und sein Wert ist NULL.
[in] cbPrintPropertiesCollection
Die Größe der PrintPropertiesCollection-Datenstruktur in Bytes.
pPrintPropertiesCollection
Die PrintPropertiesCollection-Datenstruktur , aus der die DLL der Druckerschnittstelle die angeforderten Daten abruft. Diese Struktur ist in WinSpool.h definiert. Die angeforderten Felder sind möglicherweise bereits mit den Standarddaten des MXDC ausgefüllt. Die DLL der Druckerschnittstelle muss die Felder ignorieren, die sie nicht versteht.
MxdcGetPDEVAdjustment sollte einen der folgenden Werte zurückgeben:
Rückgabecode | Beschreibung |
---|---|
S_OK | Die DLL der Druckerschnittstelle hat basierend auf der angegebenen DEVMODE-Struktur erfolgreich einen angepassten bildbaren Bereich, komprimierungstyp oder DPI zurückgegeben. Das MXDC überprüft den zurückgegebenen bildbaren Bereich und verwendet ihn dann, um die GDIINFO-Struktur in die entsprechenden Felder aufzufüllen. |
E_NOTIMPL | Die MxdcGetPDEVAdjustment-Funktion wird nicht von der Druckerschnittstelle implementiert. Die Druckerschnittstelle darf die Felder, die nicht unterstützt werden, nicht ändern. Das MXDC verwendet standardmäßig die aktuellen Standardwerte. Für den Bildbereichsfall verwendet MXDC standardmäßig die physische Seitengröße. Für die Komprimierungsoption verwendet MXDC standardmäßig eine mittlere JPEG-Komprimierung. |
E_FAIL | Für diesen Wert oder andere Fehlerwerte gibt der MXDC -1 an die DrvEnablePDEV-Funktion zurück, fängt die interne Ausnahme ab und legt ein Flag fest, um den Druckauftrag zu fehlschlagen und zu beenden. |
Die MxdcGetPDEVAdjustment-Funktion wird vom Hardwarehersteller implementiert. Das MXDC ruft diese Funktion auf, um Druckerkonfigurationsdaten in Form eines Eigenschaftenbehälters abzurufen, der die folgenden Daten enthält:
MXDC ermöglicht es der Druckerschnittstellen-DLL, dpi über die MxdcGetPDEVAdjustment-Funktion nur dann anzupassen, wenn das Feld dmPrintQuality des Druckauftrags einen Wert aufweist, der kleiner oder gleich 0 ist. Wenn der DPI-Wert nicht angepasst wird, ordnet MXDC negative dmPrintQuality-Werte den folgenden Auflösungen zu.
GDI-Name (Wingdi.h) | GDI-Wert(Wingdi.h) | MXDC-Standardinterpretation (Punkte pro Zoll) |
---|---|---|
DMRES_HIGH | –4 | 2400 |
DMRES_MEDIUM | -3 | 1200 |
DMRES_LOW | -2 | 600 |
DMRES_DRAFT | -1 | 400 |
Der Name der MXDC-Eigenschaft, die den MXDC-Standardwert dpi-Wert speichert, lautet L"MxdcDotsPerInch".
In der folgenden Tabelle sind die Eigenschaftentypen und Eigenschaftenbehälterfelder des MXDC für die Eigenschaften aufgeführt:
Property (propertyName) | Eigenschaftstyp (ePropertyValue) | Eigenschaftenbehälterfelder |
---|---|---|
L"MxdcImageableArea" | kPropertyTypeBuffer | PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyBlob.cbBuf = sizeof(RECT) PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyBlob.pBuf |
L"MxdcImageCompressionType" | kPropertyTypeInt32 | PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyInt32 |
L"MxdcDotsPerInch" | kPropertyTypeInt32 | PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyInt32 |
L"MxdcLandscapeRotation" | kPropertyTypeInt32 | PrintPropertiesCollection::p ropertiesCollection[i].propertyValue.value.propertyInt32 |
In der folgenden Tabelle sind die vom MXDC unterstützten Datentypen und Datenwerte für die Eigenschaften aufgeführt:
Property (propertyName) | Datentypen und Werte |
---|---|
L"MxdcImageableArea" | Datentyp: RECT Werte: RECT::left (identisch mit FORM_INFO_1) RECT::right (identisch mit FORM_INFO_1) RECT::top (identisch mit FORM_INFO_1) RECT::bottom (identisch mit FORM_INFO_1) |
L"MxdcImageCompressionType" | Datentyp: LONG Werte: 1 = JPEG High Compression 2 = MITTLERE JPEG-Komprimierung 3 = JPEG Low Compression 4 = PNG-Komprimierung |
L"MxdcDotsPerInch" | Datentyp: LONG Werte: Ein positiver Wert für Dots Per Inch |
L"MxdcLandscapeRotation" | Datentyp: LONG Werte: 90 = MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_90_DEGREES 0 = MXDC_LANDSCAPE_ROTATE_NONE -90 = MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_270_DEGREES |
Die MxdcGetPDEVAdjustment-Funktion ist kein Teil des MXDC. Das MXDC ruft diese Funktion in der Konfigurations-DLL des Treibers zurück, um Daten zum Konfigurieren des Druckers abzurufen.
Das MXDC erwartet, dass der bildbare Bereich in nichtrotierten Koordinaten (Hochformat) ausgedrückt wird. Der MXDC dreht sowohl die Seitengröße als auch den bildbaren Bereich entsprechend dem Wert des dmOrientation-Elements der DEVMODE-Struktur, auf die pDevMode verweist. Daher sollte die Implementierung von MxdcGetPDEVAdjustment durch den Hardwarehersteller vermeiden, den bildbaren Bereich in gedrehten Koordinaten (Querformat) anzugeben, da dies dazu führt, dass Querformatdruckaufträge falsch gedruckt werden.
Der Standardwert im MXDC ist MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_270_DEGREES, was dem aktuellen Legacyverhalten entspricht.
Die gesamte Drehung erfolgt auf dem bildbaren Bereich. Wenn eine Konfigurationskomponente (UniDrv/PostScript, XPSDrv Monolithic) die neuen Eigenschaftenbehälterwerte nicht versteht, sollte sie sie ignorieren, wie es im aktuellen Entwurf der Fall ist.
Anforderung | Wert |
---|---|
Zielplattform | Desktop |
Kopfzeile | mxdc.h (mxdc.h einschließen) |