pdf -打印从c#程序与Ghostscript在特定的托盘

本文关键字:Ghostscript 打印 程序 pdf | 更新日期: 2023-09-27 18:17:41

在我当前的软件中,我正在创建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上进行配置的大量工作。

谢谢你的帮助!

卡尔

pdf -打印从c#程序与Ghostscript在特定的托盘

只是一个想法,我相信它会工作:

既然你正在使用Ghostscript,你可以栅格化你的PDF的图像,然后通过使用PrintDocument类已经建立在。net框架打印图像。这样,您就可以通过设置 pagessettings来选择要使用的托盘。PaperSource到另一个托盘。看看这个例子:如何使用c#

为PrintDocument选择不同的托盘

为了在c#代码中更简单地使用Ghostscript,您可以使用Ghostscript。. NET, Ghostscript库的托管包装器。GhostscriptRasterizer示例.

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

如果你想用Ghostscript做所有的事情,你可以把你的PDF转换成Postscript,解析Postscript文件,通过添加托盘选择代码来修改它们,然后打印Postscript文件

基本上没有。mswinprs2设备不支持任何重要的配置,除了媒体大小和颜色深度。你可以让设备弹出一个打印对话框,让你可以交互式地更改设置。

或者您可以添加它,您需要添加一个开关来指定您想要的纸盘,然后在createDC创建设备上下文之前更改DEVMODE结构。