我需要使用Perl将相对复杂的布局打印到网络/共享打印机,我没有任何运气找到模块或示例来帮助我完成任务。有没有人有任何可以帮助我的链接?
我认为我想要做的就是Postscript。
更新:好的,我真的不需要有关如何生成PDF或Postscript的帮助。我确信这是有据可查的。我想知道的是,我将如何使用从perl 向Windows中的打印机发送PDF。
答案 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打印机。