[ Foro de Javascript ]

inconveniente con el windows.print()

29-Nov-2017 19:14
Invitado (Hans)
10 Respuestas

Hola Buenas soy nuevo en este tema y estoy haciendo un sistema web, donde la impresión se esta haciendo mediante windows.print() y necesito saber si en la ventana de impresión se hizo click en el boton imprimir para poder posteriormente realizar un update en la base de datos y cerrar la ventana y si se dio cancelar simplemente cerrar la ventana, si me ayudan con este tema se los agradecería


29-Nov-2017 19:19
Nacho Cabanes (+84)

¿"windows.print" y ventanas que se cierran?  Seguro que estás usando Javascript, o la pregunta está en un foro incorrecto?

Si es Javascript, ¿cómo haces esas ventanas emergentes?


29-Nov-2017 19:22
Invitado (Hans)

Mira es que estoy trabajando con php pero para la impresión hago esto

$(document).ready(function(){
       window.print();
window.close();      
   });


29-Nov-2017 19:27
hans castro celis

mira estoy trabajando con php pero hago esto para hacer un impresión fisica


$(document).ready(function(){
       window.print();
window.close();
     
   });


29-Nov-2017 19:33
hans castro celis

asi lo tengo
<script type="text/javascript" src="dist/js/jquery.min.js"></script>
<script>
       $(document).ready(function(){
              window.print();
    window.close();
     
       });


   </script>


29-Nov-2017 19:34
Nacho Cabanes (+84)

Vale, es un javascript con jquery, que por lo que dices, estará incrustado dentro del PHP.

Pero para saber cómo discriminar si se ha pulsado un botón de Aceptar o un botón de Cancelar, o un botón X, o ESC, o cualquier otra alternativa, sería necesario saber qué estás usando para mostrar esas ventanas emergentes .

(Por cierto, en Javascript, como has indicado en tu aclaración, no se usa "windows.print()", que hacía sonar a que fuera algún programa para Windows, sino "window.print()", que hace referencia a la ventana actual del navegador).


29-Nov-2017 19:51
hans castro celis

Nacho disculpa pero soy nuevo en esto, te cuento en una ventana muestro a el usuario los datos que traigo de la base de datos en un form de html  y el usuario haciendo click en un boton imprimir en un archivo llamada generarcuotaindividual.php y me direcciona a otro archivo llamado guardarcuotaindividual.php que es donde tengo este codigo que es el que se va a imprimir en un papel con un formato ya establecido por la empresa

<html>
   <style>
   </style>
   <body style="margin:0 0 0 0;">
        <div>
              <!--Parrafo de Datos-->
                   <div style="position: absolute;top: 32px;left: 460px;"><?php echo $_SESSION['Mes'];?></div>
                   <div style="position: absolute;top: 52px;left: 460px;"><?php echo $NCuota;?></div>
                   <div style="position: absolute;top: 67px;left: 130px;"><?php echo $Nombre;?></div>
                  <div style="position: absolute;top: 67px;left: 688px;"><?php echo $Codigo;?></div>
                  <div style="position: absolute;top: 90px;left: 688px;"><?php echo $Origen;?></div>
                  <div style="position: absolute;top: 90px;left: 130px;"><?php echo $Rut;?></div>
                 <div style="position: absolute;top: 107px;left: 688px;"><?php echo $FechaIngreso;?></div>
                 <div style="position: absolute;top: 117px;left: 130px;"><?php echo $Direccion;?></div>
           <!--parrafo de pagos-->
                 <div style="position: absolute;top: 160px;left: 60px;"><?php echo $Cuota1;?></div>
                 <div style="position: absolute;top: 160px;left: 204px;"><?php echo $Kilos;?></div>
                 <div style="position: absolute;top: 160px;left: 335px;"><?php echo $Cosecha;?></div>
                 <div style="position: absolute;top: 160px;left: 425px;">$<?php echo $Valor1;?></div>
                 <div style="position: absolute;top: 160px;left: 735px;"><?php echo $Total1;?></div>
                 <div style="position: absolute;top: 180px;left: 60px;"><?php echo $Cuota2;?></div>
                 <div style="position: absolute;top: 180px;left: 204px;"><?php echo $KilosHasta2;?></div>
                 <div style="position: absolute;top: 180px;left: 335px;"><?php echo $Cosecha;?></div>
                 <div style="position: absolute;top: 180px;left: 425px;">$<?php echo $Valor2;?></div>
                 <div style="position: absolute;top: 180px;left: 735px;"><?php echo $Total2;?></div>
                 <div style="position: absolute;top: 209px;left: 60px;">IVA</div>
                 <div style="position: absolute;top: 209px;left: 204px;"><?php echo $KilosIvaEquivalente;?</div>
                 <div style="position: absolute;top: 209px;left: 335px;"><?php echo $Cosecha;?></div>
                 <div style="position: absolute;top: 209px;left: 425px;">$<?php echo $ValorIva;?></div>
                 <div style="position: absolute;top: 209px;left: 735px;"><?php echo $Iva;?></div>
           
                <!-- parrafo de descuentos-->
     <?php
              $Separacion = 10;
// ----Controlar el tamaño de las celdas a imprimir en formato predefinido de Banco-------   //

       $CantDescuentos = count($Descuentos);
$DescuentosSum = "";
if ($CantDescuentos >= 20){
    $stmt3 = $conn->prepare("SELECT COUNT(*) As NumDescuentos ,sum(Total) AS Total,
                            Cuotas, Concepto, Codigo FROM descuentos WHERE Codigo = '".$Codigo."' AND FechaInicio
                            <= '".$FechaPago."' AND Pagado = 0 AND Concepto = 1;");
    $stmt3->execute();

if($row5 = $stmt3->fetch()){
      $DescuentosSum =$row5['Total'];
$CantDescuentosSum = $row5['NumDescuentos'];
$SelectorDescuentosSum = 0;
$ComparardorConceptoSum = 1;
}
for($i = 0; $i < $CantDescuentos; $i++){
echo $Descuentos[$i]['NConcepto'];
if($ComparardorConceptoSum == $Descuentos[$i]['NConcepto']){
$j = $i;
$SelectorDescuentosSum = 1;

}

else{

?>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                   60px;"><?php echo $Descuentos[$i]['Concepto']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                  515px;"><?php echo $Descuentos[$i]['Numero']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                  658px;"><?php echo $Descuentos[$i]['CuotaActual']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                 688px;"><?php echo $Descuentos[$i]['Cuotas']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                   735px;"><?php echo $Descuentos[$i]['Total']?></div>
            <?php

$Separacion += 15;
}
}

?>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                  60px;"><?php echo $Descuentos[$j]['Concepto']."($CantDescuentosSum)"?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left: 515px;"><?
                                  php echo ""?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left: 658px;"><?
                                  php echo $Descuentos[$j]['CuotaActual']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left: 688px;"><?
                                 php echo $Descuentos[$j]['Cuotas']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left: 735px;"><?
                                 php echo $DescuentosSum?></div>
<?php

}
else{

if ($CantDescuentos < 20){
for ($i = 0; $i < $CantDescuentos; $i++) { ?>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                  60px;"><?php echo $Descuentos[$i]['Concepto']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                  515px;"><?php echo $Descuentos[$i]['Numero']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                  658px;"><?php echo $Descuentos[$i]['CuotaActual']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                   688px;"><?php echo $Descuentos[$i]['Cuotas']?></div>
<div style="position: absolute;top: <?php echo 252 + $Separacion;?>px;left:
                                                   735px;"><?php echo $Descuentos[$i]['Total']?></div>
             <?php

$Separacion += 15;
}

}
}
?>
               
           <!-- parrafo de totales y nota-->
           <div style="position: absolute;top: 577px;left: 735px;"><?php echo $TotalBruto2;?></div>
           <div style="position: absolute;top: 595px;left: 735px;"><?php echo $TotalDescuentos;?></div>
           <div style="position: absolute;top: 613px;left: 735px;"><?php echo $TotalLiquido;?></div>
           
           <!-- parrafo fecha y cheque-->
           <div style="position: absolute;top: 734px;left: 60px;"><?php echo date("d-m-Y",
             strtotime($FechaPago));?></div>
           <div style="position: absolute;top: 784px;left: 60px;"><?php echo $Cheque;?></div>
           <div style="position: absolute;top: 834px;left: 60px;"><?php echo $Asiento;?></div>
           
           <div style="position: absolute;top: 734px; right: 0px; "><?php echo wordwrap($TotalLiquido, 1, " ",
               true);?></div>
           <div style="position: absolute;top: 764px; right: 0px; "><?php echo date("d-m-Y",
              strtotime($FechaPago));?></div>
           <div style="position: absolute;top: 794px;left: 335px;"><?php echo $Nombre;?></div>
           <div style="position: absolute;top: 815px;left: 335px;"><?php echo numtoletras($TotalLiquido);?></div>
           
           
           
       </div>
   </body>

   <script type="text/javascript" src="dist/js/jquery.min.js"></script>
   <script>

   
   
   $(document).ready(function(){
       window.print();

window.close();
     
   });


   </script>

</html>


29-Nov-2017 20:06
Nacho Cabanes (+84)

El detalle importante, y que no veo en esa página, porque no hay ningún "button" ni ningún "input" y sí el "print", es precisamente cómo es la ventana que lanza esta página. No es lo mismo si está hecho con "jQuery Mobile" que con Javascript puro y duro, por ejemplo. Si es este último, puedes usar "window.confirm()":


if (window.confirm("Imprimir") == true) {
   window.alert("Has elegido imprimir");
} else {
   window.alert("Has cancelado");
}


 


29-Nov-2017 20:17
hans castro celis

Nacho, el boton que yo quiero intervenir o saber si fue pulsado es el de la ventada de vista previa, es decir donde el usuario hace la configuración de impresión que es el que se genera al llamar windows.print()


29-Nov-2017 20:46
hans castro celis

seria, no se como algún evento que me dijera que ya se pasaron todos los datos a la impresora, algo asi como un un EndPrint, no se estoy hablando de mas...jajajaj


29-Nov-2017 20:59
hans castro celis

Realmente es saber cual boton su pulso en el cuadro de la vista previa de la impresora

Actualmente imprimo documentos con mi aplicación a través de una vista previa  y hasta aquí todo funciona perfectamente, el documento se imprime cuando pulso imprimir en vista previa y  no se imprime si pulso cancelar.

El problema que me ha surgido ahora es que tengo que incorporar datos a una BD al pulsar ese botón de imprimir de la vista previa, es decir, cuando el documento se imprime definitivamente, y esto no se haga cuando se pulse cancelar o se pulse el botón Cerrar, es decir que no haya cambios cuando no se imprima el documento.

No consigo de ninguna manera encontrar el evento que se produce al autorizar la impresión con el botoncito de imprimir, algo así como un evento Click del mismo.


He buscado en otras entradas anteriores de este foro y no he encontrado de momento algo definitivo, voy a seguir buscando porque me corre algo de prisa y agradeceré a quien me pueda orientar para resolver este asunto.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)