De acuerdo con la ventana de documentos oficial, window.onbeforeprint permite que las páginas cambien su contenido antes de que comience la impresión (quizás para eliminar un banner, por ejemplo).
Sin embargo, esto no funciona en mis casos, ya que window.onbeforeprint se activa de forma asíncrona, como cualquier evento en JS. Cambio el contenido DOM en mi controlador de eventos, pero los cambios no están en la vista previa de impresión. Solo que, cuando cancelo el primer intento de impresión y presiono Cmd + P nuevamente, los cambios (del primer evento) dentro del DOM son parte de la vista previa de impresión.
No me refiero a procesos de ejecución prolongada, como obtener algo de la red. Simplemente copie/pegue dentro del DOM.
Así que me pregunto si estoy haciendo algo mal aquí, o si window.onbeforeprint no tiene mucho sentido para cambiar el contenido antes de imprimir.
Después de algunas soluciones de problemas adicionales, puedo confirmar que window.onbeforeprint realmente permite que ocurran manipulaciones DOM antes de que se genere la vista de impresión. El problema en mi caso fue el framework: Vue.js. El componente Vue no se actualizó a tiempo. Si manipulo el DOM directamente dentro del controlador de eventos, funciona.