从C#-Program到特定纸盘上的Ghostscript进行PDF打印

在我当前的软件中,我正在创建pdf文件,并使用ghostscript将它们打印出来,如下所示:

...
string[] printParams = new string[] {
"-q",
"-sDEVICE=mswinpr2",
"-sPAPERSIZE=a4",
"-dNOPAUSE",
"-dNoCancel",
"-dBATCH",
"-dDuplex",
string.Format(@"-sOutputFile=""\\spool\{0}""", printerName),
string.Format(@"""{0}""", filename)
...
var p = new Process();
p.StartInfo.FileName = this.ghostScriptExePath;
p.StartInfo.Arguments = string.Join(" ", printParams);
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
...

到目前为止,它工作正常,并且可以在指定的打印机上打印出来.

我的问题是,在某些情况下,我想从特定纸盒中打印出pdf文档.

可以用ghostscript实现吗?

我知道,我可以在已安装的设备上添加打印机两次,一次是在纸盘1上,一次是在纸盘2,但是要在所有受影响的客户端PC上进行配置会花费很多精力.

谢谢您的帮助!

卡尔

解决方法:

我确定可以解决的一个想法:

由于使用的是Ghostscript,因此可以将PDF栅格化为图像,然后使用.NET框架中已内置的PrintDocument类来打印图像.这样,您可以通过将PageSettings.PaperSource设置为其他纸盘来选择要使用的纸盘.看一下这个例子:How to select different tray for PrintDocument with C#

为了从C#代码中更简单地使用Ghostscript,可以使用Ghostscript.NET,它是Ghostscript库的托管包装.看一下有关如何将PDF光栅化为图像的示例:GhostscriptRasterizer Sample.

也可以通过NuGet获得Ghostscript.NET:http://www.nuget.org/packages/Ghostscript.NET/

如果要使用Ghostscript进行所有操作,可以将PDF转换为Postscript,解析该Postscript文件,通过添加进纸匣选择代码对其进行修改,然后打印Postscript文件.

上一篇:javascript可以“检测”浏览器的打印设置(特别是如果选择了打印背景色)?


下一篇:c#-AmyuniPDF以错误的字体(特殊字符)打印PDF文档