Alle handleidingen

Hoe PNG-transparantie zich gedraagt in een PDF

Veel PNG-afbeeldingen hebben doorzichtige delen: een logo zonder achtergrond, een pictogram, een grafiek die op een transparante achtergrond is geëxporteerd, een uitgeknipte productfoto, de zachte schaduw rond een screenshot van een venster. PNG bewaart dat in een extra kanaal, het alfakanaal, dat voor elke pixel aangeeft hoe dekkend die is: helemaal, helemaal niet of ergens daartussen. Deze handleiding gaat over wat PNG to PDF met dat kanaal doet, en waarom het resultaat je op het scherm kan verrassen.

De transparantie gaat mee de PDF in

Ook een PDF kan transparantie bevatten, als zacht masker: een aparte afbeelding in grijstinten naast de afbeelding zelf, die de lezer vertelt hoeveel van elke pixel hij moet tonen. PNG to PDF schrijft het alfakanaal van je PNG in dat masker, met 8 bits per pixel. In browsers op basis van Chromium, zoals Chrome en Edge, bevat het masker precies de waarden uit je bestand. In Safari kan de alfa van grijstinten-PNG’s met transparantie en van 16-bits-PNG’s 1 niveau op 255 afwijken, wat je niet kunt zien. Dus:

Eén klein detail: de kleur van een half transparante pixel kan hooguit 1 niveau op 255 afwijken. Browsers verwerken zulke pixels in een voorvermenigvuldigde vorm, en de afronding laat dat spoortje achter. Je ziet het niet.

PNG’s die transparante kleuren op de oudere manier aangeven – paletafbeeldingen en afbeeldingen met een kleursleutel in een tRNS-chunk – gaan ook open.

Waarom de transparante delen wit lijken

Een PDF-pagina is wit. Als een lezer je pagina tekent, schildert hij de afbeelding over dat wit heen, dus overal waar de afbeelding transparant is, zie je de pagina – en die is wit. Een logo met een transparante achtergrond ziet eruit als een logo dat op wit papier is gedrukt. De schaduw van een venster-screenshot loopt uit in wit in plaats van in je bureaublad.

De transparantie zit nog steeds in het bestand. Een lezer die de pagina op een andere kleur toont, of een tool die de afbeelding uit de PDF haalt, krijgt de afbeelding samen met haar masker.

Daar volgen twee dingen uit:

Ook Kleiner bestand houdt de transparantie

Geen van beide opties in Pagina-instelling gooit het alfakanaal weg. Met Kwaliteit eerst wordt de afbeelding verliesvrij opgeslagen met haar zachte masker. Met Kleiner bestand krijgt een grote afbeelding een kleinere kandidaat die nog steeds verliesvrij is en nog steeds zijn zachte masker heeft; afbeeldingen van 2000 px of minder aan de lange zijde worden helemaal niet veranderd. Geen van beide opties maakt van een PNG een JPEG, een formaat zonder transparantie. PNG-kwaliteit en PDF-grootte legt uit wanneer de kandidaat wordt gebruikt.

Welke lezers we hebben gecontroleerd

We maakten PDF’s van transparante test-PNG’s en openden ze in onafhankelijke PDF-engines: Poppler (de engine achter veel Linux-viewers), Core Graphics en PDFKit van Apple, PDFium (de engine van de ingebouwde viewer van Chrome) en pdf.js (de ingebouwde viewer van Firefox). Getekend over de witte pagina toonde elk van die engines het verwachte resultaat, binnen 1 niveau op 255.

Dat gaat over hoe de pagina eruitziet. Hoe een bepaalde app met transparantie omgaat als die je PDF afdrukt, bewerkt of omzet, hangt af van die app, en we hebben ze niet allemaal getest.

Hoe groot elke afbeelding op haar pagina komt en hoeveel wit eromheen overblijft, lees je in paginaformaat voor PNG-afbeeldingen.

Maak je pdf in de browser → PNG to PDF