Skip to main content

Guía del marco: enrutador de aplicaciones

@markpdf/nextjs cubre los dos patrones comunes de App Router para exponer la conversión de documentos a su interfaz de usuario: Controladores de ruta (cuando desea su propio punto final HTTP, por ejemplo, para llamarlo desde fetch en el cliente o desde otro servicio) y Acciones del servidor (cuando el formulario y la lógica del servidor se encuentran en el mismo archivo, sin definir una ruta).

Regla general: la clave API nunca sale del servidor

El paquete completo supone que se importa únicamente desde:
  • Controladores de ruta (app/**/route.ts)
  • Acciones del servidor ("use server")
  • Componentes del servidor
Si importa @markpdf/nextjs desde un componente de cliente ("use client"), el paquete fallará o, peor aún, el paquete final terminará necesitando la clave en el navegador. El paquete está diseñado para no funcionar fuera del entorno del servidor Next.js.

Controlador de ruta: createConvertRouteHandler

app/api/convert/route.ts
string
requerido
Su clave API. Léelo siempre desde process.env, nunca lo codifiques.
ConvertOptions
number
Límite propio antes de reenviar a API: útil para reducir cargas enormes en el borde de tu aplicación sin gastar API cuota.
El controlador generado:
  1. Analice multipart/form-data de Request.
  2. Reenvíe el archivo a POST /convert/raw con @markpdf/sdk.
  3. Devuelve la respuesta para API tal cual (Markdown o JSON), incluido el content-type correcto.
  4. Traduzca los errores de SDK (MarkpdfAuthError, MarkpdfPayloadTooLargeError, etc.) a HTTP respuestas con el mismo código de estado.

Personaliza el controlador

Si necesita lógica adicional (autenticación de su propia aplicación, registro, su propia limitación de velocidad), utilice el cliente directamente en lugar del asistente todo en uno:
app/api/convert/route.ts

Acción del servidor: convertFormData y convertUrlAction

app/actions.ts
Las acciones del servidor se comportan como funciones normales de Node desde el punto de vista del cliente: Next.js serializa la llamada por usted. No es necesario exponer ninguna ruta.
Utilice Acciones del servidor cuando el formulario de carga se encuentre en el mismo componente que desencadena la conversión (menos el texto estándar). Utilice un controlador de ruta cuando otro servicio, un webhook o un cliente que no sea su aplicación Next.js necesite llamar al punto final directamente.

Transmisión en un controlador de ruta

app/api/convert/stream/route.ts
Next.js reenvía ReadableStream al cliente sin almacenamiento en búfer, por lo que el cliente comienza a recibir Markdown antes de que finalice la conversión. Consulte Transmisión y asíncrono.

Tiempo de ejecución: nodo frente a borde

@markpdf/nextjs funciona en ambos tiempos de ejecución de Next.js:
app/api/convert/route.ts
Para cargas grandes (PDF de decenas de MB), utilice runtime = "nodejs". El tiempo de ejecución perimetral de Next.js tiene límites de tamaño de solicitud más bajos que dependen de su proveedor de alojamiento.