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) | 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 的属性类型和属性包字段:
属性(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 支持的属性数据类型和数据值:
属性(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) |