Reordenar páginas con un array de orden
Recibe un array 1-based con todas las páginas en el nuevo orden y devuelve el PDF reorganizado.
typescript
import { PDFDocument } from "pdf-lib";
// order: array 1-based con TODAS las páginas en el nuevo orden, p. ej. [3, 1, 2]
export async function reorderPdfPages(file: File, order: number[]): Promise<Uint8Array> {
const source = await PDFDocument.load(await file.arrayBuffer(), { ignoreEncryption: true });
const result = await PDFDocument.create();
const pages = await result.copyPages(source, order.map((n) => n - 1));
pages.forEach((page) => result.addPage(page));
return result.save();
}Dependencias
pdf-libNotas de uso
- order debe incluir todas las páginas, cada una una sola vez. Para 3 páginas: [3, 1, 2].
- Para descargar, envolvé los bytes en un Blob de tipo application/pdf.
Limitaciones
- Si order no cubre todas las páginas o repite alguna, el resultado será incorrecto: validá antes.
- Un PDF protegido o dañado puede no poder procesarse.