我想通过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