Crear un PDF desde imágenes PNG/JPG
Agrega cada imagen como una página del tamaño de la imagen y devuelve los bytes del PDF.
typescript
import { PDFDocument } from "pdf-lib";
// Cada imagen (PNG o JPG) se agrega como una página del tamaño de la imagen.
export async function imagesToPdf(files: File[]): Promise<Uint8Array> {
const pdf = await PDFDocument.create();
for (const file of files) {
const bytes = new Uint8Array(await file.arrayBuffer());
const isPng = file.type === "image/png" || file.name.toLowerCase().endsWith(".png");
const image = isPng ? await pdf.embedPng(bytes) : await pdf.embedJpg(bytes);
const page = pdf.addPage([image.width, image.height]);
page.drawImage(image, { x: 0, y: 0, width: image.width, height: image.height });
}
return pdf.save();
}Dependencias
pdf-libNotas de uso
- Obtené los File desde un input de tipo file con accept de imágenes.
- El orden del array es el orden de las páginas.
Limitaciones
- Solo PNG y JPG. WebP no se incrusta directo en pdf-lib: convertilo antes a PNG con un canvas.
- Cada página toma el tamaño en píxeles de la imagen; para un A4 fijo, calculá escala y centrado.
- Una imagen dañada o de formato no soportado hará fallar embedPng/embedJpg.