【问题标题】:Print ticket from web site从网站打印票
【发布时间】:2017-05-18 13:51:11
【问题描述】:

您好,我正在尝试从我的网站打印收据/票,但我没有普通打印机,我有一台 Epson TM-T88V 收据打印机,所以我无法使用普通的ctrl + p 或打印作为普通文档,如何使用此打印机进行打印?我尝试使用此代码,但似乎仅适用于 Windows 窗体应用程序而不适用于 Web 窗体,也许问题是我正在尝试使用 ajax 调用在 WebMethod 中执行我的代码。

WebMethod 和打印代码

[WebMethod]
public string print()
{
   try
   {
       pd.PrintPage += new PrintPageEventHandler(Imprimir);
       return "Printing...";
    }
    catch (Exception ex)
    {
        return "Error: " + ex.Message;
    }
}

public void Imprimir(object sender, PrintPageEventArgs e)
{
   string titulo = "MyCompany";
   string direccion = "Address";
   string datos = "number             RFC: ";
   string datos2 = "description             17/05/2017 3:55 p.m.";
   PrintDocument ticket = new PrintDocument();

   Graphics g = e.Graphics;
   g.DrawRectangle(Pens.Black, 5, 5, 410, 530);

   Font fBody = new Font("Lucida Console", 15, FontStyle.Bold);
   Font fBody1 = new Font("Lucida Console", 15, FontStyle.Regular);
   Font fBody2 = new Font("Lucida Console", 9, FontStyle.Regular);
   Font rs = new Font("Stencil", 25, FontStyle.Bold);
   Font fTType = new Font("", 150, FontStyle.Bold);
   SolidBrush sb = new SolidBrush(Color.Black);

   g.DrawString(titulo, fBody, sb, 10, 120);
   g.DrawString(direccion, fBody1, sb, 10, 120);
   g.DrawString(datos, fBody1, sb, 10, 120);
   g.DrawString(datos2, fBody1, sb, 10, 120);

   g.DrawString("------------------------------", fBody1, sb, 10, 120);

   g.Dispose();

   pd.PrintController = new StandardPrintController();
   pd.DefaultPageSettings.Margins.Left = 0;
   pd.DefaultPageSettings.Margins.Right = 0;
   pd.DefaultPageSettings.Margins.Top = 0;
   pd.DefaultPageSettings.Margins.Bottom = 0;

   pd.Print();
}

AJAX 调用

function Imprimir() {
      CallWM('../../ws_webservice.asmx/print',
         {  },
         function (r_json) {
              bootbox.alert(r_json);
          });
}

我收到Printing... 消息,但没有打印任何内容,这是我的问题吗?另外我想知道是否可以调用Imprimir 方法但发送参数,我该怎么做?

PD。我正在使用 C#、ASP.NET、html 页面和 ajax。

【问题讨论】:

  • 这可能有效,但您需要注意文档将从服务器发送到打印机。打印机必须可以从服务器访问(例如 LAN 上的共享打印机)。
  • @dlatikay 我在想!如果我有不同的计算机运行我的网站(它们将具有相同的打印机型号)怎么办?

标签: c# asp.net ajax printing


【解决方案1】:

把这部分代码从Imprimir拿到print()

   pd.PrintController = new StandardPrintController();
   pd.DefaultPageSettings.Margins.Left = 0;
   pd.DefaultPageSettings.Margins.Right = 0;
   pd.DefaultPageSettings.Margins.Top = 0;
   pd.DefaultPageSettings.Margins.Bottom = 0;

   pd.Print();

有关PrintDocument的更多信息,请查看here

【讨论】:

  • 现在我收到此消息“未安装打印机”,但打印机已正确安装,我发送了一个测试页,一切正常,可能是上面提到的问题“文件将从服务器到打印机”。我将打印机连接到我的计算机而不是服务器,可以使用此代码在我的计算机上打印还是我需要其他东西?
  • @FranciscoFernandez WebMethod 在服务器端工作,它只能用于远程调用
  • 该死!嗯...谢谢,我会接受你的回答,因为你帮助我处理我当前的代码,现在我要找到解决这个问题的方法(使用未连接到我的服务器的打印机)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
相关资源
最近更新 更多