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

# Instalación

> Instale el paquete oficial Flutter/Dart para Flash PDF en Markdown.

# Instalación

`markpdf` es el paquete oficial de Dart/Flutter para API Flash PDF a Markdown, construido sobre `package:http`. Funciona en Android, iOS, escritorio (macOS/Windows/Linux) y Flutter Web, y también en Dart puro (CLI, backend, scripts) sin necesidad de Flutter.

\##Requisitos

* Dart SDK `>=3.0.0 <4.0.0` (usa `sealed class` y coincidencia de patrones de Dart 3, por lo que no funciona con Dart 2).
* Flutter 3.10+ si lo usas dentro de una aplicación Flutter.
* Una tecla API. Consulte [Autenticación](/docs/public/es/authentication).

## Instalar

<CodeGroup>
  ```bash Flutter theme={null}
  flutter pub add markpdf
  ```

  ```bash Dart puro theme={null}
  dart pub add markpdf
  ```

  ```yaml pubspec.yaml theme={null}
  dependencies:
    markpdf: ^0.1.0
  ```
</CodeGroup>

Luego:

```bash theme={null}
flutter pub get
# or, in a Dart project without Flutter:
dart pub get
```

\##Importar

El paquete completo se expone desde un único punto de entrada:

```dart theme={null}
import 'package:markpdf/markpdf.dart';
```

Esta importación trae `MarkpdfClient`, `ConvertOptions`, las enumeraciones (`InputFormat`, `ConversionMode`, `ResponseFormat`), `ConvertResult` y sus subtipos (`MarkdownResult`, `JsonConvertResult`, `QueuedResult`), `JsonResult`, `Job` y todas las excepciones (`MarkpdfException` y subclases). No hay importaciones separadas por submódulo; no importe `package:markpdf/src/...` directamente, esos archivos son una implementación interna.

## Configurar la clave API

<Warning>
  `markpdf` está destinado a aplicaciones donde el binario se ejecuta en el dispositivo del usuario. **Nunca codifique su clave API en el código de la aplicación** que distribuye en las tiendas; cualquiera puede extraerla del binario (APK, IPA o el paquete Flutter Web) con herramientas de descompilación triviales. Utilice una de estas estrategias:

  * Llame a su propio backend, que a su vez llama a Flash PDF para Markdown con la clave segura del lado del servidor. Es la opción recomendada para aplicaciones públicas.
  * Si necesitas llamar directamente desde el cliente (prototipos, aplicaciones internas, herramientas de uso restringido), inyecta la clave en el tiempo de compilación con `--dart-define` y restringe la clave por origen/uso desde tu panel de facturación.
</Warning>

```dart theme={null}
import 'package:markpdf/markpdf.dart';

final client = MarkpdfClient(apiKey: 'YOUR_API_KEY');
```

Con `--dart-define` (evita que la clave esté en texto plano en el repositorio):

```bash theme={null}
flutter run --dart-define=MARKPDF_API_KEY=YOUR_API_KEY
```

```dart theme={null}
const apiKey = String.fromEnvironment('MARKPDF_API_KEY');
final client = MarkpdfClient(apiKey: apiKey);
```

En un script o backend de Dart puro, puede leer la variable de entorno del proceso:

```dart theme={null}
import 'dart:io';
import 'package:markpdf/markpdf.dart';

final client = MarkpdfClient(apiKey: Platform.environment['MARKPDF_API_KEY']!);
```

## Apunta a tu propio dominio (etiqueta blanca)

`MarkpdfClient` acepta un `baseUrl` opcional si tiene su propio dominio delante de API (consulte [Whitelabel](/docs/public/es/concepts/whitelabel)):

```dart theme={null}
final client = MarkpdfClient(
  apiKey: 'YOUR_API_KEY',
  baseUrl: 'https://api.markpdf.tech',
);
```

Si no lo aprueba, el cliente utiliza el punto final de producción de forma predeterminada.

## Verificar la instalación

```dart theme={null}
import 'dart:io';
import 'package:markpdf/markpdf.dart';

Future<void> main() async {
  final client = MarkpdfClient(apiKey: Platform.environment['MARKPDF_API_KEY']!);
  try {
    final result = await client.convertFromUrl(
      'https://raw.githubusercontent.com/mozilla/pdf.js/master/test/pdfs/basicapi.pdf',
    );
    if (result is MarkdownResult) {
      print('OK, ${result.markdown.length} caracteres de Markdown');
    }
  } on MarkpdfException catch (e) {
    print('Failedo (${e.statusCode}): ${e.message}');
  } finally {
    client.close();
  }
}
```

Si imprime la longitud del Markdown, la instalación y la clave API funcionan correctamente.

## Siguiente paso

Continúe con [Inicio rápido](/docs/public/es/sdks/flutter/quickstart).
