Как отправить данные на сетевой принтер с Perl на Win32? - PullRequest
2 голосов
/ 16 сентября 2009

Мне нужно напечатать относительно сложные макеты на сетевых / общих принтерах с Perl, и мне не повезло найти модули или примеры, которые бы помогли мне в этой задаче. У кого-нибудь есть ссылки, которые могут мне помочь?

Я предполагаю, что то, что я хочу сделать, будет работать как Postscript.

обновление : Ладно, мне не нужна помощь в создании PDF или Postscript. Я уверен, что это хорошо задокументировано. То, что я хочу знать, это то, что я использую для отправки PDF на принтер в Windows из perl .

Ответы [ 4 ]

3 голосов
/ 17 сентября 2009

Хорошо, мне все еще нужно изучить PostScript или что-то еще, но я обнаружил, что работает следующее:

use autodie;
use File::Copy;
copy 'C:\\frew.ps', '\\\\oxygen\\HPLJ5100 PCL6';

Не слишком сложно. Кажется, это работает лучше, чем open при использовании принтера и print при работе с ним.

3 голосов
/ 17 сентября 2009

Win32 :: Printer предоставляет API печати Win32, включая команды выбора принтера и печати низкого уровня.

Однако (IMHO) простой способ печати PDF-файла на любом принтере - использовать Ghostscript для вывода PCL или PS (в зависимости от языка, поддерживаемого принтером), а затем copy полученный файл на принтер (используя UNC-путь). Возможно, вам потребуется указать переключатель /b для команды copy.

2 голосов
/ 17 сентября 2009

Если у вас есть файл PDF, и у пользователя установлен Adobe Reader (что довольно стандартно), вы сможете распечатать файл на принтере по умолчанию, используя функцию ShellExecute в Win32 :: * 1004 файловые операции *:

use Win32::FileOp 'ShellExecute';

ShellExecute(print => 'A:/Path/to/File.pdf');
0 голосов
/ 17 сентября 2009

Wx :: Perl имеет очень хорошие, свободно лицензируемые возможности пинтинга Win32.

Я не работал с Postscript или PDF от WxPerl, поэтому я не знаю, что будет с этим. Googling wxPerl print pdf включает это сообщение в списке wxperl .

Тема: Re: [wxperl-пользователи] распечатывает PDF от wxPerl Actions ... От: Марк Дутсон (отметка ... @ znix.com) Дата: апрель 5, 2007 17:02:40 Список: org.perl.wxperl-users

Привет,

После написания последнего ответа огромный мне пришло в голову, что, как это Оказывается, работает просто отлично.

используйте Wx :: ActiveX :: IE передать ему URL Ваш PDF, и печатать весело. например,

 my $obj = Wx::ActiveX::IE->new( $frame, -1, wxDefaultPosition, wxDefaultSize );
 $obj->LoadUrl("file:///C:/mytest.pdf");
 $obj->Print(0); # for no print dialog
 $obj->Print(1); # for print dialog

Конечно, загрузка IE и Acrobat плагин может показаться немного чрезмерным просто напечатать документ, но, черт возьми, это окна и четыре строки кода довольно впечатляет.

Mark

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...