我想通過GhostScript在Windows的網絡打印機上打印PDF文件。
(我不想用Adobe Reader)如何使用GhostScript(gswin32c.exe)shell命令在默認網絡打印機上打印PDF
我讀過gswin32c.exe可以做的工作。
我嘗試了很多命令,並沒有找到如何強制gs在我的(windows默認)網絡驅動器上打印PDF的方式。
我不需要準確的網絡打印機 - 默認可以使用。但是,如果沒有這樣的選項,我很高興通過打印機名稱。 (我試過用PARAM -sDEVICE = 「\ SERVER_IP \打印機名稱」,但這種沒有工作,以及...)
命令在Windows CMD工作:
gswin32c -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=ljet4 -sOutputFile="\\spool\\\Server_Name\Printer_name" "C:\test.pdf"
方法創建的基礎上,上面 - 犯規工作和thorws例外。 (錯誤代碼= 1)
/// <summary>
/// Prints the PDF.
/// </summary>
/// <param name="ghostScriptPath">The ghost script path. Eg "C:\Program Files\gs\gs8.71\bin\gswin32c.exe"</param>
/// <param name="numberOfCopies">The number of copies.</param>
/// <param name="printerName">Name of the printer. Eg \\server_name\printer_name</param>
/// <param name="pdfFileName">Name of the PDF file.</param>
/// <returns></returns>
public bool PrintPDF (string ghostScriptPath, int numberOfCopies, string printerName, string pdfFileName) {
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = " -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=" + Convert.ToString(numberOfCopies) + " -sDEVICE=ljet4 -sOutputFile=\"\\\\spool\\" + printerName + "\" \"" + pdfFileName + "\"";
startInfo.FileName = ghostScriptPath;
startInfo.UseShellExecute = false;
Process process = Process.Start(startInfo);
return process.ExitCode == 0;
}
任何想法如何使它在C#下工作?
對不起,只是因爲你打算從你的C#應用程序調用這個不會讓它成爲一個編程問題,我會建議超級用戶爲這個Ghostscript問題,並已投票支持將此問題提交給你。 – Lazarus 2010-04-08 12:55:37
我編輯的帖子現在更具體的C# – Maciej 2010-04-08 13:17:56