Hace dos años, una IA te escribía un párrafo. Hoy un agente produce un informe de treinta páginas con sus tablas, una documentación técnica completa, un acta a partir de una transcripción, una propuesta comercial a partir del CRM. Claude Code, Cursor, Notion AI, los agentes internos conectados a tus herramientas: casi todos entregan lo mismo, Markdown, a veces HTML, rara vez un PDF.
Y es justo al convertir ese entregable en PDF cuando muchos equipos vuelven a meter, sin pensarlo, exactamente lo que se habían esforzado en evitar: un servicio de terceros que lee, guarda y a veces aprende.
El punto crítico: el agente ya lo ha leído todo
Un agente que redacta un informe ha tenido acceso a lo que necesitaba para escribirlo: el código, los tickets, los correos, la base de clientes, la transcripción de la reunión. El documento que produce es un resumen de esas fuentes. Suele ser el archivo más sensible de toda la cadena, más que cada fuente por separado, porque las reúne todas.
En una empresa seria, el circuito del propio agente está controlado: plan profesional, acuerdo de tratamiento de datos, sin entrenamiento, quizá un modelo alojado en Europa o en local. Y luego el desarrollador o el jefe de proyecto arrastra el informe.md al «primer conversor Markdown → PDF de Google»: una web desconocida, cuyas condiciones nadie ha leído, y que recibe en claro el resumen de todo lo que el agente ha visto.
El circuito limpio, paso a paso
1. El agente genera el Markdown, dentro de su perímetro. Ahí es donde se aplican tus garantías contractuales. Pídele al agente que escriba un archivo, no que pegue el texto en el chat: el archivo conserva los saltos de línea de las tablas y los bloques de código.
2. Revisión humana, y constancia de esa revisión. Es lo que el AI Act espera de ti si el documento se publica para informar al público: un control editorial asumido te exime de la mención «generado por IA» (los detalles). Para un entregable de cliente es, en cualquier caso, la única forma de no enviar una cláusula inventada. Corrige en el Markdown, no en el PDF.
3. Conversión local, en el navegador. Markdown a PDF en PDFKami maqueta el archivo en tu ordenador: títulos, tablas, bloques de código y enlaces conservados, PDF vectorial y texto seleccionable a través del cuadro de impresión del navegador. Sin envío, sin modelo, sin lectura. Las imágenes remotas no se cargan a propósito (un documento recibido no debe poder avisar de que se ha abierto); las imágenes en base64, sí.
4. Acabados, siempre en local. Numerar las páginas; unir con una portada o unos anexos; poner una marca de agua «Confidencial — [cliente] — [fecha]», que vale tanto para un entregable producido por un agente como para un documento de identidad; comprimir si el informe contiene capturas de pantalla.
5. Control antes de enviar. Analizar un PDF sobre el archivo final: ningún script, ninguna acción, ningún adjunto. Un entregable limpio no los tiene, y un cliente bien equipado lo comprobará.
En ningún momento entre el paso 1 y el envío, el documento sale del equipo. Los pasos 3 a 5 puedes hacerlos en modo avión.
El caso de los agentes de código
Claude Code, Cursor, Copilot y los demás generan README, ADR, informes de auditoría, notas de migración: documentación que describe con precisión la arquitectura, las dependencias y a veces las vulnerabilidades conocidas de un sistema. Para un atacante son documentos de primera.
Dos reflejos: no convertirlos en un servicio online (el informe de auditoría de seguridad subido a un conversor gratuito es un clásico del que uno se arrepiente); y tratarlos como entregables, con marca de agua y destinatario con nombre, cuando salen del equipo.
Automatizar sin volver a meter a un tercero
Para un flujo regular (informe semanal, ficha de producto, documentación versionada), un script local (Pandoc, o markdown + WeasyPrint en Python) hace la conversión en tu CI sin ningún servicio externo; te damos los comandos en Convertir un Markdown a PDF. Para un documento puntual, PDFKami es más rápido y no exige nada instalado, tanto en el ordenador del jefe de proyecto como en el del desarrollador.