Области PrintTicket (по умолчанию, пользователь, работа, документ, страница и т. Д.)

Я заканчиваю создание веб-службы, которая создает и распечатывает документы XPS, отправляя их в различные очереди печати на различных серверах печати. Веб-сервис работает в 2 режимах в зависимости от развертывания сайта. Первый использует учетную запись удостоверения пула приложений в качестве пользователя печати, второй режим использует олицетворение пользователя для принтеров типа "следуй за мной", так что пользователь регистрируется в задании на печать. Это все отлично работает.

Я должен нацелить определенные лотки на очереди печати и установить различные другие параметры для каждого задания, поэтому я сгенерировал принтеры, добавив пространство имен лотка в XML, и это также, похоже, работает.

Меня беспокоит это (и именно здесь мне нужно что-то держать в руках), потому что я делаю все это на стороне сервера STA с нитями, скажем, Боб работает, когда Боб печатает 200 документов микса (A4, A5, конверт) и билеты отключаются скажем дуплекс на принтере и у меня запущена учетная запись удостоверения пула приложений скажем 20 потоков печати с несколькими документами разных целевых лотков с различными параметрами одновременно, я собираюсь получить какие-либо проблемы или я собираюсь изменить настройки очереди принтера по умолчанию?

Согласно MS, MergeAndValidatePrintTicket может быть ограничен на разных уровнях (я согласен на уровень работы), но мне просто интересно, может ли кто-нибудь с опытом этого сценария подтвердить это как истинное и есть ли какие-то ошибки, потому что вся эта печать.Net Малари, кажется, изобилует ими.

Я дам совет всем, кто делает это. Если ваши целевые принтеры просты, скажем, только с 3 лотками разных размеров, просто установите размер носителя (ISOA4 или любой другой) в квитанции и установите входной лоток на неизвестный, и принтер сработает. К сожалению, принтеры, на которые я нацеливаюсь, имеют около 7 лотков, поэтому я должен выбрать целевой лоток.

Спасибо за прочтение.

1 ответ

Отредактировано, чтобы показать решение

Джон... это соответствующий раздел...

PrintTicket ptclone = pqTarget.UserPrintTicket * .Clone (); * <- удалить клон ()

// мой метод ниже для указания лотка, который будет использоваться для работы и других настроек. Poj мой класс printJob

PrintTicket pt = GetPrintTicketForJob (ptclone, poj.trayMediaSize, poj.trayNameSpace, poj.trayUri);

ValidationResult vr = pqTarget.MergeAndValidatePrintTicket (ptclone, pt, PrintTicketScope.JobScope);

pqTarget.UserPrintTicket = vr.ValidatedPrintTicket; <- удалить это

//pqTarget.Commit () // серверу печати в режиме localPrintServer это не понравилось при олицетворении пользователя

PrintSystemJobInfo pj = pqTarget.AddJob(poj.id, poj.fileName, false) <- не делайте этого

Я пытался использовать перегрузку.Net 4.5, в которой есть тикет печати, но сервер в режиме localPrintServer не понимал этот метод, хотя на нем был установлен сервер.Net 4.5, который был...

PrintSystemJobInfo pj = pqTarget.AddJob (poj.id.ToString (), poj.fileName, false, vr.ValidatedPrintTicket) <- сделайте это вместо.Net 4.5, и все это работает

Все отлично работает со следующими исключениями....

1) на мфд, которые контролируются сторонним программным обеспечением и используют олицетворение пользователя, настройка дуплекса по умолчанию остается активной для первого напечатанного документа, после этого все в порядке. Он работает нормально для Lexmarks (используется идентичность пула приложений). Лотки правильно назначены на оба типа, как и другие настройки.

2) Даты и номера (которые вставляются в документы в виде строк) и отображаются в окне просмотра XPS в порядке "ОК", переформатируются в "san serif", даже если абзац, в котором они находятся, написан, например, "Times New Roman", что ставит в тупик.

Можете ли вы заметить какие-либо провалы?

С уважением

Нил

Другие вопросы по тегам