Настройки принтера в файл PostScript или PCL - PullRequest
0 голосов
/ 14 ноября 2018

Мне нужно: Распечатать большое количество PDF-файлов с дуплексом на определенном устройстве подачи на принтер

У меня есть: печать с использованием ghostscript с устройством 'mswinpr2'

using (GhostscriptProcessor processor = new GhostscriptProcessor(new GhostscriptVersionInfo("gsdll32.dll")))
{
    List<string> switches = new List<string>();
    switches.Add("-dPrinted");
    switches.Add("-dBATCH");
    switches.Add("-dNOPAUSE");
    switches.Add("-dNumCopies=1");
    switches.Add("-dPDFFitPage");
    switches.Add("-dFIXEDMEDIA");
    switches.Add("-dNoCancel");
    switches.Add("-sFONTPATH = C:\\Windows\\Fonts");
    switches.Add("-sDEVICE=mswinpr2");
    switches.Add($"-sOutputFile=%printer%{settings.PrinterName}");
    switches.Add("D:\\11.pdf");
    processor.StartProcessing(switches.ToArray(), null);
}

Проблема: одно задание в очереди печати, состоящее из 2 страниц, занимает более 50 МБ, а у меня более 1500 PDF-файлов с 1 000 000 страниц

Что я думаю сделать: Конвертировать PDF в PCL или PS, редактировать эти файлы и каким-то образом передавать настройки (дуплекс и конкретное устройство подачи).Затем отправьте отредактированный файл PCL или PS в виде данных RAW на принтер

Вопрос: Как передать настройки в PCL или PS?

1 Ответ

0 голосов
/ 14 ноября 2018

Поскольку файлы PDF не могут содержать специфическую для устройства информацию, вам явно не нужно выбирать такую ​​информацию из ввода, что упрощает жизнь.

Устройство Ghostscript ps2write способно вставлять в вывод PostScript шириной документа или страницы. Таким образом, вы можете «передать настройки», используя это.

Для PCL вам (вероятно) нужно написать какой-нибудь специфичный для устройства PJL и вставить его в вывод PCL. Тем не менее, PCL далеко не так однороден, как PostScritp, вам будет необходимо выяснить, какой префикс должен быть добавлен к файлу.

[EDIT]

Вы не используете -sPSDocOptions, PSDocOptions - это параметр для дистиллятора, поэтому вам необходимо:

gswin64c.exe -q -dSAFER -dNOPAUSE -dBATCH -sDEVICE=ps2write -sOutputFile=D:\out.ps -c "<</PSDocOptions (<</Duplex true /NumCopies 10>> setpagedevice)>> setdistillerparams" -f D:\0.pdf

Обратите внимание, что вам не нужен -f (как у вас в командной строке) , если у вас нет первого набора -c. Ключ -f используется как терминатор для -c.

...