ASP.NET MVC中以编程方式"hello world"默认的SERVER端打印机

Ben*_*min 7 .net c# printing asp.net-mvc network-printers

我安装了打印机并在Intranet服务器上工作,我想以编程方式将"hello world"发送到该默认打印机.这似乎是最简单的事情,但我一直在谷歌搜索几个小时没有成功.(注意:我正在运行Windows 7的部署机器上开发asp.net mvc)

我试图从VB翻译的例子在这里为C#,但它说:"没有安装打印机".

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);
}
Run Code Online (Sandbox Code Playgroud)

我还曾试图片段从MSDN 这里,但它说,它不承认打印机名称.

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();
}
Run Code Online (Sandbox Code Playgroud)

Ben*_*min 10

在.NET中打印"hello world"服务器端

  1. 共享打印机
  2. 创建一个PrintDocument对象
  3. 按名称引用打印机
  4. 添加提供内容的方法
  5. 打印

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);
}
Run Code Online (Sandbox Code Playgroud)