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


Функция PTMergeAndValidatePrintTicket (prntvpt.h)

Объединяет два билета на печать и возвращает действительный, жизнеспособный билет.

Синтаксис

HRESULT PTMergeAndValidatePrintTicket(
  [in]  HPTPROVIDER       hProvider,
  [in]  IStream           *pBaseTicket,
  [in]  IStream           *pDeltaTicket,
  [in]  EPrintTicketScope scope,
        IStream           *pResultTicket,
  [out] BSTR              *pbstrErrorMessage
);

Параметры

[in] hProvider

Дескриптор для открытого поставщика билетов на печать. Этот дескриптор возвращается функцией PTOpenProvider или PTOpenProviderEx .

[in] pBaseTicket

Указатель на билет печати. Позиция поиска потока должна находиться в начале содержимого билета на печать.

Примечание. PTMergeAndValidatePrintTicket проверяет базовый билет на соответствие платформе схемы печати перед слиянием.
 

[in] pDeltaTicket

Указатель на билет печати. Позиция поиска потока должна находиться в начале содержимого билета на печать. Этому параметру можно передать значение NULL. См. заметки.

Примечание. PTMergeAndValidatePrintTicket проверяет разностный билет на соответствие платформе схемы печати перед слиянием.
 

[in] scope

Значение типа , указывающее, является ли область pDeltaTicket и pResultTicket одной страницей, целым документом или всеми документами в задании печати. См. заметки.

pResultTicket

Указатель на поток, в который будет записан жизнеспособный объединенный билет. Позиция поиска будет находиться в конце билета на печать. См. заметки.

[out] pbstrErrorMessage

Указатель на строку, указывающую, что является недопустимым в pBaseTicket или pDeltaTicket. Если оба значения допустимы, это значение равно NULL. Проблемы с жизнеспособностью не отображаются в pbstrErrorMessage.

Возвращаемое значение

Если операция завершается успешно без конфликта между параметрами объединенного билета и возможностями принтера, функция HRESULT S_PT_NO_CONFLICT.

Если операция выполнена успешно, но объединенный билет пришлось изменить в одном или нескольких параметрах, так как он запрашивал функциональные возможности, которые принтер не поддерживает, hrESULT S_PT_CONFLICT_RESOLVED. См. заметки.

Если hProvider был открыт в другом потоке, HRESULT E_INVALIDARG.

Если pBaseTicket недействителен, hrESULT E_PRINTTICKET_FORMAT.

Если параметр pDeltaTicket недопустим, hrESULT E_DELTA_PRINTTICKET_FORMAT.

В противном случае в HRESULT возвращается другой код ошибки. Дополнительные сведения о кодах ошибок COM см. в разделе Обработка ошибок.

Комментарии

Примечание Это блокирующая или синхронная функция, возвращаемая не сразу. Скорость возврата этой функции зависит от факторов времени выполнения, таких как состояние сети, конфигурация сервера печати и реализация драйвера принтера, которые трудно предсказать при написании приложения. Вызов этой функции из потока, который управляет взаимодействием с пользовательским интерфейсом, может привести к тому, что приложение не отвечает.
 
hProvider должен быть дескриптором, который был открыт в том же потоке, что и поток, в котором он используется для этой функции.

Эта функция проверяется двумя способами: сначала проверяет оба входных билета на основе платформы схемы печати, сообщая об ошибках в pbstrErrorMessage. Затем он проверяет жизнеспособность объединенного билета печати с драйвером принтера. Если объединенный билет запрашивает функциональные возможности, которые принтер не поддерживает, нерабочие параметры заменяются, а драйвер принтера определяет, какой параметр замены следует использовать. Как правило, драйвер принтера использует параметр билета печати пользователя по умолчанию. Если драйвер принтера не использует тот же билет печати, на который указывает pBaseTicket в качестве источника для заменяемых значений, возможно, что pResultTicket будет отличаться в некоторых параметрах от обоих входных билетов печати.

Как правило, pBaseTicket содержит полный набор параметров задания, документа и страницы. Обычно для pBaseTicket используется билет печати по умолчанию для пользователя или устройства по умолчанию.

Если pDeltaTicket имеет значение NULL, метод проверяет pBaseTicket, проверяет его жизнеспособность и возвращает его,возможно измененный, в потоке, на который указывает pResultTicket.

Значения pDeltaTicket, которые находятся за пределами область, игнорируются. Например, если область представляет собой только одну страницу, параметры на уровне задания и параметры на уровне документа игнорируются. Область задания включают область документов и область страниц. Область документа содержит область страниц.

Параметры, которые находятся за пределами область, не включаются в pResultTicket.

Когда функция возвращает значение, позиция поиска pResultTicket находится в конце содержимого билета на печать. Вызывающий объект отвечает за сброс позиции поиска перед чтением данных.

Если функция pbstrErrorMessage не имеет значение NULL , вызывающий объект должен освободить строку с помощью SysFreeString.

Требования

Требование Значение
Минимальная версия клиента Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header prntvpt.h
Библиотека Prntvpt.lib
DLL Prntvpt.dll

См. также раздел

Схема печати

Функции API очереди печати принтера

Вывод на печать