PDF para PNG com tom vermelho no macOS no IronPDF for Node.js

This article was translated from English: Does it need improvement?
Translated
View the article in English

Ao rasterizar um PDF para PNG no macOS usando IronPDF for Node.js, a imagem de saída tem cores incorretas. Um código QR que aparece preto no PDF de origem é renderizado em vermelho no PNG exportado.

Um erro no mapeamento de canal de cores na linha de rasterização de PDF para imagem no macOS faz com que a saída use uma ordem de canais incorreta, produzindo o tom vermelho.

Solução

Rasterize para JPG em vez de PNG, depois use sharp para converter o JPG em um PNG em tons de cinza. Isso evita o problema de mapeamento de canal de cores do macOS.

Install sharp:

npm install sharp
npm install sharp
SHELL

Rasterize para JPG, depois converta para PNG:

import { PdfDocument, ImageType } from "@ironsoftware/ironpdf";
import sharp from "sharp";

const pdf = await PdfDocument.fromFile("input.pdf");

const [jpgPage] = await pdf.rasterizeToImageBuffers({
    fromPages: 0,
    imageType: ImageType.JPG,
});

const pngBuffer = await sharp(jpgPage)
    .flatten({ background: "#ffffff" })
    .grayscale()
    .threshold(160)
    .png()
    .toBuffer();

Ajuste o valor de threshold entre 120 e 200 com base no contraste do código QR no seu PDF. Esta etapa de pós-processamento é segura para códigos QR porque eles são binários: células pretas em um fundo branco. Uma conversão em tons de cinza não perde nada para códigos QR.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Versão: 2026.6 recém-lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas?
executar um exemplo Veja seu HTML se transformar em um PDF.