Информация

Дата основания
Местоположение
Россия
Сайт
www.tinkoff.ru
Численность
5 001–10 000 человек
Дата регистрации

Блог на Хабре

Обновить
Комментарии 7
Если я правильно понимаю, то Ghostscript надо покупать, если собираетесь потом продавать свое .NET приложение.
Верно, у GhostScript лицензия AGLP, поэтому либо покупать версию для коммерческого использования, либо открывать исходники
а я недавно тоже делать печать в .Net, переделывал существующий растровый вариант в векторный. воспользовался возможность печатать Visual в XpsDocument, а потом уже печать его куда угодно — в принтер, в pdf-принтер и т.п.
хочу спросить, почему вы выбрали именно такой вариант с GhostScript, вместо такого способа? наткнулись на какие-то грабли?
Xps рассматривал как вариант, но так и не понял как там указать лоток принтера для каждой страницы документа. Потом вариант с PCL показался не сложным, кроме того его можно так же просто реализовать не только на .Net потому и остановился на PCL + GhostScript.

Интересно как узнать про ваше решение, т.е. как получали xps фалы, приходилось ли их модифицировать для многолотковой печати и как?
Добрый день.
Эксперементировали с печатью аналогичным способом и столкнулись со следующей проблемой:

Метод печати через посылку RAW данных в принтер — в нашем случае работает с принтером HP LaserJet 400 (ему можно посылать pdf, pcl, ps) — он всё печатает быстро и сразу.

А вот посылка аналогичных данных на HP LaserJect 3000 Series ни к чему не приводит (не печатается ни pdf, ни pcl, ни ps).
Если послать на Microsoft Print to PDF — тоже не работает — создается пустой файл.

Самое интересно, что если изменить драйвер принтера (HP 3000) на HP Universal Driver — то принтер начинает печать.

Есть подозрение что данные отправленные «напрямую» в принтер понимают только относительно новые принтеры. Старые же игнорируют…

У вас большой зоопарк принтеров используется с таким способом печати?
Дополню. Экспериментально полученный работающий механизм печати PDF средствами GhostScript (ориентация страниц печатается корректно). Работает с любыми принтерами, но по производительности явно уступает простой передаче данных напрямую в принтер.

                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("-sDEVICE=mswinpr2");
                    switches.Add($"-sOutputFile=%printer%{dq.Name}");
                    switches.Add(FullPath);

                    processor.StartProcessing(switches.ToArray(), GSCallBack);
                }
Добрый день!

Интересное наблюдение, спасибо что поделились.

Отлаживался я на принтере HP_M9050, на бою используются 603 и 606, так же проверял на Lexmark MS810.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.