How to print on a thermal printer from ASP.NET MVC?

0

I have a "Totem" application which can be consulted, where for each query that is made, you must print a voucher or ticket with a service number.

Is there any way to print and format the voucher with a framework or something related to ASP.NET MVC? I was using using System.Drawing; but it became too complicated to format.

Can someone who manages the subject guide me on how I can achieve it?

    
asked by vcasas 27.07.2018 в 22:01
source

1 answer

0

This code works well with a Thermal Epson printer

@using ClosedXML.Excel
@model Domain.POS.Sale
@{
    Layout = "";
}
<style>

    @@media all {
        .page-break {
            display: none;
        }
    }

    @@media print {
        .page-break {
            display: block;
            page-break-before: always;
        }
    }
</style>
<div id="main" class="container">
    <div class="card">
        <div class="card-header" style="text-align:center">
            @Html.DisplayFor(model => model.User.Author.Reports.FirstOrDefault().Header1) <br />
            @Html.DisplayFor(model => model.User.Author.Reports.FirstOrDefault().Header2) <br />
            @Html.DisplayFor(model => model.User.Author.Reports.FirstOrDefault().Header3)
        </div>
        <br /><br />
        <div class="card-body">
            <div class="row mb-4">
                <div class="col-sm-6">
                    @*&nbsp;  <h6 class="mb-3">From:</h6>
                        <div>
                            <strong>Webz Poland</strong>
                        </div>*@<table>
                        <tr>
                            <td>
                                No. Factura:
                            </td>
                            <td>
                                @Html.DisplayFor(model => model.SalesInvoiceNo)
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Cliente:
                            </td>
                            <td>
                                @Html.DisplayFor(model => model.Customer.Person.Name)
                                &nbsp;    @Html.DisplayFor(model => model.Customer.Person.LastName)
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Record:
                            </td>
                            <td>
                                @Html.DisplayFor(model => model.Customer.Person.Patients.FirstOrDefault().Record2)
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Seguro:
                            </td>
                            <td>
                                @Html.DisplayFor(model => model.Customer.Person.Patients.FirstOrDefault().Insurance.Name)
                            </td>
                        </tr>
                        <tr>
                            <td>
                                No. Afiliado:
                            </td>
                            <td>
                                @Html.DisplayFor(model => model.Customer.Person.Patients.FirstOrDefault().InsuranceNumber)
                            </td>
                        </tr>
                        <tr>
                            <td>
                                No. Autorizacion:
                            </td>
                            <td>
                                @Html.DisplayFor(model => model.AutorizationNumber)
                            </td>
                        </tr>
                        @if (Model.StatusId != 5)
                        {
                            <tr>
                                <td></td>
                                <td>
                                    ESTO NO ES UN RECIBO DE PAGO
                                </td>
                            </tr>
                        }
                        <tr>
                            <td>
                                Estatus Factura:
                            </td>
                            <td>
                                @Html.DisplayFor(model => model.Status.Name)
                            </td>
                        </tr>
                        <tr>
                            <td>
                                Fecha:
                            </td>
                            <td>
                                @Html.DisplayFor(model => model.SalesDate)
                            </td>
                        </tr>
                    </table>
                </div>

                @*<div class="col-sm-6">
                        &nbsp;  <div>Attn: Daniel Marek</div>
                        &nbsp;  <div>43-190 Mikolow, Poland</div>
                        &nbsp;  <div>Email: [email protected]</div>
                        &nbsp;  <div>Phone: +48 123 456 789</div>
                    </div>*@



            </div>
            <br /><br />
            <div class="table-responsive-sm">
                <table class="table table-striped">
                    <thead>
                        <tr>
                            <th class="center"></th>
                            <th>Serv./Prod.</th>

                            @*<th class="right">Servicio/Prod.</th>*@
                            <th class="center">Cant.</th>
                            <th class="right">Precio</th>
                        </tr>
                    </thead>
                    <tbody>

                    @foreach (var item in Model.SalesDetails.OrderBy(p=>p.Product.CategoryId))
                    {
                        <tr>
                            <td class="center"></td>
                            <td class="left">   @Html.DisplayFor(modelItem => item.Product.Name)</td>

                            <td class="right">     @Html.DisplayFor(modelItem => item.Quantity)</td>
                            <td class="center">   @Html.DisplayFor(modelItem => item.Product.SellPrice)</td>
                            @*<td class="right">$999,00</td>*@
                        </tr>
                    }

                    </tbody>
                </table>
            </div>
            <br />  <br />
            <div class="row">
                <div class="col-lg-4 col-sm-5">

                </div>

                <div class="col-lg-4 col-sm-5 ml-auto">
                    <table class="table table-clear">
                        <tbody>
                            <tr>
                                <td class="left">
                                    <strong>Sub total</strong>
                                </td>
                                <td class="right">   @Html.DisplayFor(modelItem => Model.SubTotal)</td>
                            </tr>
                            <tr>
                                <td class="left">
                                    <strong>Cobertura</strong>
                                </td>
                                <td class="right">  @Html.DisplayFor(modelItem => Model.TotalDiscount)</td>
                            </tr>
                            <tr>
                                <td class="left">
                                    <strong>Total a Pagar</strong>
                                </td>
                                <td class="right">   @Html.DisplayFor(modelItem => Model.Total)</td>
                            </tr>
                            <tr>
                                <td class="left">
                                    <strong>Monto Pagado</strong>
                                </td>
                                <td class="right">
                                    <strong>  @Html.DisplayFor(modelItem => Model.PaidAmount)</strong>
                                </td>
                            </tr>
                            <tr>
                                <td class="left">
                                    <strong>Monto Adeudado</strong>
                                </td>
                                <td class="right">
                                    <strong>   @Html.DisplayFor(modelItem => Model.DebtAmount)</strong>
                                </td>
                            </tr>
                        </tbody>
                    </table>
                    <br /> <br /> <br /> <br /> <br /><br /> <br />
                    @Html.DisplayFor(model => model.User.FirstName) &nbsp;
                    @Html.DisplayFor(model => model.User.LastName)
                    <hr />
                    <div class="center">
                        <div class="row">
                            @Html.DisplayFor(model => model.User.Author.Reports.FirstOrDefault().Footer1)
                        </div>
                        <div class="row">
                            @Html.DisplayFor(model => model.User.Author.Reports.FirstOrDefault().Footer2)
                        </div>
                        <div class="row">
                            @Html.DisplayFor(model => model.User.Author.Reports.FirstOrDefault().Footer3)
                        </div>
                        @*<a href="https://sequra.no" style="text-decoration:none;">Prøv gratis fakturerings program - rett i nettleseren <span style="border-bottom:1px solid #000;">Sequra</span></a>*@
                    </div>
                </div>

            </div>

        </div>
    </div>
</div>

<div class="page-break"></div>
<div id="hh"></div>



<div class="page-break"></div>

<div id="hh2"></div>

<script type="text/javascript">
    window.onload = function () {

        var doc = document.querySelector("#main .card");
        var duplier = document.querySelector("#hh");
        var duplier2 = document.querySelector("#hh2");

        duplier.appendChild(doc.cloneNode(true));
        duplier2.appendChild(doc.cloneNode(true));

        window.print();

    }
   // window.print();
</script>
    
answered by 01.12.2018 в 12:58