> ## Documentation Index
> Fetch the complete documentation index at: https://docs.doconda.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ¿Cómo generar un PDF con estilo propio desde un LLM?

> Pasa el texto de tu LLM en Markdown a Doconda con format pdf y el estilo en una frase: recibes un PDF maquetado con la fuente incrustada.

Para generar un PDF con estilo propio desde un LLM, pide a tu modelo la respuesta en Markdown y envíala a Doconda
con `format: "pdf"` y el aspecto en `style`. Recibes un PDF maquetado (títulos, tablas, números de página) con la
fuente incrustada, así se ve igual en cualquier sitio.

## Pasos

1. Pide a tu modelo que responda en Markdown (títulos con `#`, listas, tablas).
2. Guarda tu API key en `DOCONDA_API_KEY` e instala el SDK (`pip install doconda` o `npm install @doconda/sdk`).
3. Envía ese Markdown con `format: "pdf"` y el estilo, y descarga el PDF.

<CodeGroup>
  ```python Python theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  from pathlib import Path
  from doconda import Doconda

  markdown = "# Resumen del trimestre\n\n| Mes | Ventas |\n|---|---|\n| Enero | 12.400 € |"  # la respuesta de tu LLM

  doconda = Doconda()  # lee la key de DOCONDA_API_KEY
  doc = doconda.documents.create(
      format="pdf",
      content={"markdown": markdown},
      style="letra Inter 11, títulos azul oscuro, márgenes de 2 cm, numera las páginas",
  )
  Path("resumen.pdf").write_bytes(doconda.documents.download(doc["id"], "pdf"))
  ```

  ```ts TypeScript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  import { writeFile } from "node:fs/promises"
  import { Doconda } from "@doconda/sdk"

  const markdown = "# Resumen del trimestre\n\n| Mes | Ventas |\n|---|---|\n| Enero | 12.400 € |" // la respuesta de tu LLM

  const doconda = new Doconda()
  const doc = await doconda.documents.create({
    format: "pdf",
    content: { markdown },
    style: "letra Inter 11, títulos azul oscuro, márgenes de 2 cm, numera las páginas",
  })
  await writeFile("resumen.pdf", await doconda.documents.download(doc.id, "pdf"))
  ```
</CodeGroup>

Si prefieres que Doconda escriba el contenido, cambia `content` por `prompt` («Resumen del trimestre para el
comité, con títulos azules»): el estilo pedido en la frase también se aplica.

## Qué devuelve

* Un PDF con la fuente incrustada. Con `format: "pdf"` sale solo el PDF; con `docx` recibes además el Word editable.
* `style_applied`: cómo se entendió el estilo, y `style_unsupported`: lo que no se pudo aplicar.
* `status`: `ready`, `ready_with_warnings`, `needs_review` o `failed` (no se cobra).
* Un informe con lo que conviene revisar (`documents.report(id)`).

## Límites

* Con `quality: "fast"` el estilo es el básico: fuente, tamaño, colores, alineación, márgenes, portada, índice,
  cabecera y pie.
* Los enlaces de `outputs` caducan a los 5 minutos; `documents.outputs(id)` da otros nuevos.
* El estilo admite fuentes de Google Fonts y Calibri, Cambria, Arial, Times New Roman y Courier New. Una fuente que no
  existe vuelve en `style_unsupported`.

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Tengo que mantener plantillas o CSS de impresión?">
    No. Describes el aspecto en una frase y la maquetación se adapta a la clase de documento (un contrato, con
    cláusulas numeradas; una carta, sin números de página).
  </Accordion>

  <Accordion title="¿Puedo poner imágenes?">
    Sí. Súbelas con `files.upload`, pásalas en `sources` y colócalas en el Markdown con `![Pie](img:1)`.
  </Accordion>

  <Accordion title="¿Y si también necesito el Word?">
    Usa `format: "docx"`: recibes el Word y su PDF.
  </Accordion>
</AccordionGroup>

## Sigue leyendo

* [Crear](/guides/create) y [Estilo](/guides/style).
* [Quickstart](/quickstart).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.