使用带有VB.NET Windows窗体应用程序的Ghostscript在信封上打印

时间:2016-07-28 13:56:58

标签: vb.net pdf printing ghostscript

我需要打印两页PDF。第一页需要用于信封,然后第二页需要像正常一样打印一张普通纸。它可以在两个单独的PDF中,所以我的问题是:如何设置打印机使用Ghostscript使用信封?有没有人这样做过?我无法找到我需要的确切参数来完成此任务。我尝试了几种不同的东西,它仍然打印一张普通的纸张,不会使用容纳所有信封的信封托盘。看起来我需要更改为MediaType但我不知道参数。有任何想法吗?关于如何使用VB.NET/C#完成此操作的建议?继承我的代码,我没有任何参数处理信封。我的信封尺寸是9.5 x 4.15英寸。只是一个标准的信封。我已经尝试设置-sPAPERSIZE = c6,希望这足够接近触发信封托盘,但仍然没有运气。

        Dim psInfo As New ProcessStartInfo()
        psInfo.Arguments = String.Format(" -dPrinted -dNoCancel=true -dBATCH -dNOPAUSE -dNOSAFER -noquery -all -dNumCopies=1 -sDEVICE=mswinpr2 -sOutputFile=""%printer%{0}"" ""{1}""", printername, pdfFileName)
        psInfo.FileName = "C:\Program Files\gs\gs9.15\bin\gswin64c.exe"
        psInfo.RedirectStandardError = True
        psInfo.RedirectStandardOutput = True
        psInfo.UseShellExecute = False
        Dim p As System.Diagnostics.Process = System.Diagnostics.Process.Start(psInfo)
        Dim s As String = p.StandardError.ReadToEnd &      p.StandardOutput.ReadToEnd
        'System.Threading.Thread.Sleep(15000)
        p.WaitForExit(15000)
        If p.HasExited = False Then
            p.Kill()
        End If

1 个答案:

答案 0 :(得分:0)

使用mswinpr2设备时,大多数Ghostscript命令行或多或少与物理打印机无关。各种命令行选项会影响Ghostscript PostScript解释器的行为,但只有特定于设备的参数才会影响设备。

mswinpr2设备不会更改设备的托盘/介质选择(除非您将其设置为在每次打印时查询用户的打印属性)。所以它改为使用打印机默认值。

要使其在信封媒体上打印,您需要将打印机默认设置设置为信封。