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) |