Extraer un rango de páginas a un PDF nuevo
Copia las páginas del rango inclusivo [from, to] (1-based) a un documento nuevo.
typescript
import { PDFDocument } from "pdf-lib";
// Extrae un rango inclusivo (1-based) a un PDF nuevo. Ej: extractPageRange(file, 2, 5)
export async function extractPageRange(file: File, from: number, to: number): Promise<Uint8Array> {
const source = await PDFDocument.load(await file.arrayBuffer(), { ignoreEncryption: true });
const result = await PDFDocument.create();
const indices: number[] = [];
for (let page = from; page <= to; page += 1) {
indices.push(page - 1);
}
const pages = await result.copyPages(source, indices);
pages.forEach((page) => result.addPage(page));
return result.save();
}Dependencias
pdf-libNotas de uso
- from y to son 1-based e inclusivos: extractPageRange(file, 2, 5) devuelve las páginas 2 a 5.
- Para descargar, envolvé los bytes en un Blob de tipo application/pdf.
Limitaciones
- Devuelve un único PDF. Para varias salidas en un ZIP, combiná esto con la librería jszip.
- Validá que from y to estén dentro del total de páginas (source.getPageCount()).
- Un PDF protegido o dañado puede no poder leerse.