2012-03-07 9 views
0

Кто-нибудь знает, можно ли сохранить задание на печать с помощью Microsoft Print Spooler API?Microsoft Print Spooler API - сохранить задание на печать?

Я хотел был бы удержать его перед отправкой на принтер.
Возможно ли это?

+0

System.Printing.PrintQueue.Pause() - это то, что вы получили. Вам придется с этим справиться. –

ответ

0

Это зависит от того, сколько у вас контроля над процессом печати. Команда SetJob позволяет вам приостановить отдельное задание, но вам нужно будет войти, прежде чем какие-либо данные будут потенциально отправлены из порта на принтер.

Когда приложение печатает задание нормальный путь печати идет Somthing как

  • StartDocPrinter
  • StartPagePrinter
  • WritePrinter
  • ....
  • EndPagePrinter
  • ...
  • EndDocPrinter

Если вы можете получить команду SetJob перед первым трактом WritePrinter, вы сможете приостановить задание до отправки любых данных на устройство.

К сожалению, если вы используете что-то вроде класса C# PrintDocument, он скрывает большую часть этого и не предоставляет никакого способа получить параметр JobId и дескриптор принтера, который вам нужно будет вызвать командой SetJob.

0

Если вы используете AddJobW() и ScheduleJob(), то да.

AddJobW() создает задание, а ScheduleJob() запускает его. (Для образца кода см here.)

Итак ...

  1. Вызов AddJobW(), чтобы создать работу (ы).
  2. Позвоните в SetJobW(), чтобы переименовать каждое задание, соединить их вместе (допуск) и т. Д.
  3. Вызовите ScheduleJob(), чтобы начать работу (-а).