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 向 DrvEnablePDEV 函数返回 -1,捕获内部异常,并将标志设置为失败并结束打印作业。

注解

MxdcGetPDEVAdjustment 函数由硬件供应商实现。 MXDC 调用此函数以属性包的形式获取打印机配置数据,其中包括以下数据:

MXDC 仅当打印作业的 dmPrintQuality 字段的值小于或等于 0 时,才允许打印机接口 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 单片式) 不理解新的属性值,则应按照当前设计中的原样忽略它们。

要求

要求
目标平台 桌面
标头 mxdc.h (包括 Mxdc.h)

另请参阅

DrvEnablePDEV

GDIINFO

IPrintOemUIMXDC 接口