У меня есть требование печатать кучу существующих файлов PDF каждый день в сети Ricoh MP 4000 Printer. Мне нужно распечатать их, используя параметр типа «HoldPrint». Я могу распечатать его напрямую, но я хочу, чтобы он выполнял печать с удержанием, которая не смешивается с печатью другого пользователя. Я использую GhostScript 9.10 тот, который непосредственно печатает (через вызов функции из "Maciej" 'ы пост):Пакетная печать PDF-файлов на принтере Ricoh MP 4000 с использованием Ghostscript без Adobe
"-dPrinted -dBATCH -dNOPAUSE -dNOSAFER -qQUIET -sjobtype = holdprint -suserid = а -dNumCopies = 1 -sDEVICE = ljet4 -sOutputFile = \ "\\ spool \ PrinterName \" \ "C: \ Printing \ mypdffile.pdf \" "
Похоже, я перезаписываю переключатель типа работы, но не уверен, как его получить.
Я пробовал разные комбинации, но он просто не работает. Любая помощь приветствуется.
-dPrinted -dBATCH -dNOPAUSE -dNumCopies = 1 -sDEVICE = ljet4 -sOutputFile =% принтер% PRINTERNAME "C: \ Печать \ mypdffile.pdf"
Update: Вот версия, которая работает для меня.
/*
* Printer used: Ricoh Aficio MP 4000
* Purpose: To print PDF files as a scheduled job to a network printer.
* The files will be queued under a specific user id.
* The user prints the files under his account.
* Pre-requisite: Install the network printer on the job server
* Manually configure Printer Job settings with user id
* and Job type set to "Hold Print"
*/
string _sourceFolder = “PDFFilesFolderPath”;
DirectoryInfo di = new DirectoryInfo(_sourceFolder);
var files = di.GetFiles().OrderBy(f => f.Name);
string _printer = "BMIS"; // Printer name as seen in the Devices and Printers section
foreach (var f in files)
{
PrintPDF(@"C:\Program Files\gs\gs9.10\bin\gswin32c.exe", 1, _printer, f.FullName);
}
/// <summary>
/// Print PDF.
/// </summary>
/// <param name="ghostScriptPath">The ghost script path. Eg "C:\Program Files\gs\gs9.10\bin\gswin32c.exee"</param>
/// <param name="numberOfCopies">The number of copies.</param>
/// <param name="printerName">Exact name of the printer as seen under Devices and Printers.</param>
/// <param name="pdfFileName">Name of the PDF file.</param>
/// <returns></returns>
public bool PrintPDF(string ghostScriptPath, int numberOfCopies, string printerName, string pdfFullFileName)
{
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.Arguments = " -dPrinted -dNoCancel=true -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies=" + Convert.ToString(numberOfCopies) + " -sDEVICE=mswinpr2 -sOutputFile=%printer%" + printerName + " \"" + pdfFullFileName + "\"";
startInfo.FileName = ghostScriptPath;
startInfo.UseShellExecute = false;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
Process process = Process.Start(startInfo);
process.WaitForExit(30000);
if (process.HasExited == false) process.Kill();
return process.ExitCode == 0;
}
catch (Exception ex)
{
System.Diagnostics.EventLog.WriteEntry("Application", ex.Message, EventLogEntryType.Error);
throw;
}
}
Спасибо, Кен. Я нашел решение частично. "-dPrinted -dBATCH -dNOPAUSE -dNOSAFER -q -dNumCopies =" + Convert.ToString (numberOfCopies) + "-sDEVICE = mswinpr2 -sOutputFile =% printer%" + printerName + "\" "+ pdfFullFileName +" \ ""; Единственное, что я контролирую свойство Job type непосредственно на принтере через его вкладку config. Теперь проблема заключается в том, что все задания в очереди печати называются документами Ghost script. Поиск, чтобы найти, чтобы динамически отправлять имена документов. до сих пор нет успеха. с сайта gs, его выполнили с помощью файла setup.ps, но не уверены, как мы отправляем каждое имя docname! –
Вот сообщение, на которое я изначально ссылался: http: //stackoverflow.com/questions/2599925/how-to-print-pdf-on-default-network-printer-using-ghostscript-gswin32c-exe-she? Rq = 1 –
Я не совсем уверен, что понимаю вашу проблему, и что бы это ни было, это не похоже на что-то вроде Ghostscript. Если вы сами контролируете принтер, то, конечно, имя задания зависит от вас?Также это может помочь, если вы ссылаетесь на документацию Ghostscript, которую вы читаете (документы предоставляются в виде файлов HTML, вам не нужно использовать веб-сайт) – KenS