2012-09-01 14 views
7

Yazıcıyı bir intranet sunucusunda yükledim ve çalışıyorum ve programlı olarak "merhaba dünyasını" bu varsayılan yazıcıya göndermek istiyorum. Bu en basit şey gibi gözüküyor, ancak birkaç saatliğine hiç bir başarıya gitmedim. (Not: Windows 7 çalışan dağıtım makinesinin kendisi üzerinde asp.net mvc geliştiriyorum)Program aracılığıyla "merhaba dünya" varsayılan SERVER tarafı yazıcı ASP.NET MVC

C# içine VB here bir örnek çevirmeyi denedim ama "hayır yazıcılar yüklü" dedi.

public void TestPrint() 
{ 
    var x = new PrintDocument(); 
    x.PrintPage += new PrintPageEventHandler(PrintPage); 
    x.Print(); 
} 
private void PrintPage(Object sender, PrintPageEventArgs e) 
{ 
    var textToPrint = "Hello world"; 
    var printFont = new Font("Courier New", 12); 
    var leftMargin = e.MarginBounds.Left; 
    var topMargin = e.MarginBounds.Top; 
    e.Graphics.DrawString(textToPrint, printFont, Brushes.Black, leftMargin, topMargin); 
} 

Ben de MSDN'den here bir pasajı denemişti ama buna yazıcı adını tanımadı söyledi.

public void TestPrint(string msg) 
{ 
    var server = new LocalPrintServer(); 
    var queue = LocalPrintServer.GetDefaultPrintQueue(); 

    // Call AddJob 
    var job = queue.AddJob(); 

    // Write a Byte buffer to the JobStream and close the stream 
    var stream = job.JobStream; 
    var buffer = UnicodeEncoding.Unicode.GetBytes(msg); 
    stream.Write(buffer, 0, buffer.Length); 
    stream.Close(); 
} 
+0

Kodu Bu kodu test ettiğinizden farklı bir makine. –

+0

Bir dolar ile ne alacağım? – Benjamin

+0

@HansPassant lütfen yardım edin! Söz veriyorum, paranızı geri vereceğim. – Benjamin

cevap

10

Yazdır "merhaba dünya" .NET sunucu tarafı

  1. Hisse yazıcı
  2. PrintDocument nesnesi oluştur
  3. Referans adıyla
  4. tarafından yazıcı içerik sağlamak için bir yöntem ekleyin
  5. Baskı

Ben olmak "intranet server" üzerinde bir dolar koyacağım

using System.Drawing; 
using System.Drawing.Printing; 

public void Print() 
{ 
    var doc = new PrintDocument(); 
    doc.PrinterSettings.PrinterName = "\\\\deployment-machine-name\\share-name"; 
    doc.PrintPage += new PrintPageEventHandler(ProvideContent); 
    doc.Print(); 
} 
public void ProvideContent(object sender, PrintPageEventArgs e) 
{ 
    e.Graphics.DrawString(
    "Hello world", 
    new Font("Arial", 12), 
    Brushes.Black, 
    e.MarginBounds.Left, 
    e.MarginBounds.Top); 
} 
1

Her şeyden önce bir yazıcı seçme seçeneği sunar. Tüm gereksiniminiz Microsoft Destek Sitesi'nde zaten gösterilmektedir.

Have a look here.

oradan bir numune (durumunda birgün sayfa öldü): -

private void print_Click(object sender, System.EventArgs e) 
{ 
    string s = "Hello"; // device-dependent string, need a FormFeed? 

    // Allow the user to select a printer. 
    PrintDialog pd = new PrintDialog(); 
    pd.PrinterSettings = new PrinterSettings(); 
    if(DialogResult.OK == pd.ShowDialog(this)) 
    { 
     // Send a printer-specific to the printer. 
     RawPrinterHelper.SendStringToPrinter(pd.PrinterSettings.PrinterName, s); 
    } 
} 
+0

Teşekkürler, kontrol ediyorum. BTW Windows 7 çalıştırıyorum. – Benjamin

+0

'ShowDialog' kısmı nedir? Bunun için kullanıcı etkileşimi gerektirmek istemiyorum. Çalıştığım zaman asp.net'den aramam gerekecek. // msdn: onlar yararlı ..... http değilse Eğer başarısız olursa – Benjamin

+0

, içeri yönetilmeyen kod manipülasyonu [yazıcılar için C#] deneyebilirsiniz (http://support.microsoft.com/kb/138594) – perilbrain