MxdcGetPDEVAdjustment 函式 (mxdc.h)
MxdcGetPDEVAdjustment 函式是由印表機介面 DLL 導出,並提供Microsoft XPS 檔轉換器 (MXDC) 的列印機組態數據。
語法
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
目前具現化印表機的句柄。
[in] cbDevMode
DEVMODE 結構的大小,以位元組為單位,包括驅動程式的私人 DEVMODE 數據。
[in] pDevMode
MXDC 收到的 DEVMODE 結構複本。 印表機介面 DLL 會使用此結構的信息來傳回要求的數據。
[in] cbIn
輸入參數,以位元組為單位指定 pvIn 參數的大小。 此參數目前未使用,且其值為零。
[in, optional] pvIn
參數,包含從 MXDC 傳送至印表機介面 DLL 的數據。 此參數目前未使用,且其值 NULL。
[in] cbPrintPropertiesCollection
PrintPropertiesCollection 數據結構的大小,以位元組為單位。
pPrintPropertiesCollection
PrintPropertiesCollection 印表機介面 DLL 取得要求數據的數據結構。 此結構定義於 WinSpool.h 中。 要求的欄位可能會預先填入 MXDC 的預設數據。 印表機介面 DLL 必須忽略它無法理解的欄位。
傳回值
MxdcGetPDEVAdjustment 應該傳回下列其中一個值:
傳回碼 | 描述 |
---|---|
S_OK | 印表機介面 DLL 根據指定的 DEVMODE 結構成功傳回調整的可影像區域、壓縮類型或 DPI。 MXDC 會驗證傳回的可影像區域,然後使用它填入個別欄位的 GDIINFO 結構。 |
E_NOTIMPL | 印表機介面不會實作 MxdcGetPDEVAdjustment 函式。 印表機介面不得修改不支援的欄位。 MXDC 預設為目前的預設值。 針對可影像區域案例,MXDC 預設為使用實體頁面大小。 針對壓縮選項,MXDC 預設為中型 JPEG 壓縮。 |
E_FAIL | 針對此值或任何其他失敗值,MXDC 會將 -1 傳回至 DrvEnablePDEV 函式、攔截內部例外狀況,並設定旗標失敗並結束列印作業。 |
言論
MxdcGetPDEVAdjustment 函式是由硬體廠商實作。 MXDC 會呼叫此函式,以包含下列數據的屬性包形式取得列印機組態數據:
MXDC 可讓印表機介面 DLL 透過 MxdcGetPDEVAdjustment 函式調整 DPI,只有當列印作業的 dmPrintQuality 字段具有小於或等於 0 的值時。 如果未調整 DPI 值,MXDC 會將負 dmPrintQuality 值對應至下列解析度。
GDI 名稱 (Wingdi.h) | GDI 值(Wingdi.h) | MXDC 預設解譯(每英吋點數) |
---|---|---|
DMRES_HIGH | -4 | 2400 |
DMRES_MEDIUM | -3 | 1200 |
DMRES_LOW | -2 | 600 |
DMRES_DRAFT | -1 | 400 |
儲存 MXDC 預設 DPI 值的 MXDC 屬性名稱為 L“MxdcDotsPerInch”
下表列出屬性的 MXDC 屬性類型和屬性包欄位:
Property (propertyName) | 屬性類型 (ePropertyValue) | 屬性包欄位 |
---|---|---|
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 |
下表列出 MXDC 支援的屬性資料型態與資料值:
Property (propertyName) | 數據類型和值 |
---|---|
L“MxdcImageableArea” | 數據類型:RECT 值: RECT::left (與FORM_INFO_1相同) RECT::right (與FORM_INFO_1相同) RECT::top (與FORM_INFO_1相同) RECT::bottom (與FORM_INFO_1相同) |
L“MxdcImageCompressionType” | 數據類型:LONG 值: 1 = JPEG 高壓縮 2 = JPEG 中型壓縮 3 = JPEG 低壓縮 4 = PNG 壓縮 |
L“MxdcDotsPerInch” | 數據類型:LONG 值: 每英吋點數的正值 |
L“MxdcLandscapeRotation” | 數據類型:LONG 值: 90 = MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_90_DEGREES 0 = MXDC_LANDSCAPE_ROTATE_NONE -90 = MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_270_DEGREES |
MxdcGetPDEVAdjustment 函式不是 MXDC 的一部分。 MXDC 會在驅動程式的設定 DLL 中回呼此函式,以取得設定印表機的數據。
MXDC 預期可影像區域以未動座標表示(直向)。 MXDC 會根據 dmOrientationpDevMode 所指向之 DEVMODE 結構成員的值來旋轉頁面大小和可影像區域。 因此,硬體廠商實作 MxdcGetPDEVAdjustment 應避免在旋轉座標(橫向方向)中指定可影像區域,因為這會導致橫向列印作業列印錯誤。
MXDC 中的預設值將會MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_270_DEGREES,也就是其目前的舊版行為。
所有旋轉都會在可影像區域完成。 如果組態元件 (UniDrv/PostScript, XPSDrv Monolithic) 不瞭解新的屬性值,則應該忽略它們,如同目前設計中的一樣。
要求
要求 | 價值 |
---|---|
目標平臺 | 桌面 |
標頭 | mxdc.h (包括 Mxdc.h) |