Agarwal1984 Ответов: 1

Как отправить запрос от клиента на серверный принтер для печати с помощью приложения 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.

1 Ответов

Рейтинг:
2