Pdf.js: Beim Drucken aus Iframe in IE11 wird die umgebende Seite anstelle des Dokuments gedruckt

Erstellt am 22. Mai 2019  ·  3Kommentare  ·  Quelle: mozilla/pdf.js

Notiz:
Dies wurde zuvor in #7711 und wahrscheinlich in #6152 gemeldet, aber fälschlicherweise als behoben oder nicht relevant geschlossen

Aufbau:

  • Webbrowser und seine Version: IE 11.0.9600.19356, Update-Version 11.0.125
  • Betriebssystem und Version: Windows 7
  • PDF.js-Version: 2.0.943
  • Ist eine Browsererweiterung: nein

Schritte zum Reproduzieren des Problems:

  1. Viewer in iframe laden
  2. Lösen Sie einen Druck mit Javascript von der Hauptseite aus (iframe.contentWindow.print())

Testfall
https://kleins05.github.io/pdf.js/test-ieiframe/
(IE11 laden, Drucken-Button klicken, Druckausgabe prüfen)

Was ist das erwartete Verhalten?
Das PDF im Iframe sollte gedruckt werden.

Was schief gelaufen ist?
Die umgebende Seite wird gedruckt.
Screen Shot 2019-05-22 at 13 21 01

Hilfreichster Kommentar

Ich habe den Grund gefunden. Im Gegensatz zu anderen Browsern bewirkt window.print im IE, dass der aktuell fokussierte Frame/Fenster gedruckt wird, nicht unbedingt der, auf den sich window bezieht. Die Verwendung von document.execCommand vermeidet dies.

In web/pdf_print_service.js:187 statt print.call(window); verwenden:

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

Wenn Sie trotz Ihrer begrenzten Unterstützung von IE11 gerne einen Pull-Request akzeptieren, bin ich bereit, einen zu erstellen. Gib mir Bescheid.

Alle 3 Kommentare

Die Druckunterstützung in IE11 ist im Allgemeinen eingeschränkt, außerdem lesen Sie bitte den entsprechenden Abschnitt der FAQ :

Während die Bibliothek und der Standard-Viewer vorerst noch in IE 11/Edge (nicht Chromium-basiert) funktionieren sollten, sind einige Funktionen/Features möglicherweise nicht verfügbar und die Leistung wird im Vergleich zu modernen Browsern schlechter sein. In Zukunft werden nur Fehler akzeptiert, die die Ausführung der Bibliothek und/oder des Standard-Viewers vollständig verhindern.

Ich habe den Grund gefunden. Im Gegensatz zu anderen Browsern bewirkt window.print im IE, dass der aktuell fokussierte Frame/Fenster gedruckt wird, nicht unbedingt der, auf den sich window bezieht. Die Verwendung von document.execCommand vermeidet dies.

In web/pdf_print_service.js:187 statt print.call(window); verwenden:

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

Wenn Sie trotz Ihrer begrenzten Unterstützung von IE11 gerne einen Pull-Request akzeptieren, bin ich bereit, einen zu erstellen. Gib mir Bescheid.

Wenn Sie trotz Ihrer eingeschränkten Unterstützung von IE11 gerne einen Pull-Request akzeptieren,

Leider haben wir aus verschiedenen Gründen, wie z. B. Lesbarkeit/Wartbarkeit/Leistung, nie Kompatibilitäts-„Hacks“ akzeptiert, die in der Hauptcodebasis platziert wurden, und diese waren immer auf Polyfills beschränkt, die in https://github.com/mozilla/pdf platziert wurden

Darüber hinaus muss zu diesem Zeitpunkt ein Fehler verhindern, dass die Bibliothek überhaupt in IE11 verwendet wird, um als gültig zu gelten. (Erwarten Sie eine zukünftige PDF.js-Version, über die meines Wissens noch entschieden werden muss, um IE11 als ausdrücklich nicht unterstützt zu markieren und den wenigen verbleibenden Kompatibilitätscode zu entfernen. In der Vergangenheit hat der Versuch, IE11 zu unterstützen, die Möglichkeit eingeschränkt, moderne JavaScript-Funktionen zu verwenden , und hat Mitwirkende gezwungen, viel Zeit damit zu verbringen, einen im Wesentlichen toten Browser zu unterstützen.)

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen