javascript - Window.Print no produce el mismo resultado que usar la función de impresión del navegador
Para un proyecto implementamos un botón personalizado para imprimir la página actual. Usando los controladores de eventos hacemos ajustes adicionales en la página, como cambiar los colores, mostrar ciertas áreas y en general hacer que sea más imprimible.
window.addEventListener('beforeprint', handleBeforeprint);
window.addEventListener('afterprint', handleAfterprint);
La implementación funciona solo para esos casos, cuando se utiliza la función de imprimir del navegador o al activar la impresión del navegador mediante el teclado CMD + P. Cada vez que activo la impresión usando window.print(), los eventos no se disparan.
Respuesta #1
He enfrentado un problema similar antes, resulta que era un error tanto en Chrome como en Firefox. Intentaré encontrar el enlace y adjuntarlo a esta respuesta. Puedes activar fácilmente una función handleBeforeprint, podrías enfrentar un problema en handleAfterprint.
He creado una función así para mi caso de uso y simplemente funcionó bien.
const print = () =>{
handleBeforeprint();
window.print();
handleAfterprint();
}
Tengo otra manera de hacer esto, pero es bastante compleja de implementar (lo he hecho para otro proyecto); si es algo realmente importante para tu caso de uso, entonces puedes usar algo como HTMLtoCanvas. Avísame si necesitas más detalles sobre este enfoque.
Atajo lateral:
window.printv2 = () => {
handleBeforeprint();
window.print();
handleAfterprint();
}
ahora puedes llamar a window.printv2() desde cualquier lugar ;)
