2009-04-25 1 views
2

Ну моя ситуация такова:DOS на основе печати через ASP.NET

Я генерации отчета в виде текстового файла на сервере, который должен быть напечатан с использованием режима DOS на матричный принтер. Я хочу избежать печати Windows, потому что это будет слишком медленно. Есть ли способ в ASP.NET, через который я могу выполнять печать на основе DOS, так как он лучше всего подходит для матричных принтеров Dot. Я прочесывал сеть, но не мог найти решения или указатели. Есть ли у любого органа какие-либо указатели/решения, которые они могли бы реализовать или наткнуться.

Это приложение представляет собой веб-приложение.

Thanx.

+1

Вы хотите печатать с сервера или клиента? Под этим я подразумеваю, что вы хотите печатать на принтере, установленном на веб-сервере или на стороне клиента? Для первого просто создайте отдельный exe/пакетный файл и выполните приложение ASP.NET, и для последнего вам понадобится какой-то ActiveX для этого. – BobbyShaftoe

+0

Как сделать приложение ASP.nET исполнением этого командного файла, что меня интересует? – Codeslayer

ответ

4

Если вы правильно поняли, один из вариантов - выполнить пакетный файл, который будет выполнять фактическую печать с ASP.NET. Из here: (Очевидно, что вы можете пропустить некоторые из кода пишущего вывода на страницу)

// Get the full file path 
string strFilePath = “c:\\temp\\test.bat”; 

// Create the ProcessInfo object 
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo("cmd.exe"); 
psi.UseShellExecute = false; 
psi.RedirectStandardOutput = true; 
psi.RedirectStandardInput = true; 
psi.RedirectStandardError = true; 
psi.WorkingDirectory = “c:\\temp\\“; 

// Start the process 
System.Diagnostics.Process proc = System.Diagnostics.Process.Start(psi); 


// Open the batch file for reading 
System.IO.StreamReader strm = System.IO.File.OpenText(strFilePath); 

// Attach the output for reading 
System.IO.StreamReader sOut = proc.StandardOutput; 

// Attach the in for writing 
System.IO.StreamWriter sIn = proc.StandardInput; 


// Write each line of the batch file to standard input 
while(strm.Peek() != -1) 
{ 
    sIn.WriteLine(strm.ReadLine()); 
} 

strm.Close(); 

// Exit CMD.EXE 
string stEchoFmt = "# {0} run successfully. Exiting"; 

sIn.WriteLine(String.Format(stEchoFmt, strFilePath)); 
sIn.WriteLine("EXIT"); 

// Close the process 
proc.Close(); 

// Read the sOut to a string. 
string results = sOut.ReadToEnd().Trim(); 


// Close the io Streams; 
sIn.Close(); 
sOut.Close(); 


// Write out the results. 
string fmtStdOut = "<font face=courier size=0>{0}</font>"; 
this.Response.Write(String.Format(fmtStdOut,results.Replace(System.Environment.NewLine, "<br>"))); 
+0

вот какой-то серьезный взлом, в котором вы попали туда, мужчина! отличная работа. Я бы бросил его в очередь и понял, что с ним делать позже. лол –

0

Ответ от BobbyShaftoe правильно. Вот педантичная версия:

public static void CreateProcess(string strFilePath) 
{ 
    // Create the ProcessInfo object 
    var psi = new ProcessStartInfo("cmd.exe") 
        { 
         UseShellExecute = false, 
         RedirectStandardOutput = true, 
         RedirectStandardInput = true, 
         RedirectStandardError = true, 
         WorkingDirectory = "c:\\temp\\" 
        }; 

    // Start the process 
    using (var proc = Process.Start(psi)) 
    { 
     // Attach the in for writing 
     var sIn = proc.StandardInput; 

     using (var strm = File.OpenText(strFilePath)) 
     { 
      // Write each line of the batch file to standard input 
      while (strm.Peek() != -1) 
      { 
       sIn.WriteLine(strm.ReadLine()); 
      } 
     } 

     // Exit CMD.EXE 

     sIn.WriteLine(String.Format("# {0} run successfully. Exiting", strFilePath)); 
     sIn.WriteLine("EXIT"); 

     // Read the sOut to a string. 
     var results = proc.StandardOutput.ReadToEnd().Trim(); 

     // Write out the results. 
     string fmtStdOut = "<font face=courier size=0>{0}</font>"; 
     this.Response.Write(String.Format(fmtStdOut,results.Replace(System.Environment.NewLine, "<br>"))); 
    } 
}