Verfremdung von PDF-Dateien beim Druck aus MS Edge

Ein auf den Entwicklerseiten von Microsofts Browser Edge erstellter Bug-Report hat (dank Golem) meine Aufmerksamkeit erregt.

Darin geht es um ein PDF-Dokument, welches nach dem Druck aus MS Edge heraus, sein Aussehen verändert.

Bereits 2013 wurden ähnliche Probleme beim Scan von Dokumenten auf einigen Modellen der Baureihen WorkCentre und ColorQube von Xerox bekannt. Hier lag das Problem bei dem Kodierer für das in den generierten PDF-Dateien verwendete Format JBIG2. Sehr ausführlich dokumentiert wurde das damals durch David Kriesel: Link zu seinem Blog-Artikel.

In einigen Foreneinträgen und selbst direkt im Bug-Report als Anspielung werden beide Fälle miteinander in Verbindung gebracht. Handelt es sich hier also um das selbe Phänomen?

Im Bug-Report wurden zwei PDF-Dateien hinterlegt – die originale und die von Edge erzeugte:

originale PDF-Datei (Klick für PDF-Datei)
über die Druckfunktion von Edge erstellte PDF-Datei (Klick für PDF-Datei)

Bereits ein Vergleich der ersten beiden Kacheln (links oben) zeigt deutliche Unterschiede:

Kacheln in der originalen PDF-Datei
Kacheln in der aus Edge gedruckten PDF-Datei

Nachdem die Kacheln in der Originaldatei durchgehend von 0 bis 143 durchnummeriert sind, sind die Zahlen in der konvertierten Datei teilweise doppelt vergeben – dadurch fehlen auch einige andere. Auch der Text wurde durch die Umwandlung stark in Mitleidenschaft gezogen.

Anhand der ersten Kachel kann der Aufbau der PDF-Dateien genauer betrachtet werden:

ursprüngliche Version aus Edge heraus gedruckte Version

Gesamtdarstellung der einzelnen Elemente von Kachel 1.

Gesamtdarstellung der einzelnen Elemente von Kachel 1.
verwendete Bilder

Position
x=98.6395 y=575.76 pt
(x=34.7978, y=203.1153 mm)
Größe: 3.84 x 9 pts
(1.3547 x 3.175 mm)

Eigenschaften
Bildgröße: 32 x 75 px

Auflösung: 600 x 600 ppi
Komprimierung: ohne
Bit/Kanal: 1
Bildart: Bildmaske (stencil mask)
Einbettung: In-Line Stream
Größe: 309 Bytes

 

Position
x=97.1395 y=574.635 pt
(x=34.7978, y=203.1153 mm)
Größe: 6.84 x 11.625 pts
(1.3547 x 3.175 mm)

Eigenschaften Bild „Hintergrund“
Bildgröße: 57 x 100 px
Auflösung: 600 x 619 ppi
Komprimierung: ZIP
Bit/Kanal: 8
Bildart: Rasterbild
Einbettung: XObject
Größe: 17.100 Bytes
(unkomprimiert)

Eigenschaften Bildmaske
Bildgröße: 57 x 100 px
Auflösung: 600 x 619 ppi
Komprimierung: ZIP
Bit/Kanal: 8
Bildart: Bildmaske (sMask)
Einbettung: XObject
Größe: 5.700 Bytes
(unkomprimiert)

Das in Kachel zwei als Nummer verwendete Bild.
Bis auf die Position besitzt es die selben Eigenschaften wie oben.

Position
x=101.2795 y=564.24 pt
(x=35.7292, y=199.0513 mm)
Größe: 11.52 x 11.52 pts
(4.064 x 4.064 mm)

Eigenschaften
Bildgröße: 96 x 96 px
Auflösung: 600 x 600 ppi
Komprimierung: ohne
Bit/Kanal: 1
Bildart: Bildmaske (stencil mask)
Einbettung: In-Line Stream
Größe: 1.152 Bytes

Position
x=99.7795 y=563.115 pt
(x=35.2, y=198.6545 mm)
Größe: 14.52 x 14.145 pts
(5.1223 x 4.99 mm)

Eigenschaften Bild „Hintergrund“
Bildgröße: 121 x 121 px
Auflösung: 600 x 616 ppi
Komprimierung: ZIP
Bit/Kanal: 8
Bildart: Rasterbild
Einbettung: XObject
Größe: 43.923 Bytes
(unkomprimiert)

Eigenschaften Bildmaske
Bildgröße: 121 x 121 px
Auflösung: 600 x 616 ppi
Komprimierung: ZIP
Bit/Kanal: 8
Bildart: Bildmaske (sMask)
Einbettung: XObject
Größe: 14.641 Bytes
(unkomprimiert)

Die Bilder sind als In-Line Bildmaske mit 1 Bit Farbtiefe hinterlegt.
Bei allen Elementen ist der Überdruckmodus OPM1 hinterlegt, aber nicht aktiv.

 Hier sind die Bilder aus einem Bild und einer Bildmaske aufgebaut. Beide sind als XObject eingebettet.
Der Hintergrund ist trotz einer verwendeten Farbtiefe von 8 Bit aus nur einer Farbe (#000000) aufgebaut.
Bei der Bildmaske der Zahl wurden 23, bei der Bildmaske des Textes 4 Farben verwendet. Hier wurden im Zuge der Konvertierung die Bitmapmasken zu Graustufenmasken.
verwendete Pfade
Position
x=93.734 y=579.8346 pt
(x=33.0673, y=204.5528 mm)
Größe: 12.2029 x 6.2031 pts
(4.3049 x 2.1883 mm)

Rand
Farbraum: DeviceRGB
Farbe: [R:0.40, G:0.40, B:0.40]
Stärke: 0.2034 pt (0.0718 mm)
  Position
x=93.734 y=579.8346 pt
(x=33.0673, y=204.5528 mm)
Größe: 12.2029 x 6.2031 pts
(4.3049 x 2.1883 mm)

Rand
Farbraum: DeviceRGB
Farbe: [R:0.39, G:0.39, B:0.39]
Stärke: 0.2034 pt (0.0718 mm)
Position
x=93.7378 y=561.8583 pt
(x=33.0673, y=204.5528 mm)
Größe: 24.2034 x 24.2034 pts
(8.5384 x 8.5384 mm)

Rand
Farbraum: DeviceRGB
Farbe: [R:0.40, G:0.40, B:0.40]
Stärke: 0.2034 pt (0.0718 mm)
 

Position
x=93.7341 y=561.8583 pt
(x=33.0673, y=198.2032 mm)
Größe: 24.2024 x 24.2024 pts
(8.5381 x 8.5381 mm)

Rand
Farbraum: DeviceRGB
Farbe: [R:0.39, G:0.39, B:0.39]
Stärke: 0.2034 pt (0.0718 mm)

Position
x=93.8357 y=579.9363 pt
(x=33.1031, y=204.5886 mm)
Größe: 11.9995 x 5.9998 pts
(4.2332 x 2.1166 mm)

Füllung
Farbraum: DeviceRGB
Farbe: [R:91.00, G:93.40, B:96.90]
Art: Eofill
   

Position
x=93.8357 y=579.9362 pt
(x=33.1031, y=204.5886 mm)
Größe: 11.9995 x 5.9998 pts
(4.2332 x 2.1166 mm)

Füllung
Farbraum: DeviceRGB
Farbe: [R:90.98, G:93.33, B:96.86]
Art: Eofill

Position
x=93.8357 y=561.9371 pt
(x=33.1031, y=198.2389 mm)
Größe: 23.999 x 23.999 pts
(8.4663 x 8.4663 mm)

Füllung
Farbraum: DeviceRGB
Farbe: [R:100.00, G:40.20, B:0.40]
Art: Eofill

 

Position
x=93.8357 y=561.9371 pt
(x=33.1031, y=198.2389 mm)
Größe: 23.999 x 23.999 pts
(8.4663 x 8.4663 mm)

Füllung
Farbraum: DeviceRGB
Farbe: [R:100.00, G:40.39, B:0.39]
Art: Eofill

Auch bei allen Pfaden ist der Überdruckmodus OPM1 hinterlegt, aber nicht aktiv. Hier erfolgten durch die Umwandlung nur minimale Änderungen.

In beiden PDF-Dateien wird an keiner Stelle das Format JBIG2 verwendet. Die fehlerhafte Konvertierung muss also eine andere Ursache haben.

Um noch zu prüfen ob es sich um ein reproduzierbares Problem handelt, wurde eine von Microsoft zum Test von Edge bereits fertig konfigurierte VM verwendet. Der Test erfolgte unter Windows 10 Enterprise Evaluation mit Edge-Version 38.14393.0.0 (EdgeHTML 14.14393). Wie im Bug-Report wurde die originale Datei über den Drucker „Microsoft Print to PDF“ als neue PDF-Datei abgespeichert:

über die Druckfunktion (Microsoft Pint to PDF) von Edge 38.14393.0.0 erstellte PDF-Datei (Klick für PDF-Datei)
Der interne Aufbau gleicht der vom Verfasser des Bug-Reports erstellten PDF-Datei.
Zusätzlich wurde der Test noch mit Edge-Version 40.15063.0.0 (EdgeHTML 15.15063), ebenfalls unter einer frischen Installation von Windows 10 Enterprise Evaluation durchgeführt:
über die Druckfunktion (Microsoft Pint to PDF) von Edge 40.15063.0.0 erstellte PDF-Datei (Klick für PDF-Datei)

Bei den Tests ist mir aufgefallen, dass sich die Abweichungen bei jedem neuen Druckvorgang teilweise erheblich unterscheiden. So kann es auch vorkommen, dass alle Zahlen korrekt wiedergegeben werden und der Fehler nur in den Texten auftritt.

Auch interessant ist, dass der Fehler in den Kacheln mit identischem einzeiligen Text in einer Reihe nicht auftritt (zumindest in allen im Rahmen dieses Beitrages erstellten Daten) – die Zahlen sind aber weiterhin betroffen. Das betrifft die Reihen mit den Kachelnummern 16 – 31, 48 – 63 und 112 – 127).

Um zu prüfen, ob der Fehler von der Edge-Druckfunktion oder dem verwendeten PDF-Drucker verursacht wird, wurde noch ein PCL6-Datenstrom über den HP Druckertreiber für den Laserjet M425 erzeugt. Dieser zeigt ebenfalls die bereits bekannten Konvertierungsprobleme:

Die ersten beiden Kacheln aus dem aus Edge 38.14393.0.0 gedrucktem PCL6-Datenstrom

Der Fehler wird also direkt von Edge verursacht. Sicherheitshalber wurde die Originaldatei noch aus dem Acrobat Reader DC über den Drucker „Microsoft Print to PDF“ umgewandelt – hier traten keine Fehler auf.

Bislang (Stand 13.05.17) wurde der Fehler noch nicht behoben.