TECNOLOBO

No recuerdas tu codigo?
Se te olvido como se hace?

Aqui podras guardar lo que necesiten
Y cuando sea necesesario

Creado por julian gomez
iiiiii

pruebas de funcionamiento



Descripcion

html


<!DOCTYPE html>
<html>
    <head>
        <meta content="text/html;charset=utf-8" http-equiv="Content-Type">
        <title>Prueba de impresion</title>

        <!-- Required scripts -->
        <script type="text/javascript" src="js/dependencies/rsvp-3.1.0.min.js"></script>
        <script type="text/javascript" src="js/dependencies/sha-256.min.js"></script>
        <script type="text/javascript" src="js/qz-tray.js"></script>

        <!-- Page styling -->
        <script type="text/javascript" src="js/additional/jquery-1.11.3.min.js"></script>
        <script type="text/javascript" src="js/additional/bootstrap.min.js"></script>
        <link rel="stylesheet" href="css/font-awesome.min.css" />
        <link rel="stylesheet" href="css/bootstrap.min.css" />
        <link rel="stylesheet" href="css/style.css" />
        
        <script>
            /// Authentication setup ///
            qz.security.setCertificatePromise(function(resolve, reject) {
                //Preferred method - from server
        //        $.ajax("assets/signing/digital-certificate.txt").then(resolve, reject);

                //Alternate method 1 - anonymous
        //        resolve();

                //Alternate method 2 - direct
                resolve("-----BEGIN CERTIFICATE-----\n" +
                        "MIIFAzCCAuugAwIBAgICEAIwDQYJKoZIhvcNAQEFBQAwgZgxCzAJBgNVBAYTAlVT\n" +
                        "MQswCQYDVQQIDAJOWTEbMBkGA1UECgwSUVogSW5kdXN0cmllcywgTExDMRswGQYD\n" +
                        "VQQLDBJRWiBJbmR1c3RyaWVzLCBMTEMxGTAXBgNVBAMMEHF6aW5kdXN0cmllcy5j\n" +
                        "b20xJzAlBgkqhkiG9w0BCQEWGHN1cHBvcnRAcXppbmR1c3RyaWVzLmNvbTAeFw0x\n" +
                        "NTAzMTkwMjM4NDVaFw0yNTAzMTkwMjM4NDVaMHMxCzAJBgNVBAYTAkFBMRMwEQYD\n" +
                        "VQQIDApTb21lIFN0YXRlMQ0wCwYDVQQKDAREZW1vMQ0wCwYDVQQLDAREZW1vMRIw\n" +
                        "EAYDVQQDDAlsb2NhbGhvc3QxHTAbBgkqhkiG9w0BCQEWDnJvb3RAbG9jYWxob3N0\n" +
                        "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtFzbBDRTDHHmlSVQLqjY\n" +
                        "aoGax7ql3XgRGdhZlNEJPZDs5482ty34J4sI2ZK2yC8YkZ/x+WCSveUgDQIVJ8oK\n" +
                        "D4jtAPxqHnfSr9RAbvB1GQoiYLxhfxEp/+zfB9dBKDTRZR2nJm/mMsavY2DnSzLp\n" +
                        "t7PJOjt3BdtISRtGMRsWmRHRfy882msBxsYug22odnT1OdaJQ54bWJT5iJnceBV2\n" +
                        "1oOqWSg5hU1MupZRxxHbzI61EpTLlxXJQ7YNSwwiDzjaxGrufxc4eZnzGQ1A8h1u\n" +
                        "jTaG84S1MWvG7BfcPLW+sya+PkrQWMOCIgXrQnAsUgqQrgxQ8Ocq3G4X9UvBy5VR\n" +
                        "CwIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NMIEdl\n" +
                        "bmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUpG420UhvfwAFMr+8vf3pJunQ\n" +
                        "gH4wHwYDVR0jBBgwFoAUkKZQt4TUuepf8gWEE3hF6Kl1VFwwDQYJKoZIhvcNAQEF\n" +
                        "BQADggIBAFXr6G1g7yYVHg6uGfh1nK2jhpKBAOA+OtZQLNHYlBgoAuRRNWdE9/v4\n" +
                        "J/3Jeid2DAyihm2j92qsQJXkyxBgdTLG+ncILlRElXvG7IrOh3tq/TttdzLcMjaR\n" +
                        "8w/AkVDLNL0z35shNXih2F9JlbNRGqbVhC7qZl+V1BITfx6mGc4ayke7C9Hm57X0\n" +
                        "ak/NerAC/QXNs/bF17b+zsUt2ja5NVS8dDSC4JAkM1dD64Y26leYbPybB+FgOxFu\n" +
                        "wou9gFxzwbdGLCGboi0lNLjEysHJBi90KjPUETbzMmoilHNJXw7egIo8yS5eq8RH\n" +
                        "i2lS0GsQjYFMvplNVMATDXUPm9MKpCbZ7IlJ5eekhWqvErddcHbzCuUBkDZ7wX/j\n" +
                        "unk/3DyXdTsSGuZk3/fLEsc4/YTujpAjVXiA1LCooQJ7SmNOpUa66TPz9O7Ufkng\n" +
                        "+CoTSACmnlHdP7U9WLr5TYnmL9eoHwtb0hwENe1oFC5zClJoSX/7DRexSJfB7YBf\n" +
                        "vn6JA2xy4C6PqximyCPisErNp85GUcZfo33Np1aywFv9H+a83rSUcV6kpE/jAZio\n" +
                        "5qLpgIOisArj1HTM6goDWzKhLiR/AeG3IJvgbpr9Gr7uZmfFyQzUjvkJ9cybZRd+\n" +
                        "G8azmpBBotmKsbtbAU/I/LVk8saeXznshOVVpDRYtVnjZeAneso7\n" +
                        "-----END CERTIFICATE-----\n" +
                        "--START INTERMEDIATE CERT--\n" +
                        "-----BEGIN CERTIFICATE-----\n" +
                        "MIIFEjCCA/qgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwgawxCzAJBgNVBAYTAlVT\n" +
                        "MQswCQYDVQQIDAJOWTESMBAGA1UEBwwJQ2FuYXN0b3RhMRswGQYDVQQKDBJRWiBJ\n" +
                        "bmR1c3RyaWVzLCBMTEMxGzAZBgNVBAsMElFaIEluZHVzdHJpZXMsIExMQzEZMBcG\n" +
                        "A1UEAwwQcXppbmR1c3RyaWVzLmNvbTEnMCUGCSqGSIb3DQEJARYYc3VwcG9ydEBx\n" +
                        "emluZHVzdHJpZXMuY29tMB4XDTE1MDMwMjAwNTAxOFoXDTM1MDMwMjAwNTAxOFow\n" +
                        "gZgxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJOWTEbMBkGA1UECgwSUVogSW5kdXN0\n" +
                        "cmllcywgTExDMRswGQYDVQQLDBJRWiBJbmR1c3RyaWVzLCBMTEMxGTAXBgNVBAMM\n" +
                        "EHF6aW5kdXN0cmllcy5jb20xJzAlBgkqhkiG9w0BCQEWGHN1cHBvcnRAcXppbmR1\n" +
                        "c3RyaWVzLmNvbTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANTDgNLU\n" +
                        "iohl/rQoZ2bTMHVEk1mA020LYhgfWjO0+GsLlbg5SvWVFWkv4ZgffuVRXLHrwz1H\n" +
                        "YpMyo+Zh8ksJF9ssJWCwQGO5ciM6dmoryyB0VZHGY1blewdMuxieXP7Kr6XD3GRM\n" +
                        "GAhEwTxjUzI3ksuRunX4IcnRXKYkg5pjs4nLEhXtIZWDLiXPUsyUAEq1U1qdL1AH\n" +
                        "EtdK/L3zLATnhPB6ZiM+HzNG4aAPynSA38fpeeZ4R0tINMpFThwNgGUsxYKsP9kh\n" +
                        "0gxGl8YHL6ZzC7BC8FXIB/0Wteng0+XLAVto56Pyxt7BdxtNVuVNNXgkCi9tMqVX\n" +
                        "xOk3oIvODDt0UoQUZ/umUuoMuOLekYUpZVk4utCqXXlB4mVfS5/zWB6nVxFX8Io1\n" +
                        "9FOiDLTwZVtBmzmeikzb6o1QLp9F2TAvlf8+DIGDOo0DpPQUtOUyLPCh5hBaDGFE\n" +
                        "ZhE56qPCBiQIc4T2klWX/80C5NZnd/tJNxjyUyk7bjdDzhzT10CGRAsqxAnsjvMD\n" +
                        "2KcMf3oXN4PNgyfpbfq2ipxJ1u777Gpbzyf0xoKwH9FYigmqfRH2N2pEdiYawKrX\n" +
                        "6pyXzGM4cvQ5X1Yxf2x/+xdTLdVaLnZgwrdqwFYmDejGAldXlYDl3jbBHVM1v+uY\n" +
                        "5ItGTjk+3vLrxmvGy5XFVG+8fF/xaVfo5TW5AgMBAAGjUDBOMB0GA1UdDgQWBBSQ\n" +
                        "plC3hNS56l/yBYQTeEXoqXVUXDAfBgNVHSMEGDAWgBQDRcZNwPqOqQvagw9BpW0S\n" +
                        "BkOpXjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAJIO8SiNr9jpLQ\n" +
                        "eUsFUmbueoxyI5L+P5eV92ceVOJ2tAlBA13vzF1NWlpSlrMmQcVUE/K4D01qtr0k\n" +
                        "gDs6LUHvj2XXLpyEogitbBgipkQpwCTJVfC9bWYBwEotC7Y8mVjjEV7uXAT71GKT\n" +
                        "x8XlB9maf+BTZGgyoulA5pTYJ++7s/xX9gzSWCa+eXGcjguBtYYXaAjjAqFGRAvu\n" +
                        "pz1yrDWcA6H94HeErJKUXBakS0Jm/V33JDuVXY+aZ8EQi2kV82aZbNdXll/R6iGw\n" +
                        "2ur4rDErnHsiphBgZB71C5FD4cdfSONTsYxmPmyUb5T+KLUouxZ9B0Wh28ucc1Lp\n" +
                        "rbO7BnjW\n" +
                        "-----END CERTIFICATE-----\n");
            });
            
            function establecerImpresora(nombreImpresora, opcionesImpresion){
                config = qz.configs.create(nombreImpresora, opcionesImpresion);
                
                return config;
            }
            
            qz.security.setSignaturePromise(function(toSign) {
                return function(resolve, reject) {
                    //Preferred method - from server
        //            $.ajax("/secure/url/for/sign-message?request=" + toSign).then(resolve, reject);

                    //Alternate method - unsigned
                    resolve();
                };
            });
            
            /// Connection ///
            function launchQZ() {
                if (!qz.websocket.isActive()) {
                    window.location.assign("qz:launch");
                    //Retry 5 times, pausing 1 second between each attempt
                    startConnection({ 
                        retries: 5, 
                        delay: 1 
                    });
                }
            }
            
            //Funcion de conexion inicial
            function startConnection(config) {     
                if (!qz.websocket.isActive()) {
                    updateState('Estableciendose...', 'default');

                    qz.websocket.connect(config).then(function() {
                        updateState('Activa', 'success');
                        //findVersion();
                    }).catch(handleConnectionError);
                } else {
                    displayMessage('Ya existe una conexion activa', 'alert-warning');
                }
            }
            
            //Funcion terminacion de conexion
            function endConnection() {
                if (qz.websocket.isActive()) {
                    qz.websocket.disconnect().then(function() {
                        updateState('Inactiva', 'default');
                    }).catch(handleConnectionError);
                } else {
                    displayMessage('No existe conexion activa', 'alert-warning');
                }
            }
            
            //Actualizacion de barra de estado html
            function updateState(text, css) {
                $("#qz-status").html(text);
                $("#qz-connection").removeClass().addClass('panel panel-' + css);

                if (text === "Inactive" || text === "Error") {
                    $("#launch").show('slow');
                } else {
                    $("#launch").fadeIn('slow');
                }
            }

            function displayError(err) {
                console.error(err);
                displayMessage(err, 'alert-danger');
            }

            function displayMessage(msg, css) {
                if (css == undefined) { css = 'alert-info'; }

                var timeout = setTimeout(function() { $('#' + timeout).alert('close'); }, 5000);

                var alert = $("<div/>").addClass('alert alert-dismissible fade in ' + css)
                        .css('max-height', '20em').css('overflow', 'auto')
                        .attr('id', timeout).attr('role', 'alert');
                alert.html("<button type='button' class='close' data-dismiss='alert'>&times;</button>" + msg);

                $("#qz-alert").append(alert);
            }
            
            function handleConnectionError(err) {
                updateState('Error', 'danger');

                if (err.target != undefined) {
                    if (err.target.readyState >= 2) { //if CLOSING or CLOSED
                        displayError("La conexion se ha cerrado");
                    } else {
                        displayError("Ha ocurrido un error en la conexion, verifique el log para ver los detalles");
                        console.error(err);
                    }
                } else {
                    console.log(err);
                    if('Error: Unable to establish connection with QZ' == err){
                       err = 'No se puede establecer la conexión con el recurso';
                    }                    
                    if('Error: Connection blocked by client' == err){
                       err = 'No se pudo establecer conexion, bloqueado por el cliente';
                    }
                    displayError(err);
                }
            }
            
            //Buscar todas las impresoras
            function findPrinters() {
                qz.printers.find().then(function(data) {
                    var list = '';
                    for(var i = 0; i < data.length; i++) {
                        list += "&nbsp; " + data[i] + "<br/>";
                        console.log(data[i] + '-');
                    }
                    displayMessage("<strong>Impresoras disponibles:</strong><br/>" + list);
                }).catch(function(e) {
                    var msg = '';
                    
                    if('Error: Request blocked' == e){
                        msg += '<h2>Solicitud Bloqueada</h2>'
                    }                    
                    msg += '<br/><strong>No se pudo obtener informacion de impresoras</strong>';
                    displayMessage(msg);
                    console.error(e); 
                });
            }
            
            //Buscar una en especifico
            function selectorPrint(myPrint){
                qz.printers.find(myPrint).then(function(found) {
                    console.log(found);
                    displayMessage("Impresora encontrada: " + found);
                    
                }).catch(function(e) {
                    console.log('Esta es mi impresora: ' + myPrint);
                    if('Error: Specified printer could not be found.' == e){
                       e = 'La impresora especificada no se encuentra o posee otro nombre';
                    }
                    displayMessage(e)
                    console.error(e);
                });
            }
            
            function imprimirHTML(){
                var html = '<h2>Titulo</h2>';
                
                var opcionesImpresion = { 
                    //margins: 2,
                    margins: { 
                        top: 0.25, 
                        right: 0.25, 
                        bottom: 0.25, 
                        left: 0.25 
                    },
                    density: '600',
                    size: {
                        width: 2.25, 
                        height: 1.25
                    }, 
                    units: 'in', 
                    colorType: 'grayscale', 
                    interpolation: "nearest-neighbor", 
                    orientation: 'landscape',
                    copies: 1,
                    scaleContent: 'false',
                    rasterize: 'false'
                };
                
                var config = establecerImpresora('PDFCreator', opcionesImpresion);
                
                ////////////////////////
                
                var colA = '<h2>*&nbsp; QZ Print Plugin HTML Printing &nbsp;*</h2>' +
                '<span style="color: #F00;">Version:</span>VERSION<br/>' +
                '<span style="color: #F00;">Visit:</span> https://qz.io/';
                
                var printData = [{
                    type: 'html',
                    format: 'plain',
                    data: '<html>' +
                        '   <table style="font-family: monospace; border: 1px;">' +
                        '       <tr style="height: 6cm;">' +
                        '           <td valign="top">' + colA + '</td>' +
                        '       </tr>' +
                        '   </table>' +
                        '</html>',
                    options: { 
                        pageWidth: 8,
                        pageHeight: 11.5
                    }
                }]

                qz.print(config, printData).catch(function(e) { 
                    console.error(e); 
                });
            }
        </script>
    </head>
        
    <body>
        <h1>Impresion directa</h1>
        <div id="qz-connection" class="panel panel-default">
            <div class="panel-heading">
                <button class="close tip" data-toggle="tooltip" title="Launch QZ" id="launch" href="#" onclick="launchQZ();" style="display: none;">
                    <i class="fa fa-external-link"></i>
                </button>
                <h3 class="panel-title">
                    Conexion: <span id="qz-status" class="text-muted" style="font-weight: bold;">No Iniciada</span>
                </h3>
            </div>
            <div class="panel-body">
                <div class="btn-toolbar">
                    <div class="btn-group" role="group">
                        <button type="button" class="btn btn-success" onclick="startConnection();">Conectar</button>
                        <button type="button" class="btn btn-warning" onclick="endConnection();">Desconectar</button>
                        <button type="button" class="btn btn-primary" onclick="findPrinters();">Buscar impresoras</button>
                        <button type="button" class="btn btn-info" onclick="selectorPrint('PDFCreator');">PDFCreator</button>
                        <button type="button" class="btn btn-danger" onclick="imprimirHTML();">Imprimir HTML</button>
                    </div>
                </div>
            </div>
        </div>
        <div id="qz-alert" style="position: fixed; width: 60%; margin: 0 4% 0 36%; z-index: 900;"></div>
    </body>
</html>
						
To Top