Chciałbym wydrukować plik (e) PDF na drukarce sieciowej Windows za pośrednictwem GhostScript.
(nie chcę używać Adobe Reader)Jak wydrukować plik PDF na domyślnej drukarce sieciowej za pomocą polecenia powłoki GhostScript (gswin32c.exe)
Czytałem gswin32c.exe, które mogą wykonać zadanie.
Eksperymentowałem z wieloma komendami i nie mogłem znaleźć sposobu, jak wymusić gs, aby wydrukować plik PDF na moim (domyślnym systemie Windows) napędzie sieciowym.
Nie potrzebuję dokładnej drukarki sieciowej - domyślnie można użyć. Ale jeśli nie ma takiej opcji, z przyjemnością przekazuję nazwę drukarki. (Próbowałem z param -sDEVICE = "\ IP_serwera \ PRINTER_NAME", ale to nie działał, jak również ...)
poleceń cmd działa pod Windows:
gswin32c -dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=1 -sDEVICE=ljet4 -sOutputFile="\\spool\\\Server_Name\Printer_name" "C:\test.pdf"
metodzie stworzonej bazy na wyżej - nie robi wyjątek od pracy i thorwsa. (Kod błędu = 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;
}
Każdy pomysł, jak sprawić, by działał pod C#?
Przepraszam, ale tylko dlatego, że planujesz wywołać to z poziomu aplikacji C#, nie oznacza to, że jest to problem programistyczny, sugeruję SuperUser dla tego pytania Ghostscript i zagłosowałem na to pytanie. – Lazarus
Edytowałem post, aby być bardziej specyficznym dla C# teraz – Maciej