【问题标题】:How to print receipt without print dialog box in client side如何在客户端打印收据而不打印对话框
【发布时间】:2016-03-04 23:12:51
【问题描述】:

我想在没有打印对话框的客户端打印收据,我正在使用 mvc 这是我解决问题的解决方案。 EPSON 打印机已安装在我的系统中。此解决方案在我的本地 iis 中的主机时有效,但当主机在服务器中并从我的本地系统访问时出现“处理您的请求时发生错误”错误时它不起作用。在服务器中没有安装打印机。

$.ajax({
type: "POST",
url: '../Service/print',
cache: false,
data: { iprintData: printData, iprinterName: sPrinterName },
success: function (data) {
// alert('print Send Successfully');
},
error: function (ex) {
   alert(ex.responseText);
// alert('error while Seding print');
}
});

这是我在控制器中的代码

    public JsonResult print(string iprintData, string iprinterName)
    {
        Boolean bflag = false;
        System.Web.HttpContext.Current.Session["_printData"] = iprintData; 
        PrintDocument printDocument = new PrintDocument();
        printDocument.PrintController = new StandardPrintController();            
        printDocument.PrintPage += PrintDocumentOnPrintPage;
        printDocument.PrinterSettings.PrinterName = iprinterName;
        //printFont = new System.Drawing.Font("Arial", 10);
        printDocument.Print();
        bflag = true;            
        return Json(bflag, JsonRequestBehavior.AllowGet);
    }

    public static Image resizeImage(Image image, int new_height, int new_width)
    {
        Bitmap new_image = new Bitmap(new_height, new_width);
        Graphics g = Graphics.FromImage((Image)new_image);
        g.InterpolationMode = InterpolationMode.High;
        g.DrawImage(image, 0, 0, new_width, new_height);
        return new_image;
    }
    private void PrintDocumentOnPrintPage(object sender, PrintPageEventArgs e)
    {
        string printstring = System.Web.HttpContext.Current.Session["_printData"].ToString();
        string path = HttpContext.Server.MapPath("~/content/Images/logo.png");
        System.Drawing.Image img = Image.FromFile(path);


        //img = resizeImage(img, 80, 60);
        e.Graphics.DrawImage(img, 6, 100);
        e.Graphics.DrawString(printstring, new System.Drawing.Font("ronnia", 9), Brushes.Black, 10, 150);
    }

任何人都可以帮助我吗?

【问题讨论】:

    标签: javascript jquery asp.net-mvc printing epson


    【解决方案1】:
    1. 首先你必须编写包含 HttpListener 的 windows 服务。
    2. 在服务中编写打印代码
    3. 在客户端机器上安装服务
    4. 使用 ajax 调用该服务,如下所示。

        function PrintReceipt() {
    
            var PrintData = JSON.parse($("#receiptData").html())
    
            if (PrintData.length > 0) {
    
                $.ajax({
                    type: "POST", 
                    url: "http://localhost:41963/printOrder",
                    data: JSON.stringify({ "PrintData": PrintData }), //reciept data
                    crossDomain: true, 
                    success: function (response) {
    
                        
                    },
                    error: function () {
                      
                    }
                });
            }
    
           
        }

    【讨论】:

      【解决方案2】:

      设置 System.Drawing.dll 属性

      Copy Local=true
      

      【讨论】:

      • system.Drawing.dll 在 bin 中。
      • 点击引用然后右键点击System.Drawing获取属性
      • Drawing.dll 具有相同的属性,并在发布网站后与 bin 文件夹一起提供。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多