Guía marco
La tecla API en el navegador
MarkpdfProvider inicializa un MarkpdfClient en el cliente, por lo que la clave API que le pasa termina en el paquete JS que se descarga en el navegador. Cualquiera puede abrir las herramientas de desarrollo, ir a la pestaña Red o inspeccionar el paquete y copiarlo.
Esto es aceptable cuando:
- Estás creando un prototipo o construyendo una herramienta interna con acceso controlado.
- Ya tienes una clave de privilegios bajos, con límites de uso ajustados, dedicada únicamente a esa interfaz.
- El “costo” de que alguien use su clave para convertir archivos PDF no es una preocupación real (por ejemplo, herramienta de usuario único, demostración, entorno de prueba).
Patrón recomendado para producción: proxy en tu propio backend
Si su aplicación tiene un backend (Next.js, Express, cualquier marco con rutas del lado del servidor), no inicialiceMarkpdfClient/MarkpdfProvider en el cliente. En cambio:
- Cargue el archivo en su propio punto final (
/api/converto similar). - Su servidor llama a markpdf con la clave guardada como una variable de entorno del lado del servidor.
- Su servidor devuelve el Markdown al cliente.
@markpdf/nextjs ya implementa este patrón; consulte Instalación de Next.js y Guía del marco de trabajo de Next.js (Controladores de rutas y acciones del servidor). El componente de React que carga el archivo aún puede parecerse al de useConvertFile, pero apuntando a su propia ruta:
@markpdf/sdk en el servidor y consuma ese punto final desde React con fetch normal en lugar de @markpdf/react.
Cuándo usar @markpdf/react directo
- Aplicaciones sin su propio backend (SPA estáticas servidas desde CDN) donde de todos modos no tienes dónde ocultar las claves.
- Herramientas internas detrás de VPN/SSO donde el público que puede ver la clave ya está autorizado a usarla.
- Prototipos y demostraciones.
Representación del lado del servidor (SSR) / Componentes del servidor
MarkpdfProvider usa useMemo, useContext y crea el cliente en el momento del renderizado; es un componente del cliente. Compruébalo explícitamente si tu marco lo requiere:
providers.tsx
Si necesita marcar la clave como
NEXT_PUBLIC_* (o el prefijo público equivalente de su marco) para que MarkpdfProvider la reciba, ya ha asumido el compromiso de exponerla al navegador. Revisa el apartado anterior antes de hacerlo en producción.