共用方式為


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)

另請參閱

DrvEnablePDEV

GDIINFO

IPrintOemUIMXDC 介面