如何在Win32上使用Perl将数据发送到网络打印机?

时间:2009-09-16 15:33:31

标签: perl winapi printing

我需要使用Perl将相对复杂的布局打印到网络/共享打印机,我没有任何运气找到模块或示例来帮助我完成任务。有没有人有任何可以帮助我的链接?

我认为我想要做的就是Postscript。

更新:好的,我真的不需要有关如何生成PDF或Postscript的帮助。我确信这是有据可查的。我想知道的是,我将如何使用从perl 向Windows中的打印机发送PDF。

4 个答案:

答案 0 :(得分:3)

Win32::Printer公开了Win32打印API,包括打印机选择和低级打印命令。

但是,(IMHO)在任何打印机上打印PDF文件的简便方法是使用Ghostscript生成PCL或PS输出(取决于打印机支持的语言),然后生成copy生成的文件到打印机(使用其UNC路径)。您可能需要为/b命令指定copy开关。

答案 1 :(得分:3)

好的,我仍然需要学习附言或其他东西,但我发现以下工作:

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

不太复杂。这似乎比open打印机和print更好。

答案 2 :(得分:2)

如果您有PDF文件,并且用户安装了Adobe Reader(这是非常标准的),您应该可以使用ShellExecute中的Win32::FileOp功能将文件打印到默认打印机:

use Win32::FileOp 'ShellExecute';

ShellExecute(print => 'A:/Path/to/File.pdf');

答案 3 :(得分:-1)

Wx :: Perl具有非常好的,自由许可的Win32引脚功能。

我没有使用WxPerl的Postscript或PDF,所以我不知道会涉及什么。谷歌搜索wxPerl打印pdf出现this post on the wxperl list

  

主题:Re:[wxperl-users]打印a   来自wxPerl Actions的PDF ...来自:Mark   Dootson(标记... @ znix.com)日期:4月   5,2007 5:02:40 pm   列表:org.perl.wxperl-users

     

您好,

     写完最后的回复后,一个巨大的   我觉得kludge就像它一样   事实证明,工作正常。

     

使用Wx :: ActiveX :: IE传递它的URL   你的pdf,并愉快地打印。 e.g。

 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   插件可能看起来有点过分   只是打印一个文档,但是,这就是   窗口和四行代码是   非常令人印象深刻。

     

标记

This command line program可能是另一种选择。我没有尝试过,也无法保证它,但它声称可以将postscript数据打印到非postscript打印机。