MXDC_ESCAPE 函数
MXDC_ESCAPE打印机转义函数使应用程序能够通过 Microsoft XPS 文档转换器 (MXDC) 将文档写入 XML 纸张规范 (XPS) 格式的文件或打印机。
若要执行此操作,请使用以下参数调用 ExtEscape 函数。
语法
int MXDC_ESCAPE(
hdc,
cbInput,
lpszInData,
cbOutput,
lpszOutData
);
参数
-
hdc
-
打印机设备上下文的句柄。
-
cbInput
-
lpszInData 参数指向的数据的大小(以字节为单位)。
-
lpszInData
-
指向包含输入数据的缓冲区的指针,该数据始终存储在以下结构之一中。
- **MxdcEscapeHeader**
- **MxdcPrintTicketEscape**
- **MxdcS0PagePassthroughEscape**
- **MxdcS0PageResourceEscape**
其中每个结构都有一个 opcode 成员,用于指定 MXDC 应执行的操作。 有关这些代码的详细说明,请参阅 MxdcEscapeHeader。
操作代码 (操作代码) 操作 - MXDCOP_GET_FILENAME
将 ExtEscape 函数的 lpszOutData 参数设置为 ,将输出文件的完整路径设置为以零结尾的字符串或该字符串的大小。 - MXDCOP_PRINTTICKET_FIXED_DOC_SEQ
将打印票证与 XPS 固定文档序列相关联。 - MXDCOP_PRINTTICKET_FIXED_DOC
将打印票证与 XPS 文档相关联。 - MXDCOP_PRINTTICKET_FIXED_PAGE
将打印票证与 XPS 页面相关联。 - MXDCOP_SET_S0PAGE
将当前页的 XPS 标记发送到输出。 - MXDCOP_SET_S0PAGE_RESOURCE
将页面上的资源(如图像或字体)发送到输出。 - MXDCOP_SET_XPSPASSTHRU_MODE
将 MXDC 置于直通状态,使应用程序能够将 XPS 直接写入输出文件,而无需 MXDC 进行任何处理。 可以这样编写整个文档,甚至文档序列。 -
cbOutput
-
lpszOutData 参数指向的数据的大小(以字节为单位)。
-
lpszOutData
-
指向包含输出数据的缓冲区的指针。
返回值
如果函数成功,则返回值大于 0。 如果函数失败或不受支持,则返回值小于或等于零。
备注
MXDC 和 XPSDrv 支持此转义,但 GDI 不支持。
若要确定打印机驱动程序是否为 MXDC,请使用 GETTECHNOLOGY 转义调用 ExtEscape。 如果驱动程序是 MXDC, 则 ExtEscape 将返回以零结尾的字符串“http://schemas.microsoft.com/xps/2005/06"”。 确保 lpszOutData 参数引用的缓冲区足够大,足以容纳此字符串。
若要确定打印机驱动程序是否是 Windows 内置 Microsoft XPS 文档编写器驱动程序,请确认打印机驱动程序是 MXDC,然后确定打印机驱动程序的名称是否为“Microsoft XPS 文档编写器”。
若要获取打印机驱动程序名称,请使用以下方法之一。
- 调用将 Level 参数值设置为 1 的 GetPrinterDriver。 打印机驱动程序名称在 DRIVER_INFO_1 结构的 pName 成员中返回。
或
调用将 Level 参数值设置为 2 的 GetPrinter。 打印机驱动程序名称在 PRINTER_INFO_2 结构的 pDriverName 成员中返回。
下表显示了在 XPS 文件中查找各种对象的位置,将写入各种类型的对象。
Object | 输出文件中的位置 |
---|---|
固定页 | /Documents/1/Pages/Esc%d.fpage |
缩略图 | /Documents/1/Metadata |
打印票证 | /Documents/1/Metadata |
字体 | /Documents/1/Resources/Fonts |
映像 | /Documents/1/Resources/Images |
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows Vista [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2008 [仅限桌面应用] |
标头 |
|