Cómo funciona la exportación:
PDF (recomendado)
Renderizar la misma hoja en la página y llamar a window.print() con @page y CSS de impresión. Mantiene texto vectorial, SVG nítidos y encabezados de tabla repetidos (thead{display:table-header-group}). Alinear con src/print.css: margen 12 mm y print-color-adjust:exact. El pie con "Página X de N" en impresión nativa usa @page con cajas de margen (@bottom-right) en Chromium; para otros motores, usar paginación propia como aquí.
Alternativa
jsPDF + html2canvas rasteriza la hoja: pierde texto seleccionable y pesa más. Solo si se necesita descarga directa sin diálogo de impresión.
CSV / XLSX
CSV con Blob y BOM UTF-8 (para tildes en Excel). XLSX con SheetJS (XLSX.utils.json_to_sheet por tabla, una hoja por tabla más una hoja de notas de alcance, privacidad y cálculo). Exportar las filas ya filtradas y ordenadas, sin identificadores estudiantiles.