Nota:
Esto se informó antes en el n.º 7711 y probablemente en el n.º 6152, pero se cerró incorrectamente como corregido o no relevante.
Configuración:
Pasos para reproducir el problema:
Caso de prueba
https://kleins05.github.io/pdf.js/test-ieiframe/
(cargue en IE11, haga clic en el botón de impresión, verifique la salida de impresión)
¿Cuál es el comportamiento esperado?
Se debe imprimir el PDF en el iframe.
¿Qué salió mal?
Se imprime la página circundante.
La compatibilidad con la impresión en IE11 es limitada en general; además, consulte la sección correspondiente de las Preguntas frecuentes :
Si bien la biblioteca y el visor predeterminado aún deberían funcionar en IE 11/Edge (no basado en Chromium) por el momento, es posible que algunas funciones/características no estén disponibles y el rendimiento será peor en comparación con los navegadores modernos. En el futuro, solo se aceptarán los errores que impidan por completo la ejecución de la biblioteca y/o el visor predeterminado.
Encontré la razón. A diferencia de otros navegadores, window.print en IE hace que se imprima el marco/ventana actualmente enfocada, no necesariamente a la que se refiere window
. El uso de document.execCommand evita esto.
En web/pdf_print_service.js:187 en lugar de print.call(window); utilizar:
var result = window.document.execCommand('print', false, null);
if (!result) {
print.call(window);
}
Si está dispuesto a aceptar una solicitud de incorporación de cambios a pesar de su apoyo limitado a IE11, estoy dispuesto a crear una. Hágamelo saber.
Si acepta una solicitud de incorporación de cambios a pesar de su compatibilidad limitada con IE11,
Desafortunadamente, nunca aceptamos "trucos" de compatibilidad colocados en la base de código principal, por varias razones como, por ejemplo, legibilidad/mantenibilidad/rendimiento, y esos siempre estuvieron restringidos a polyfills colocados en https://github.com/mozilla/pdf .js/blob/master/src/shared/compatibilidad.js
Además, en este momento, un error debe evitar el uso de la biblioteca en IE11 para que se considere válido. (Espere una versión futura de PDF.js, que aún no se ha decidido hasta donde yo sé, para marcar IE11 como explícitamente no compatible y eliminar el poco código de compatibilidad que queda. Históricamente, tratar de admitir IE11 ha restringido la capacidad de usar funciones modernas de JavaScript , y ha obligado a los contribuyentes a pasar mucho tiempo apoyando un navegador esencialmente inactivo).
Comentario más útil
Encontré la razón. A diferencia de otros navegadores, window.print en IE hace que se imprima el marco/ventana actualmente enfocada, no necesariamente a la que se refiere
window
. El uso de document.execCommand evita esto.En web/pdf_print_service.js:187 en lugar de print.call(window); utilizar:
Si está dispuesto a aceptar una solicitud de incorporación de cambios a pesar de su apoyo limitado a IE11, estoy dispuesto a crear una. Hágamelo saber.