Я пытаюсь отправить очень большое изображение на пользовательский принтер. Из-за ограничений памяти и того факта, что изображение обрабатывается как полноцветное, изображение необходимо разделить на части меньшего размера для отправки на принтер. Поскольку не все изображения будут иметь одинаковый размер (или параметры feed / cutMedia), я должен распечатать их отдельно, каждое из которых имеет свой собственный набор параметров
jobId = cupsPrintFile(...)
для каждого изображения (вместо jobId = cupsPrintFiles
)
Если на принтер отправляется несколько заданий или отправляются задания несколькими пользователями, существует риск того, что эти задания будут проходить между частями текущего задания.
Единственное решение, которое я могу придумать, — это отправить задания на печать в файл вместо принтера, используя все параметры (и пройдя через все фильтры), затем взять все созданные задания на печать и отправить их в виде пакета в принтер, с одним заданием …
Возможны ли оба этих шага?
Я могу «распечатать в файл», если я установил
lpoptions -o File="/home/me/abcd.prn"
….но…
1) Как мне сделать это с помощью кода C ++?
2) Как сделать так, чтобы это происходило с разными файлами abcd1.prn, abcd2.prn, abcd3.prn во время одного сеанса печати?
3) Как я могу отправить файлы abcd1.prn, abcd2.prn, abcd3.prn на принтер REAL во время той же сессии печати через код c ++? Как одиночная работа?
Возможен ли какой-либо из вышеперечисленных шагов?
Моя мысль — создать бэкэнд для печати в файл, а затем еще один бэкэнд для передачи файлов на принтер?
Я использовал 2dir backend, из Вот а затем прочитайте и объедините файлы, получив либо файл, который будет выглядеть как «печать в файл», либо его можно отправить на принтер за одно задание.
Для отправки в пользовательский бэкэнд я использовал опцию cups, а также создал скрипт, запускающий код для установки принтера, который использовал бэкэнд 2dir, если он не был установлен.