Поделиться через


Метод 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

Драйвер принтера отправляет %%DocumentNeededResources: после отправки раздела %%Trailer .

PSINJECT_DOCSUPPLIEDRES После того, как драйвер принтера отправляет %%DocumentSuppliedResources: в поток данных вместе со сведениями о ресурсе. Если метод IPrintOemPS::Command отправляет сведения о ресурсе, он добавляется в поток после сведений о ресурсе драйвера. Формат записи выглядит следующим образом:

%%+ResourceTypeResourceNames

Драйвер принтера отправляет %%DocumentSuppliedResources: после отправки раздела %%Trailer .

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:(atend) в поток данных. Данные, предоставляемые 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 не предоставит ERROR_SUCCESS для dwResult. Другие подключаемые модули не вызываются. Если все подключаемые модули предоставляют ERROR_NOT_SUPPORTED, данные, предоставленные драйвером, не заменяются.

  • Если точка внедрения является точкой, для которой предоставленные данные заменяют данные, предоставленные драйвером принтера, и если приложение уже заменило предоставленные драйвером данные с помощью функции escape-POSTSCRIPT_INJECTION принтера, подключаемые модули не вызываются.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть prcomoem.h (включая Prcomoem.h)