2016-07-28 90 views
0

我需要打印兩頁PDF。第一頁需要用於信封,然後第二頁需要像正常一樣打印普通紙。它可以在兩個單獨的PDF中,所以我的問題是:如何將打印機設置爲使用Ghostscript使用信封?有沒有人曾經這樣做過?我無法找到我需要的確切參數來完成此操作。我嘗試了幾種不同的東西,它仍然會打印普通紙張,並且不會使用容納所有信封的信封托盤。它看起來像我需要改變到MediaType,但我不知道這個參數。有任何想法嗎?有關如何使用VB.NET/C#完成此操作的建議?下面是我的代碼,我沒有任何參數處理信封。我的信封尺寸是9.5 x 4.15英寸。只是一個標準的信封。我已經嘗試設置-sPAPERSIZE = c6,希望這將足夠接近觸發信封托盤,但仍然沒有運氣。在VB.NET上使用Ghostscript在信封上打印Windows窗體應用程序

 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 
+0

我認爲這可能是打印機特定的 - 如果您有打印機的ppd文件,您可以檢查它並檢查設置到postscript中的代碼以選擇信封紙盒 –

回答

0

當使用mswinpr2設備時,大部分Ghostscript命令行或多或少與物理打印機無關。各種命令行選項會影響Ghostscript PostScript解釋器的行爲,但只有設備特定的參數會影響設備。

mswinpr2設備不會更改設備的紙盤/介質選擇(除非您將其設置爲向用戶詢問每次打印的打印屬性)。所以它使用打印機的默認值。

爲了讓它在信封介質上打印,您需要將打印機默認設置設置爲信封。

+0

將其默認設置爲信封的唯一問題是他們將它用於其他打印作業,而不僅僅是信封,因此我需要能夠切換我需要使用的托盤。任何想法如何做到這一點?有我可以使用的另一個工具嗎? – user2722517

+0

你無法做到你用mswinpr2 devioce所要求的那樣簡單,它從來沒有打算成爲一個無人值守的打印管理器。我毫不懷疑你可以修改設備來做你想做的事情,這是一個簡單的編碼問題。備擇方案 ?那麼這裏有Adobe PDF打印引擎,毫無疑問,在Windows上打印PDF文件還有很多其他解決方案。 – KenS

+0

我實際上使用ghostscript與後臺應用程序,我有一個定時器,它每秒鐘滴答。它現在已經很好用了很多年,所以一旦它們從我們的網頁上打印出來,它就會自動發送到它們的打印機。像魅力一樣工作,所以它可以完成而不是信封。 – user2722517