【发布时间】: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 我在想!如果我有不同的计算机运行我的网站(它们将具有相同的打印机型号)怎么办?