IPrintOemPS::Command 方法 (prcomoem.h)

IPrintOemPS::Command 方法用于呈现 Microsoft PostScript 打印机驱动程序的插件,以便将 PostScript 命令插入到打印作业的数据流中。

语法

HRESULT Command(
        PDEVOBJ   pdevobj,
        DWORD     dwIndex,
        PVOID     pData,
        DWORD     cbSize,
  [out] OUT DWORD *pdwResult
);

参数

pdevobj

调用方提供的指向 DEVOBJ 结构的指针。

dwIndex

调用方提供的值,表示打印作业数据流中的当前注入点。 有关更多信息,请参见下面的“备注”部分。

pData

未使用。

cbSize

未使用。

[out] pdwResult

接收一个方法提供的值,该值指示插入操作的结果。 如果插入成功,应ERROR_SUCCESS此值。 如果插入失败,该值应为 winerror.h 中定义的错误代码之一。 如果方法未尝试插入指定 dwIndex 值的数据,则应ERROR_NOT_SUPPORTED该值。

返回值

方法必须返回以下值之一。

返回代码 说明
S_OK
操作成功。
E_FAIL
操作失败
E_NOTIMPL
该方法未实现。

注解

IPrintOemPS::Command 方法用于将 PostScript 命令插入到由 Microsoft PostScript 打印机驱动程序生成的数据流中。 如果要提供此方法,则必须在呈现插件中定义它。

调用 IPrintOemPS::Command 方法时,其 dwIndex 参数指定打印作业数据流中的当前注入点。 方法应使用此值来确定要执行的操作(如果有)。 下表中列出了 wingdi.h 中定义的索引值。

索引值 收到时
PSINJECT_BEGINDEFAULTS 打印机驱动程序将 %%BeginDefaults 发送到数据流之后。
PSINJECT_BEGINPAGESETUP 打印机驱动程序将 %%BeginPageSetup 发送到数据流之后。
PSINJECT_BEGINPROLOG 打印机驱动程序将 %%BeginProlog 发送到数据流之后。
PSINJECT_BEGINSETUP 打印机驱动程序将 %%BeginSetup 发送到数据流后。
PSINJECT_BEGINSTREAM 在打印机驱动程序发送数据流的第一个字节之前。
PSINJECT_BOUNDINGBOX 当打印机驱动程序准备好将 %%BoundingBox: 插入数据流时。 IPrintOemPS::Command 提供的数据替换了驱动程序的 %%BoundingBox: 注释。
PSINJECT_COMMENTS 在打印机驱动程序将 %%EndComments 发送到数据流之前。
PSINJECT_DLFONT 在打印驱动程序下载软字体之前。
PSINJECT_DOCNEEDEDRES 打印机驱动程序将 %%DocumentNeededResources: 连同资源信息一起发送到数据流。 如果 IPrintOemPS::Command 方法发送资源信息,则会在驱动程序的资源信息之后追加到流中。 条目格式如下所示:

%%+ResourceTypeResourceNames

打印机驱动程序在发送 %%Trailer 部分后发送 %%DocumentNeededResources

PSINJECT_DOCSUPPLIEDRES 打印机驱动程序将 %%DocumentSuppliedResources: 连同资源信息一起发送到数据流。 如果 IPrintOemPS::Command 方法发送资源信息,则会在驱动程序的资源信息之后追加到流中。 条目格式如下所示:

%%+ResourceTypeResourceNames

打印机驱动程序在发送 %%Trailer 部分后发送 %%DocumentSuppliedResources

PSINJECT_DOCUMENTPROCESSCOLORS
打印机驱动程序准备好将 %%DocumentProcessColors:color 插入数据流时。 IPrintOemPS::Command 提供的数据替换驱动程序的 %%DocumentProcessColors:color 注释。
PSINJECT_DOCUMENTPROCESSCOLORSATEND
当打印机驱动程序准备好插入 %%DocumentProcessColors 时: (atend) 到数据流中。 IPrintOemPS::Command 提供的数据替换驱动程序的 %%DocumentProcessColors: (atend) 注释。
PSINJECT_ENDDEFAULTS 在打印机驱动程序将 %%EndDefaults 发送到数据流之前。
PSINJECT_ENDPAGECOMMENTS 在打印机驱动程序将 %%EndPageComments 发送到数据流之前。
PSINJECT_ENDPAGESETUP 在打印机驱动程序将 %%EndPageSetup 发送到数据流之前。
PSINJECT_ENDPROLOG 在打印机驱动程序将 %%EndProlog 发送到数据流之前。
PSINJECT_ENDSETUP 在打印机驱动程序将 %%EndSetup 发送到数据流之前。
PSINJECT_ENDSTREAM 在打印机驱动程序发送数据流的最后一个字节之后。
PSINJECT_EOF 打印机驱动程序将 %%EOF 发送到数据流之后。
PSINJECT_ORIENTATION 打印机驱动程序准备好在数据流中插入 %%Orientation: 时。 IPrintOemPS::Command 提供的数据替换驱动程序的 %%Orientation: 注释。
PSINJECT_PAGEBBOX 打印机驱动程序准备好将 %%PageBoundingBox: 插入数据流时。 IPrintOemPS::Command 提供的数据替换驱动程序的 %%PageBoundingBox: 注释。
PSINJECT_PAGENUMBER 打印机驱动程序准备好将 %%Page: 插入数据流时。 IPrintOemPS::Command 提供的数据替换驱动程序的 %%Page: 注释。
PSINJECT_PAGEORDER 当打印机驱动程序准备好将 %%PageOrder: 插入数据流时。 IPrintOemPS::Command 提供的数据替换驱动程序的 %%PageOrder: 注释。
PSINJECT_PAGES 当打印机驱动程序准备好将 %%Pages:nnn 插入数据流时。 IPrintOemPS::Command 提供的数据替换了驱动程序的 %%Pages:nnn 注释。
PSINJECT_PAGESATEND 当打印机驱动程序准备好插入 %%Pages 时: (端) 到数据流中。 IPrintOemPS::Command 提供的数据替换驱动程序的 %%Pages: (atend) 注释。
PSINJECT_PAGETRAILER 打印机驱动程序将 %%PageTrailer 发送到数据流之后。
PSINJECT_PLATECOLOR 当打印机驱动程序准备好将 %%PlateColor:color 插入数据流时。 IPrintOemPS::Command 提供的数据替换驱动程序的 %%PlateColor:color 注释。
PSINJECT_PSADOBE 在打印机驱动程序发送 %! 之前PS-Adobe 到数据流。
PSINJECT_SHOWPAGE 在打印机驱动程序发送 showpage 命令之前。
PSINJECT_TRAILER 打印机驱动程序将 %%Trailer 发送到数据流之后。
PSINJECT_VMRESTORE 打印机驱动程序发送 还原 命令后。 (IPrintOemPS::Command 方法必须重新发送在上一个PSINJECT_VMSAVE后发送的所有资源(如果要重复使用这些资源)。)
PSINJECT_VMSAVE 在打印机驱动程序发送 保存 命令之前。 (请参阅 PSINJECT_VMRESTORE.)

IPrintOemPS::Command 方法必须调用 IPrintOemDriverPS::D rvWriteSpoolBuf 才能插入 PostScript 命令。

如果 IPrintOemPS::Command 方法由多个呈现插件导出,则每次打印机驱动程序到达注入点时,都会按照为安装指定插件的顺序调用这些方法。 下列规则适用:

  • 如果注入点将所提供的数据追加到打印机驱动程序提供的数据中,则会调用每个插件,并允许每个插件追加 PostScript 命令。

  • 如果注入点提供的数据替换了打印机驱动程序提供的数据,则调用插件,直到一个 IPrintOemPS::Command 方法为 dwResult 提供ERROR_SUCCESS。 不会调用其他插件。 如果所有插件都提供ERROR_NOT_SUPPORTED,则不会替换驱动程序提供的数据。

  • 如果注入点提供的数据替换了打印机驱动程序提供的数据,并且应用程序已使用 POSTSCRIPT_INJECTION 打印机转义函数替换了驱动程序提供的数据,则不会调用任何插件。

要求

要求
目标平台 桌面
标头 prcomoem.h (包括 Prcomoem.h)