MXDC_ESCAPE函数

MXDC_ESCAPE打印机转义函数允许应用程序通过 Microsoft XPS 文档转换器 (MXDC) 将文档写入文件或 XML 纸张规范中的打印机 (XPS) 格式。

若要执行此操作,请使用以下参数调用 ExtEscape 函数。

语法

int MXDC_ESCAPE(
    hdc,
    cbInput,
    lpszInData,
    cbOutput,
    lpszOutData
);

parameters

hdc

打印机设备上下文的句柄。

cbInput

lpszInData 参数指向的数据的大小(以字节为单位)。

lpszInData

指向包含输入数据的缓冲区的指针,该数据始终存储在以下结构之一中。

**MxdcEscapeHeader**
**MxdcPrintTicketEscape**
**MxdcS0PagePassthroughEscape**
**MxdcS0PageResourceEscape**

其中每个结构都有一个操作码成员,用于指定 MXDC 应执行的操作。 有关这些代码的详细说明,请参阅 MxdcEscapeHeader。

操作代码 (操作码) 操作
MXDCOP_GET_FILENAME
ExtEscape 函数的 lpszOutData 参数设置为,将输出文件的完整路径设置为零终止字符串,或者将该字符串的大小设置为 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

指向包含输出数据的缓冲区的指针。

返回值

如果函数成功,则返回值大于零。 如果函数失败或不受支持,则返回值小于或等于零。

注解

MXDC 和 XPSDrv 支持此转义,但不受 GDI 支持。

若要确定打印机驱动程序是否为 MXDC,请使用 GETTECHNOLOGY 转义调用 ExtEscape。 如果驱动程序是 MXDC, ExtEscape 将返回以零结尾的字符串“http://schemas.microsoft.com/xps/2005/06"。 请确保 lpszOutData 参数引用的缓冲区足够大,可以保存此字符串。

若要确定打印机驱动程序是否是现成的 Microsoft XPS 文档编写器驱动程序Windows,请确认打印机驱动程序为 MXDC,然后确定打印机驱动程序的名称是否为“Microsoft XPS 文档编写器”。

若要获取打印机驱动程序名称,请使用以下技术之一。

使用 Level 参数值设置为 1 调用 GetPrinterDriver。 打印机驱动程序名称在DRIVER_INFO_1结构的 pName 成员中返回。
or
调用 GetPrinter ,并将 Level 参数值设置为 2。 打印机驱动程序名称在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