Pdf.js: L'impression à partir d'iframe dans IE11 imprime la page environnante au lieu du document

Créé le 22 mai 2019  ·  3Commentaires  ·  Source: mozilla/pdf.js

Noter:
Cela a déjà été signalé dans # 7711 et probablement dans # 6152, mais incorrectement fermé comme corrigé ou non pertinent

Configuration:

  • Navigateur Web et sa version : IE 11.0.9600.19356, mise à jour de la version 11.0.125
  • Système d'exploitation et sa version : Windows 7
  • Version PDF.js : 2.0.943
  • Est une extension de navigateur : non

Étapes pour reproduire le problème :

  1. Charger la visionneuse dans l'iframe
  2. Déclencher une impression en utilisant javascript depuis la page principale (iframe.contentWindow.print())

Cas de test
https://kleins05.github.io/pdf.js/test-ieiframe/
(charger dans IE11, cliquer sur le bouton d'impression, vérifier la sortie d'impression)

Quel est le comportement attendu ?
Le PDF dans l'iframe doit être imprimé.

Qu'est ce qui ne s'est pas bien passé?
La page environnante est imprimée.
Screen Shot 2019-05-22 at 13 21 01

Commentaire le plus utile

J'ai trouvé la raison. Contrairement aux autres navigateurs, window.print dans IE entraîne l'impression du cadre/de la fenêtre actuellement ciblé(e), pas nécessairement celui auquel se réfère window . L'utilisation de document.execCommand évite cela.

Dans web/pdf_print_service.js:187 au lieu de print.call(window); utiliser:

var result = window.document.execCommand('print', false, null);
if (!result) {
   print.call(window);
}

Si vous acceptez une demande d'extraction malgré votre prise en charge limitée d'IE11, je suis prêt à en créer une. Fais-moi savoir.

Tous les 3 commentaires

La prise en charge de l'impression dans IE11 est généralement limitée, de plus, veuillez vous référer à la section correspondante de la FAQ :

Alors que la bibliothèque et la visionneuse par défaut devraient toujours fonctionner dans IE 11/Edge (non basé sur Chromium) pour le moment, certaines fonctionnalités/fonctionnalités peuvent ne pas être disponibles et les performances seront moins bonnes par rapport aux navigateurs modernes. À l'avenir, seuls les bogues qui empêchent complètement l'exécution de la bibliothèque et/ou du visualiseur par défaut seront acceptés.

J'ai trouvé la raison. Contrairement aux autres navigateurs, window.print dans IE entraîne l'impression du cadre/de la fenêtre actuellement ciblé(e), pas nécessairement celui auquel se réfère window . L'utilisation de document.execCommand évite cela.

Dans web/pdf_print_service.js:187 au lieu de print.call(window); utiliser:

var result = window.document.execCommand('print', false, null);
if (!result) {
   print.call(window);
}

Si vous acceptez une demande d'extraction malgré votre prise en charge limitée d'IE11, je suis prêt à en créer une. Fais-moi savoir.

Si vous êtes heureux d'accepter une pull request malgré votre support limité d'IE11,

Malheureusement, nous n'avons jamais accepté les "hacks" de compatibilité placés dans la base de code principale, pour diverses raisons telles que, par exemple, la lisibilité/la maintenabilité/les performances, et ceux-ci ont toujours été limités aux polyfills placés dans https://github.com/mozilla/pdf .js/blob/master/src/shared/compatibility.js

De plus, à ce stade, un bogue doit empêcher l'utilisation de la bibliothèque dans IE11 pour être considéré comme valide. (Attendez-vous à une future version de PDF.js, qui doit encore être décidée pour autant que je sache, pour marquer IE11 comme explicitement non pris en charge et supprimer le peu de code de compatibilité qui reste. Historiquement, essayer de prendre en charge IE11 a limité la possibilité d'utiliser les fonctionnalités JavaScript modernes , et a forcé les contributeurs à passer beaucoup de temps à supporter un navigateur essentiellement mort.)

Cette page vous a été utile?
0 / 5 - 0 notes