Unir varios PDFs en uno
Recibe un array de File en orden y devuelve los bytes del PDF combinado.
typescript
import { PDFDocument } from "pdf-lib";
export async function mergePdfs(files: File[]): Promise<Uint8Array> {
const merged = await PDFDocument.create();
for (const file of files) {
const source = await PDFDocument.load(await file.arrayBuffer(), { ignoreEncryption: true });
const pages = await merged.copyPages(source, source.getPageIndices());
pages.forEach((page) => merged.addPage(page));
}
return merged.save();
}Dependencias
pdf-libNotas de uso
- El orden del array es el orden final de las páginas.
- Para descargar, envolvé los bytes en un Blob de tipo application/pdf y usá URL.createObjectURL.
Limitaciones
- Necesita al menos dos PDFs para que tenga sentido.
- Un PDF protegido o encriptado puede no cargar; ignoreEncryption ayuda solo en algunos casos.
- No combina formularios ni firmas digitales de forma especial.