Как отправить запрос от клиента на серверный принтер для печати с помощью приложения C# .NET windows?
Привет,
How to send request from client to server printer for printing using c# .net windows application?
Я хочу создать приложение для печати документа, когда принтер установлен на сервере.
Я использую службу windows на серверной машине, когда пользователь отправляет файл с клиента на сервер в пространственную папку, поэтому служба windows будет выбирать и печатать файл из этой папки.Но мой документ не напечатали.
Я использую этот код для печати службы windows.
заранее спасибо.
Пожалуйста, помогите мне.
Анкит Агарвал
инженер-программист
Что я уже пробовал:
string schTime; string _lastTime; Timer timer1 = new Timer(); protected override void OnStart(string[] args) { try { //Debugger.Break(); TraceService("Start Service" + " " + DateTime.Now.ToString()); timer1.Elapsed += new ElapsedEventHandler(OnElapsedTime); timer1.Enabled = true; //timer1.Interval = 1000; //string[] files = Directory.GetFiles(@"C:\PrintingDocument\"); //foreach (string file in files) //{ // if (File.Exists(file)) // { //timer1.Elapsed += new ElapsedEventHandler(OnElapsedTime); //timer1.Enabled = true; // } // else // { // TraceService("File did not exists"); // } //} //Debugger.Break(); } catch (Exception ex) { TraceService("Error: " + ex); //EventLog.WriteEntry("Error: " + ex.Message); } } private void OnElapsedTime(object source, ElapsedEventArgs e) { try { //timer1.Stop(); //Debugger.Break(); //if (!schTime.Contains(DateTime.Now.ToString("HH:mm")) || DateTime.Now.ToString("HH:mm") == _lastTime) // return; //_lastTime = DateTime.Now.ToString("HH:mm"); timer1.Enabled = false; TraceService("Another entry at" + " " + DateTime.Now); if (!Directory.Exists(@"C:\PrintingDocument")) Directory.CreateDirectory(@"C:\PrintingDocument"); string[] files = Directory.GetFiles(@"c:\PrintingDocument\"); foreach (string file in files) { //if (string.IsNullOrEmpty(file)) //{ // //txtFileName.BackColor = Color.Yellow; // //MessageBox.Show("Please Select file."); // return; //} ProcessStartInfo info = new ProcessStartInfo(file); info.Verb = "Print"; info.CreateNoWindow = true; info.WindowStyle = ProcessWindowStyle.Hidden; Process.Start(info); TraceService(@"C:\PrintingDocument\" + file); TraceService(@"C:\PrintedDocument\" + file); System.IO.File.Move(@"C:\PrintingDocument\" + file, @"C:\PrintedDocument\" + file); } TraceService("Printing Sucessfully" + " " + DateTime.Now.ToString()); timer1.Enabled = true; //WindowsServiceSchedular(timer1); } catch (Exception ex) { EventLog.WriteEntry("Error: " + ex.Message); TraceService("Error: " + ex); } } private void TraceService(string content) { try { if (!Directory.Exists(@"C:\PrintingStatus")) Directory.CreateDirectory(@"C:\PrintingStatus"); FileStream fs = new FileStream(@"C:\PrintingStatus\PrintingStatus.Txt", FileMode.OpenOrCreate, FileAccess.ReadWrite); StreamWriter sw = new StreamWriter(fs); sw.BaseStream.Seek(0, SeekOrigin.End); sw.WriteLine(content); sw.Flush(); sw.Close(); } catch (Exception ex) { EventLog.WriteEntry("Error: " + ex.Message); } } protected override void OnStop() { timer1.Stop(); TraceService("Stop Service"); }
Richard MacCutchan
Почему бы просто не сделать принтер общим устройством и не позволить Windows выполнять всю работу?
Agarwal1984
Но мой код принтера не работал без каких-либо ошибок.
foreach (строковый файл в файлах)
{
ProcessStartInfo info = новый ProcessStartInfo(файл);
информация.Verb = " Print";
информация.CreateNoWindow = true;
информация.WindowStyle = ProcessWindowStyle.Скрытый;
Процесс.Старт(информация);
TraceService (@"C:\PrintingDocument\" + файл);
TraceService (@"C:\PrintedDocument\" + файл);
Системы.ИО.Файл.Переместить (@"C:\PrintingDocument\" + файл, @"C:\PrintedDocument\" + файл);
}
Принтер не печатает документ.
[no name]
Пришло время задействовать эти полномочия "старшего разработчика" и выяснить, почему ваши документы не печатаются. Это не имеет ничего общего с отправкой запросов от любого клиента на сервер. Узнайте, как отлаживать свой код.
Agarwal1984
Я всего лишь разработчик .Net.