Pdf.js: La impresión desde iframe en IE11 imprime la página circundante en lugar del documento

Creado en 22 may. 2019  ·  3Comentarios  ·  Fuente: mozilla/pdf.js

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:

  • Navegador web y su versión: IE 11.0.9600.19356, versión de actualización 11.0.125
  • Sistema operativo y su versión: Windows 7
  • Versión PDF.js: 2.0.943
  • Es una extensión del navegador: no

Pasos para reproducir el problema:

  1. Cargar visor en iframe
  2. Active una impresión usando javascript desde la página principal (iframe.contentWindow.print())

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.
Screen Shot 2019-05-22 at 13 21 01

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:

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.

Todos 3 comentarios

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).

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

brandonros picture brandonros  ·  3Comentarios

aaronshaf picture aaronshaf  ·  3Comentarios

zerr0s picture zerr0s  ·  3Comentarios

sujit-baniya picture sujit-baniya  ·  3Comentarios

AlexP3 picture AlexP3  ·  3Comentarios