Использование пользовательских сценариев печати документов в O&K Print Router.

Начиная с версии 3.00 O&K Print Router поддерживает выполнение пользовательских сценариев ускорения печати документов и распределения нагрузки на принтеры и принт-сервер. В качестве языка сценариев используется Chaiscript. Более подробную информацию о языке программирования Chaiscript можно найти на официальном веб-сайте - ChaiScript.

При печати документа на принтер O&K Print Router, сначала выполняются правила печати и перенаправления документов, заданные в настройках программы "Redirect". После обработки этих правил выполняется пользовательский скрипт печати (если задан) "Custom Script":

Для использования в скриптах доступны следующие функции:

Для каждого задания печати доступна следующая информация о печатаемом документе:

Для задания пользовательских правил печати необходимо набрать или вставить текст скрипта на вкладке "Custom Script" настроек программы и сохранить скрипт печати. Используя кнопку "Test", можно проверить правильности синтаксиса скрипта. В режиме тестирования печать на принтере не производится.

Примеры использования.

Печать документа на разных принтерах в зависимости от размера бумаги:

var printers = VectorOfString() // Объявляем переменную для списка принтеров

if (PaperSize == "A4") // Если размер документа "А4"
{
	// Добавляем принтеры в список
	printers.push_back("HP LaserJet 9000 PCL6")
	printers.push_back("Microsoft XPS Document Writer")

	// Печатаем документ на ОДНОМ, НАИБОЛЕЕ ДОСТУПНОМ принтере из списка с числом копий 1
	PrintBalanced(printers, 1)
} 
else // Если размер документа НЕ "А4"
{
	// Печатаем документ на одном принтере с числом копий 1
	Print("Microsoft XPS Document Writer", 1)
}

Печать документа на разных принтерах в зависимости от режима цветной печати:

var printers = VectorOfString() // Объявляем переменную для списка принтеров

if (Color == 1) // Если документ печатается в цвете
{
	// Добавляем принтеры в список
	printers.push_back("HP LaserJet 9000 PCL6")
	printers.push_back("Microsoft XPS Document Writer")
	
	// Печатаем документ на ВСЕХ принтерах из списка с числом копий 1
	PrintMultiply(printers, 1)
} 
else 
{
	// Печатаем документ на одном принтере с числом копий 1
	Print("Microsoft XPS Document Writer", 1)
}

Печать документа на разных принтерах с разным числом копий документа:

К примеру, если мы печатаем документ с числом копий больше 1 - мы хотели бы распределить печать между тремя принтерами в соотношении 20%, 30% и 50%. То есть, мы отправили на 10 копий документа на O&K Print Router и хотим распечатать 2 копии на принтере HP LaserJet 9000 PCL6, 3 копии на Brother DCP-7070DW и 5 копий на принтере Xerox WorkCentre Pro 275. Для этого, необходимо создать следующий скрипт печати:
if (Copies > 1) // Если число копий документа больше 1
{
	var copies1 = Copies * 0.2 // вычисляем 20% от общего числа копий
	Print("HP LaserJet 9000 PCL6", copies1) // вычисляем 30% от общего числа копий
	
	var copies2 = Copies * 0.3 // вычисляем 30% от общего числа копий
	Print("Brother DCP-7070DW Printer", copies2) // печатаем на втором принтере 30% копий
	
	var copies3 = Copies - copies1 - copies2 // вычисляем оставшееся число копий
	Print("Xerox WorkCentre Pro 275", copies3) // печатаем остальные копии на третьем принтере
}
else
{
	Print("Xerox WorkCentre Pro 275", Copies) // если число копий 1 - печатаем документ на этом принтере
}