2017-05-18 4 views
2

Hallo Ich versuche, eine Quittung/Ticket von meiner Website zu drucken, aber ich habe keinen normalen Drucker, ich habe einen Epson TM-T88V Quittungsdrucker, so kann ich nicht die normale verwenden ctrl + p oder als normales Dokument drucken, wie kann ich mit diesem Drucker drucken? Ich habe versucht mit diesem Code, aber scheint nur in einer Windows-Forms-Anwendung funktioniert nicht mit Web-Formulare vielleicht ist das Problem, dass ich versuche, meinen Code in einem WebMethod mit einem Ajax-Aufruf auszuführen.Drucken Ticket von der Website

WebMethod und Print-Code

[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-Aufruf

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

Ich erhalte die Printing... Nachricht aber nichts gedruckt wird, das ist mein Problem? Auch ich möchte wissen, ob möglich ist, rufen Sie Imprimir Methode aber Parameter senden und wie kann ich das tun?

PD. Ich verwende C#, ASP.NET, HTML-Seite und Ajax.

+0

, die funktionieren könnte, aber Sie müssen sich bewusst sein, dass das Dokument vom Server gesendet werden zum Drucker. Der Drucker muss vom Server erreichbar sein (z. B. freigegebener Drucker im LAN). – dlatikay

+0

@dlatikay Ich dachte das! Und wenn ich verschiedene Computer habe, auf denen meine Website läuft (sie haben das gleiche Druckermodell)? –

Antwort

2

Nehmen Sie diesen Teil des Codes 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(); 

Weitere Informationen zu PrintDocument Blick here

+0

Jetzt bekomme ich diese Meldung "Keine Drucker sind installiert", aber der Drucker ist richtig installiert und ich schickte eine Testseite und alles ist in Ordnung, vielleicht ist das Problem oben erwähnt "das Dokument wird vom Server an den Drucker gesendet werden". Ich habe den Drucker an meinen Computer angeschlossen, nicht an den Server, es ist möglich, mit diesem Code in meinem Computer zu drucken, oder ich brauche etwas anderes? –

+0

@FranciscoFernandez WebMethod arbeitet auf der Serverseite, es ist nur für Remote-Aufruf zugänglich –

+0

Verdammt! Nun ... danke, ich werde deine Antworten akzeptieren, weil du mir mit meinem aktuellen Code hilfst, jetzt werde ich eine Lösung für dieses Problem finden (benutze einen Drucker, der nicht mit meinem Server verbunden ist). –

Verwandte Themen