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 [仅限桌面应用]
标头
Mxdc.h

另请参阅

打印

打印机转义函数

ExtEscape