У меня есть функция, которая использует GhostScript.NET для печати документов PDF. Все работает правильно, если один пользователь пытается распечатать, однако, когда несколько пользователей пытаются одновременно печатать, он не печатает все документы. Я понимаю, что для создания многократной одновременной печати я создам несколько экземпляров ghostscript. Я наткнулся на этот вопрос:Попытка печати с использованием нескольких экземпляров GhostScript с параллельным циклом.
Ghostscript.NET Multithreading Issue
Один из пользователей говорит, чтобы создать параллельную forloop, но я честно не знаю, как построить один, так что он создает необходимое количество экземпляров GhostScript.
У меня есть основная функция:
public static void PrintFormPdfData(byte[] formPdfData, string printer)
{
var filename = @"C:\TEMP\report.pdf";
using (var file = new FileStream(filename, FileMode.Create, FileAccess.ReadWrite))
{
file.Write(formPdfData, 0, formPdfData.Length);
using (GhostscriptProcessor processor = new GhostscriptProcessor())
{
List<string> switches = new List<string>();
switches.Add("-empty");
switches.Add("-dPrinted=false");
switches.Add("-dBATCH");
switches.Add("-dPDFFitPage");
switches.Add("-dNOPAUSE");
switches.Add("-dNOSAFER");
switches.Add("-dNumRenderingThreads=3");
switches.Add("-dNumCopies=1");
switches.Add("-sDEVICE=mswinpr2");
switches.Add("-sOutputFile=%printer%" + printer);
switches.Add(filename);
try
{
processor.StartProcessing(switches.ToArray(), null);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
File.Delete(filename);
}
}
}
}
Любая помощь будет принята с благодарностью.
Проблема с кодом является, вы используете тот же путь к файлу для всех вызывающих абонентов – VMAtm
Да, я исправил это ниже. – Crumblenautjs