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 會呼叫此函式,以包含下列數據的屬性包形式取得列印機組態數據:
只有在列印作業的 dmPrintQuality 字段具有小於或等於 0 的值時,MXDC 才能讓印表機介面 DLL 透過 MxdcGetPDEVAdjustment 函式調整 DPI。 如果未調整 DPI 值,MXDC 會將負 dmPrintQuality 值對應至下列解析度。
GDI 名稱 (Wingdi.h) | (Wingdi.h) GDI 值 | 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 會根據 pDevMode 所指向之 DEVMODE 結構 dmOrientation 成員的值來旋轉頁面大小和可影像區域。 因此,硬體廠商的 MxdcGetPDEVAdjustment 實作應該避免在旋轉座標中指定可影像的區域 (橫向) ,因為這會導致橫向列印作業列印不正確。
MXDC 中的預設值將會MXDC_LANDSCAPE_ROTATE_COUNTERCLOCKWISE_270_DEGREES,這是其目前的舊版行為。
所有旋轉都會在可影像區域上完成。 如果組態元件 (UniDrv/PostScript,XPSDrv Monolithic) 則無法瞭解新的屬性值包值,則應該將它們忽略為目前的設計。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | mxdc.h (包含 Mxdc.h) |