mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(docs-i18n): translate all documentation into 20 languages
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Ordena las páginas de un PDF para plegarlas y formar un folleto."
|
||||
i18n_source_hash: 8844b6d4fe96
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2afc377fa975
|
||||
---
|
||||
|
||||
# Folleto PDF {#booklet-pdf}
|
||||
|
||||
Impone las páginas para la impresión a doble cara de modo que las hojas impresas puedan plegarse para formar un folleto.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/booklet-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo `settings` en JSON.
|
||||
|
||||
## Parámetros {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| perSheet | integer | No | `2` | Páginas por hoja: `2`, `4`, `6` o `8` |
|
||||
|
||||
## Ejemplo de solicitud {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/booklet-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"perSheet": 2}'
|
||||
```
|
||||
|
||||
## Ejemplo de respuesta {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2400000
|
||||
}
|
||||
```
|
||||
|
||||
## Notas {#notes}
|
||||
|
||||
- El valor predeterminado `perSheet: 2` coloca dos páginas una al lado de la otra en cada hoja, que es el diseño de folleto estándar para la impresión a doble cara.
|
||||
- Se añaden páginas en blanco automáticamente si el número total de páginas no es múltiplo del tamaño de la hoja.
|
||||
- Imprime la salida a doble cara con encuadernación por el borde corto, luego pliega y grapa.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "Reduce el tamaño de un archivo PDF comprimiendo las imágenes incrustadas."
|
||||
i18n_source_hash: a8bb0baaca25
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 4af7513b61bc
|
||||
---
|
||||
|
||||
# Comprimir PDF {#compress-pdf}
|
||||
|
||||
Reduce el tamaño de un archivo PDF submuestreando las imágenes incrustadas. Elige entre un control deslizante de calidad o un tamaño de archivo objetivo.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/compress-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | No | `"quality"` | Modo de compresión: `quality` o `targetSize` |
|
||||
| quality | integer | No | `75` | Calidad de compresión, 1-100 (mayor = menos compresión). Se usa en el modo `quality` |
|
||||
| targetSizeKb | number | No | - | Tamaño de archivo objetivo en kilobytes. Se usa en el modo `targetSize` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
Comprimir por calidad:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/compress-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"mode": "quality", "quality": 60}'
|
||||
```
|
||||
|
||||
Comprimir a un tamaño objetivo:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/compress-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"mode": "targetSize", "targetSizeKb": 500}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 5200000,
|
||||
"processedSize": 1800000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- En el modo `quality`, los valores más bajos producen archivos más pequeños con mayor degradación de la imagen.
|
||||
- En el modo `targetSize`, una búsqueda binaria encuentra el DPI más alto que se ajusta al tamaño solicitado.
|
||||
- Si la compresión aumentara el tamaño del archivo, se devuelven los bytes originales sin cambios.
|
||||
- El contenido de texto y vectorial no se ve afectado; solo se submuestrean las imágenes rasterizadas incrustadas.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Recorta todas las páginas de un PDF con un margen uniforme."
|
||||
i18n_source_hash: ffa1a2cee08d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0139ec3de2b1
|
||||
---
|
||||
|
||||
# Recortar PDF {#crop-pdf}
|
||||
|
||||
Recorta todas las páginas de un PDF aplicando un margen uniforme, eliminando contenido de cada borde por igual.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/crop-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| margin | number | No | `20` | Margen de recorte uniforme en puntos (0-2000) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/crop-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"margin": 50}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2440000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- El valor del margen está en puntos PDF (1 punto = 1/72 de pulgada).
|
||||
- El mismo margen se aplica a los cuatro bordes de cada página.
|
||||
- Un margen de `0` elimina todos los márgenes de recorte existentes, mostrando el media box completo.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Extrae páginas seleccionadas de un PDF a un documento nuevo."
|
||||
i18n_source_hash: e4a8fad31e0f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: b508fd09be4f
|
||||
---
|
||||
|
||||
# Extraer páginas {#extract-pages}
|
||||
|
||||
Extrae páginas seleccionadas de un PDF a un documento nuevo y más pequeño.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/extract-pages`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| range | string | Sí | - | Rango de páginas en sintaxis qpdf, p. ej. `"1-5,8,10-z"` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/extract-pages \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"range": "1-5,8,10-z"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 3200000,
|
||||
"processedSize": 1100000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Los rangos de páginas usan la sintaxis de qpdf: `1-5` para las páginas 1 a 5, `z` para la última página y comas para combinar rangos (p. ej. `1-3,7,10-z`).
|
||||
- Las páginas extraídas conservan su formato, anotaciones y enlaces originales.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Incorpora formularios y anotaciones al contenido de la página."
|
||||
i18n_source_hash: b25c2a2b6f40
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 4956584cd062
|
||||
---
|
||||
|
||||
# Aplanar PDF {#flatten-pdf}
|
||||
|
||||
Incorpora los campos de formulario interactivos y las anotaciones al contenido de la página, produciendo un PDF estático que se ve igual en todas partes.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/flatten-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta herramienta no tiene parámetros configurables. Sube un PDF y todos los formularios y anotaciones se aplanarán.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/flatten-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@form.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/form.pdf",
|
||||
"originalSize": 185000,
|
||||
"processedSize": 172000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceptado: `.pdf`.
|
||||
- Esta es una herramienta rápida (síncrona) que devuelve el resultado directamente.
|
||||
- Los valores de los campos de formulario se conservan como texto estático en la salida.
|
||||
- Las anotaciones (comentarios, resaltados, notas adhesivas) pasan a formar parte del contenido de la página y ya no se pueden editar.
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Convierte todos los colores de un PDF a escala de grises."
|
||||
i18n_source_hash: f327addb32d6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: af7cf81a5664
|
||||
---
|
||||
|
||||
# PDF en escala de grises {#grayscale-pdf}
|
||||
|
||||
Convierte todos los colores de un PDF a escala de grises, produciendo una versión en blanco y negro del documento.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/grayscale-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF. No se requiere un campo `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta herramienta no tiene parámetros de configuración. Sube el archivo PDF directamente.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/grayscale-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 3200000,
|
||||
"processedSize": 2800000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Todos los espacios de color (RGB, CMYK) se convierten a escala de grises, incluidas las imágenes incrustadas, los gráficos vectoriales y el texto.
|
||||
- El archivo de salida suele ser más pequeño que el original porque los datos en escala de grises requieren menos bytes por píxel.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Lineariza un PDF para una visualización web rápida (descarga progresiva)."
|
||||
i18n_source_hash: 36280b478161
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ff913c2044cf
|
||||
---
|
||||
|
||||
# Optimizar PDF para web {#web-optimize-pdf}
|
||||
|
||||
Lineariza un PDF para que pueda descargarse y mostrarse progresivamente en los navegadores web sin esperar al archivo completo.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/linearize-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF. No se requiere un campo `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta herramienta no tiene parámetros de configuración. Sube el archivo PDF directamente.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/linearize-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2460000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- La linearización reorganiza la estructura interna del PDF para que la primera página pueda renderizarse antes de que se haya descargado el archivo completo.
|
||||
- El archivo de salida puede ser ligeramente más grande que la entrada debido a los datos de linearización añadidos.
|
||||
- Los PDF ya linearizados se vuelven a linearizar sin problemas.
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
description: "Combina varios PDF en un único documento."
|
||||
i18n_source_hash: e82e389cb8b6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c306fb677b0b
|
||||
---
|
||||
|
||||
# Combinar PDF {#merge-pdfs}
|
||||
|
||||
Combina dos o más archivos PDF en un único documento, conservando el orden de las páginas de cada archivo de entrada.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/merge-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con dos o más archivos PDF. No se requiere un campo `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta herramienta no tiene parámetros de configuración. Simplemente sube dos o más archivos PDF.
|
||||
|
||||
| Restricción | Valor |
|
||||
|------------|-------|
|
||||
| Archivos mínimos | 2 |
|
||||
| Archivos máximos | 20 |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/merge-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document1.pdf" \
|
||||
-F "file=@document2.pdf" \
|
||||
-F "file=@document3.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/merged.pdf",
|
||||
"originalSize": 4500000,
|
||||
"processedSize": 4200000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Los archivos se combinan en el orden en que se suben.
|
||||
- Se requieren al menos dos archivos PDF; la solicitud fallará con un error 400 si se proporcionan menos.
|
||||
- El número máximo de archivos de entrada es 20.
|
||||
- Los PDF cifrados deben desbloquearse antes de combinarlos.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Organiza varias páginas de PDF por hoja (2 por hoja, 4 por hoja, etc.)."
|
||||
i18n_source_hash: 9dd82737cb72
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: b48b0f902104
|
||||
---
|
||||
|
||||
# PDF N por hoja {#n-up-pdf}
|
||||
|
||||
Organiza varias páginas por hoja para ahorrar papel al imprimir, como los diseños de 2 por hoja o 4 por hoja.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/nup-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| perSheet | integer | No | `2` | Páginas por hoja: `2`, `3`, `4`, `8`, `9`, `12` o `16` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/nup-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"perSheet": 4}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2300000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Las páginas se organizan en orden de lectura (de izquierda a derecha, de arriba abajo).
|
||||
- El tamaño de la página de salida coincide con el original; las páginas individuales se reducen para ajustarse a la cuadrícula.
|
||||
- Un documento de 20 páginas con `perSheet: 4` produce una salida de 5 páginas.
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
description: "Extrae texto de documentos PDF mediante OCR con inteligencia artificial."
|
||||
i18n_source_hash: 1431fcba180b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: bddf4136c82a
|
||||
---
|
||||
|
||||
# OCR de PDF {#pdf-ocr}
|
||||
|
||||
Extrae texto de documentos PDF mediante reconocimiento óptico de caracteres con inteligencia artificial. Admite varios niveles de calidad e idiomas. Requiere que el paquete de funciones OCR esté instalado.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/ocr-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings` opcional.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| quality | string | No | `"balanced"` | Nivel de calidad del OCR: `fast`, `balanced`, `best` |
|
||||
| language | string | No | `"auto"` | Idioma del documento: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko` |
|
||||
| pages | string | No | `"all"` | Selección de páginas, p. ej. `"all"`, `"1-3"`, `"1,3,5"` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/ocr-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@scanned.pdf" \
|
||||
-F 'settings={"quality": "best", "language": "en", "pages": "1-5"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
Devuelve `202 Accepted`. Sigue el progreso mediante SSE en `/api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceptado: `.pdf`.
|
||||
- Esta es una herramienta de IA que requiere que el **paquete de funciones OCR** esté instalado. Si el paquete no está instalado, la API devuelve `501 Not Implemented`.
|
||||
- El nivel de calidad `fast` usa un modelo más ligero para un procesamiento más rápido; `best` usa un modelo más preciso a costa de la velocidad.
|
||||
- El ajuste de idioma `auto` intenta detectar el idioma del documento automáticamente.
|
||||
- Puedes seleccionar páginas concretas mediante rangos (`"1-3"`), listas separadas por comas (`"1,3,5"`) o `"all"` para todas las páginas.
|
||||
- Para los PDF que ya contienen texto seleccionable, considera usar la herramienta más rápida [PDF a texto](./pdf-to-text) en su lugar.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Reordena las páginas de un PDF con un orden de páginas explícito."
|
||||
i18n_source_hash: e961fc895b4b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d8a167869ddb
|
||||
---
|
||||
|
||||
# Organizar PDF {#organize-pdf}
|
||||
|
||||
Reordena las páginas de un PDF especificando la secuencia de páginas deseada.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/organize-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| order | string | Sí | - | Orden de páginas deseado en sintaxis qpdf, p. ej. `"3,1,2,5-z"` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/organize-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"order": "3,1,2,5-z"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2450000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Los rangos de páginas usan la sintaxis de qpdf: `3,1,2` reordena las tres primeras páginas y `5-z` añade las páginas 5 hasta la última.
|
||||
- Las páginas se pueden duplicar enumerándolas más de una vez (p. ej. `"1,1,2,3"` duplica la página 1).
|
||||
- Las páginas no incluidas en la cadena de orden se omiten de la salida.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "Lee y escribe los metadatos de un documento PDF."
|
||||
i18n_source_hash: b2eaebf7467f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: efe7229a5ae8
|
||||
---
|
||||
|
||||
# Metadatos de PDF {#pdf-metadata}
|
||||
|
||||
Lee y actualiza los campos de metadatos de un documento PDF, como el título, el autor, el asunto y las palabras clave. Cuando no se proporciona ninguna configuración, se devuelven los metadatos existentes sin modificarlos.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-metadata`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings` opcional.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| title | string | No | - | Título del documento (máximo 500 caracteres) |
|
||||
| author | string | No | - | Autor del documento (máximo 500 caracteres) |
|
||||
| subject | string | No | - | Asunto del documento (máximo 500 caracteres) |
|
||||
| keywords | string | No | - | Palabras clave del documento (máximo 500 caracteres) |
|
||||
|
||||
Todos los parámetros son opcionales. Los campos omitidos se dejan sin cambios.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-metadata \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@report.pdf" \
|
||||
-F 'settings={"title": "Q2 Report", "author": "Finance Team"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/report.pdf",
|
||||
"originalSize": 245000,
|
||||
"processedSize": 245200,
|
||||
"metadata": {
|
||||
"title": "Q2 Report",
|
||||
"author": "Finance Team",
|
||||
"subject": "",
|
||||
"keywords": ""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceptado: `.pdf`.
|
||||
- Esta es una herramienta rápida (síncrona) que devuelve el resultado directamente.
|
||||
- El campo `metadata` de la respuesta contiene los metadatos resultantes tras cualquier actualización.
|
||||
- Para leer los metadatos sin modificarlos, omite el campo `settings` o envía un objeto vacío.
|
||||
- Cada campo de metadatos está limitado a 500 caracteres.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Añade números de página a todas las páginas de un PDF."
|
||||
i18n_source_hash: 58342d6ac8d2
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8b27258ccd52
|
||||
---
|
||||
|
||||
# Números de página de PDF {#pdf-page-numbers}
|
||||
|
||||
Añade números de página con el formato «Página N de M» a todas las páginas de un PDF.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-page-numbers`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| position | string | No | `"bc"` | Ubicación del número de página: `bl`, `bc`, `br`, `tl`, `tc`, `tr` |
|
||||
| fontSize | integer | No | `10` | Tamaño de fuente en puntos (6-24) |
|
||||
|
||||
### Valores de posición {#position-values}
|
||||
|
||||
- `tl` arriba a la izquierda, `tc` arriba al centro, `tr` arriba a la derecha
|
||||
- `bl` abajo a la izquierda, `bc` abajo al centro, `br` abajo a la derecha
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-page-numbers \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"position": "bc", "fontSize": 12}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2470000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Los números de página se muestran con el formato «Página 1 de 10».
|
||||
- Los números se añaden a todas las páginas, incluidas las páginas de título o portada existentes.
|
||||
- La posición predeterminada `"bc"` coloca los números en el centro inferior de cada página.
|
||||
@@ -0,0 +1,133 @@
|
||||
---
|
||||
description: "Convierte las páginas de un PDF en imágenes de alta calidad."
|
||||
i18n_source_hash: 1c36be5dadb8
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 769618c3235a
|
||||
---
|
||||
|
||||
# PDF a imagen {#pdf-to-image}
|
||||
|
||||
Convierte las páginas de un PDF en imágenes rasterizadas de alta calidad. Admite selección de páginas, varios formatos de salida, control de DPI y modos de color. Incluye subrutas de información y vista previa para inspeccionar los PDF antes de la conversión.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-image`
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | No | `"png"` | Formato de salida: `png`, `jpg`, `webp`, `avif`, `tiff`, `gif`, `heic`, `heif`, `jxl` |
|
||||
| dpi | number | No | 150 | Resolución de renderizado (36 a 2400). Un DPI más alto produce imágenes más grandes y detalladas. |
|
||||
| quality | number | No | 85 | Calidad de salida para formatos con pérdida (1 a 100) |
|
||||
| colorMode | string | No | `"color"` | Modo de color: `color`, `grayscale`, `bw` (umbral de blanco y negro) |
|
||||
| pages | string | No | `"all"` | Selección de páginas: `all`, página única (`3`), rango (`1-5`) o separadas por comas (`1,3,5-8`) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-image \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"format":"png","dpi":300,"pages":"1-3","colorMode":"color"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"pageCount": 10,
|
||||
"selectedPages": [1, 2, 3],
|
||||
"format": "png",
|
||||
"pages": [
|
||||
{
|
||||
"page": 1,
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/page-1.png",
|
||||
"size": 234567
|
||||
},
|
||||
{
|
||||
"page": 2,
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/page-2.png",
|
||||
"size": 198765
|
||||
},
|
||||
{
|
||||
"page": 3,
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/page-3.png",
|
||||
"size": 210456
|
||||
}
|
||||
],
|
||||
"zipUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/pdf-pages.zip",
|
||||
"zipSize": 612345
|
||||
}
|
||||
```
|
||||
|
||||
## Subruta de información {#info-sub-route}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-image/info`
|
||||
|
||||
Devuelve el número de páginas de un PDF sin renderizar ninguna página.
|
||||
|
||||
### Solicitud de información {#info-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-image/info \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
### Respuesta de información {#info-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"pageCount": 10
|
||||
}
|
||||
```
|
||||
|
||||
## Subruta de vista previa {#preview-sub-route}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-image/preview`
|
||||
|
||||
Devuelve miniaturas JPEG de baja resolución de todas las páginas como URL de datos en base64. Útil para crear una interfaz de selección de páginas.
|
||||
|
||||
### Solicitud de vista previa {#preview-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-image/preview \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
### Respuesta de vista previa {#preview-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"pageCount": 10,
|
||||
"thumbnails": [
|
||||
{
|
||||
"page": 1,
|
||||
"dataUrl": "data:image/jpeg;base64,/9j/4AAQ...",
|
||||
"width": 300,
|
||||
"height": 424
|
||||
},
|
||||
{
|
||||
"page": 2,
|
||||
"dataUrl": "data:image/jpeg;base64,/9j/4AAQ...",
|
||||
"width": 300,
|
||||
"height": 424
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Usa MuPDF para el renderizado de PDF, proporcionando una salida de alta fidelidad con un renderizado correcto de fuentes y gráficos vectoriales.
|
||||
- Los PDF protegidos con contraseña no son compatibles y devolverán un error 400.
|
||||
- El parámetro `pages` admite una sintaxis flexible:
|
||||
- `"all"` o `""` - todas las páginas
|
||||
- `"3"` - página única
|
||||
- `"1-5"` - rango de páginas (inclusivo)
|
||||
- `"1,3,5-8"` - páginas individuales y rangos combinados
|
||||
- Los números de página empiezan en 1. Especificar páginas más allá de la longitud del documento devuelve un error 400.
|
||||
- El endpoint principal siempre genera tanto descargas de páginas individuales como un ZIP que contiene todas las páginas seleccionadas.
|
||||
- El endpoint de vista previa renderiza a 72 DPI y escala a 300px de ancho para generar miniaturas rápidamente. Las miniaturas son JPEG con un 60% de calidad.
|
||||
- El endpoint de vista previa respeta la configuración del servidor `MAX_PDF_PAGES`, limitando cuántas miniaturas se generan.
|
||||
- En documentos grandes con un DPI alto, el tiempo de procesamiento aumenta proporcionalmente. Considera usar un DPI más bajo (150) para uso web y un DPI más alto (300-600) para impresión.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Extrae texto sin formato de un PDF."
|
||||
i18n_source_hash: 15a7bc1cdf8f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 89988dd528d7
|
||||
---
|
||||
|
||||
# PDF a texto {#pdf-to-text}
|
||||
|
||||
Extrae todo el texto legible sin formato de un documento PDF a un archivo de texto.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-text`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta herramienta no tiene parámetros configurables. Sube un PDF y se extraerá su contenido de texto.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-text \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@report.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/report.txt",
|
||||
"originalSize": 520000,
|
||||
"processedSize": 14300,
|
||||
"chars": 14300
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceptado: `.pdf`.
|
||||
- Esta es una herramienta rápida (síncrona) que devuelve el resultado directamente.
|
||||
- El campo `chars` de la respuesta indica el número de caracteres extraídos.
|
||||
- Solo se extrae el texto incrustado digitalmente. Para documentos escaneados o PDF basados en imágenes, usa la herramienta [OCR de PDF](./ocr-pdf) en su lugar.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Convierte un PDF en un documento de Word (DOCX)."
|
||||
i18n_source_hash: be41b6b49f84
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 71653210a6c5
|
||||
---
|
||||
|
||||
# PDF a Word {#pdf-to-word}
|
||||
|
||||
Convierte un PDF basado en texto en un documento de Word (DOCX). Ideal para PDF con texto seleccionable; las páginas escaneadas necesitarán OCR primero.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-word`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta herramienta no tiene parámetros configurables. Sube un PDF y se convertirá a DOCX.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-word \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@report.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
Devuelve `202 Accepted`. Sigue el progreso mediante SSE en `/api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceptado: `.pdf`.
|
||||
- Funciona mejor con PDF basados en texto. Las páginas escaneadas o solo de imagen producirán una salida vacía o mínima; usa [OCR de PDF](./ocr-pdf) para añadir primero una capa de texto.
|
||||
- La conversión la gestiona LibreOffice ejecutándose sin interfaz gráfica en el servidor.
|
||||
- Los diseños complejos (varias columnas, elementos superpuestos) pueden no convertirse a la perfección.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Convierte un PDF al formato de archivado PDF/A-2 para su conservación a largo plazo."
|
||||
i18n_source_hash: 4c6bf7a12e84
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 76fc2834a22d
|
||||
---
|
||||
|
||||
# Convertir a PDF/A {#pdf-a-convert}
|
||||
|
||||
Convierte un PDF al formato de archivado PDF/A-2, adecuado para la conservación a largo plazo y el cumplimiento normativo.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdfa-convert`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF. No se requiere un campo `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta herramienta no tiene parámetros de configuración. Sube el archivo PDF directamente.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdfa-convert \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2600000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- La salida cumple con el estándar PDF/A-2.
|
||||
- PDF/A incrusta todas las fuentes y prohíbe las referencias externas, por lo que el archivo de salida puede ser más grande que el original.
|
||||
- El cifrado y JavaScript se eliminan durante la conversión, ya que no están permitidos por el estándar PDF/A.
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
description: "Añade protección con contraseña mediante cifrado AES-256 a un PDF."
|
||||
i18n_source_hash: 869cfbc739ef
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0850252ddf52
|
||||
---
|
||||
|
||||
# Proteger PDF {#protect-pdf}
|
||||
|
||||
Añade protección con contraseña a un PDF mediante cifrado AES-256.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/protect-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| userPassword | string | Sí | - | Contraseña necesaria para abrir el PDF (1-256 caracteres) |
|
||||
| ownerPassword | string | No | Igual que `userPassword` | Contraseña de propietario para los permisos (1-256 caracteres) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/protect-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"userPassword": "s3cret", "ownerPassword": "0wn3r"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2500000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- El cifrado usa AES-256.
|
||||
- Si se omite `ownerPassword`, su valor predeterminado es el mismo que `userPassword`.
|
||||
- Las contraseñas se ocultan en los registros de auditoría.
|
||||
- El PDF cifrado requiere la contraseña de usuario para abrirse y la contraseña de propietario (si es diferente) para tener todos los permisos.
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
description: "Elimina de forma permanente apariciones de texto de un PDF (redacción verdadera verificada)."
|
||||
i18n_source_hash: 296ad2a701b2
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 35213abcef88
|
||||
---
|
||||
|
||||
# Redactar PDF {#redact-pdf}
|
||||
|
||||
Elimina de forma permanente las apariciones de texto especificadas de un PDF mediante redacción verdadera verificada. El texto redactado se elimina por completo del archivo, no solo se cubre con un recuadro negro.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/redact-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| terms | string[] | Sí | - | Cadenas de texto a redactar (1-50 términos, cada uno de hasta 200 caracteres) |
|
||||
| caseSensitive | boolean | No | `false` | Si la coincidencia distingue entre mayúsculas y minúsculas |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/redact-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@contract.pdf" \
|
||||
-F 'settings={"terms": ["John Doe", "555-0123"], "caseSensitive": false}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/contract.pdf",
|
||||
"originalSize": 245000,
|
||||
"processedSize": 243000,
|
||||
"found": 7
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceptado: `.pdf`.
|
||||
- Esta es una herramienta rápida (síncrona) que devuelve el resultado directamente.
|
||||
- Esto realiza una redacción verdadera: el texto coincidente se elimina del flujo de contenido del PDF, no solo se oculta visualmente.
|
||||
- El campo `found` de la respuesta indica cuántas apariciones se redactaron.
|
||||
- Puedes redactar hasta 50 términos en una sola solicitud.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Elimina páginas específicas de un PDF."
|
||||
i18n_source_hash: 003e460a047c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 02e4c8b71d7a
|
||||
---
|
||||
|
||||
# Eliminar páginas {#remove-pages}
|
||||
|
||||
Elimina páginas específicas de un PDF, manteniendo intactas todas las páginas restantes.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/remove-pages`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| pages | string | Sí | - | Rango de páginas a eliminar en sintaxis qpdf, p. ej. `"3,5-7"` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/remove-pages \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"pages": "3,5-7"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 1800000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- No puedes eliminar todas las páginas de un documento; debe quedar al menos una página.
|
||||
- Los rangos de páginas usan la sintaxis de qpdf: `3` para una sola página, `5-7` para un rango y comas para combinar (p. ej. `1,3,5-7`).
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Intenta reparar un PDF dañado o corrupto."
|
||||
i18n_source_hash: 864073a2f09f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 5fbb898e2e48
|
||||
---
|
||||
|
||||
# Reparar PDF {#repair-pdf}
|
||||
|
||||
Intenta reparar un PDF dañado o corrupto reconstruyendo su estructura interna.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/repair-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF. No se requiere un campo `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta herramienta no tiene parámetros de configuración. Sube el archivo PDF dañado directamente.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/repair-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@damaged.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/damaged.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2400000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- La validación estructural se omite en la entrada para permitir el paso de archivos con formato incorrecto.
|
||||
- La reparación se hace en la medida de lo posible; los archivos gravemente corruptos pueden no recuperarse por completo.
|
||||
- El PDF reparado puede diferir ligeramente en tamaño del original debido a la reconstrucción de las tablas de referencias cruzadas.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Gira las páginas de un PDF 90, 180 o 270 grados."
|
||||
i18n_source_hash: cc2acd091427
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 738f860fb4f7
|
||||
---
|
||||
|
||||
# Girar PDF {#rotate-pdf}
|
||||
|
||||
Gira todas las páginas de un PDF, o las seleccionadas, en un ángulo determinado.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/rotate-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| angle | integer | No | `90` | Ángulo de rotación: `90`, `180` o `270` |
|
||||
| range | string | No | `"1-z"` | Rango de páginas en sintaxis qpdf, p. ej. `"1-5,8"` (`"1-z"` = todas las páginas) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/rotate-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"angle": 90, "range": "1-3"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2450000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- La rotación es en el sentido de las agujas del reloj.
|
||||
- Los rangos de páginas usan la sintaxis de qpdf: `1-5` para las páginas 1 a 5, `z` para la última página y comas para combinar rangos.
|
||||
- El rango predeterminado `"1-z"` gira todas las páginas.
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
description: "Estampa imágenes de firma subidas en un PDF mediante ubicaciones de página normalizadas."
|
||||
i18n_source_hash: c28f78c2e7fd
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d08f122592a0
|
||||
---
|
||||
|
||||
# Firmar PDF {#sign-pdf}
|
||||
|
||||
Estampa una o varias imágenes PNG de firma subidas en cualquier página de un PDF. Esta ruta usa un contrato multipart personalizado porque necesita el PDF, una o varias imágenes de firma y las coordenadas de ubicación.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/sign-pdf`
|
||||
|
||||
Acepta datos de formulario multipart. El PDF se envía como `file`; las firmas se envían como `sig0`, `sig1`, y así sucesivamente; las ubicaciones se envían en un campo JSON `placements`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Sí | - | Archivo PDF a firmar |
|
||||
| sig0 | file | Sí | - | Primera imagen de firma. Las imágenes adicionales usan `sig1`, `sig2`, y así sucesivamente |
|
||||
| placements | JSON string | Sí | - | Array de objetos de ubicación: `{ "sig": 0, "page": 0, "x": 0.2, "y": 0.7, "w": 0.25, "h": 0.08 }` |
|
||||
| clientJobId | string | No | - | UUID opcional para el seguimiento del progreso mediante SSE |
|
||||
| fileId | string | No | - | ID opcional de la biblioteca de archivos para guardar el resultado firmado como una nueva versión |
|
||||
|
||||
## Coordenadas de ubicación {#placement-coordinates}
|
||||
|
||||
| Campo | Tipo | Descripción |
|
||||
|-------|------|-------------|
|
||||
| sig | integer | Índice de la imagen de firma. `0` se asigna a `sig0` |
|
||||
| page | integer | Índice de página del PDF basado en cero |
|
||||
| x | number | Posición izquierda como fracción de la página |
|
||||
| y | number | Posición superior como fracción de la página |
|
||||
| w | number | Ancho de la firma como fracción de la página |
|
||||
| h | number | Alto de la firma como fracción de la página |
|
||||
|
||||
Las coordenadas usan un origen en la esquina superior izquierda. Los valores pueden sobresalir ligeramente del borde de la página; el renderizador de PDF recorta el sello final a la página.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/sign-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@contract.pdf" \
|
||||
-F "sig0=@signature.png" \
|
||||
-F 'placements=[{"sig":0,"page":0,"x":0.64,"y":0.82,"w":0.22,"h":0.08}]'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/contract_signed.pdf",
|
||||
"previewUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/preview.png",
|
||||
"originalSize": 245000,
|
||||
"processedSize": 249000
|
||||
}
|
||||
```
|
||||
|
||||
Si la solicitud no puede completarse dentro de la ventana de espera síncrona, la API devuelve:
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
Conéctate a `/api/v1/jobs/<jobId>/progress` y descarga el resultado cuando el trabajo se complete.
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada PDF aceptado: `.pdf`.
|
||||
- Las imágenes de firma deben ser archivos de imagen válidos, normalmente PNG con transparencia.
|
||||
- Se aceptan hasta 100 imágenes de firma y 100 ubicaciones.
|
||||
- `sign-pdf` es una ruta personalizada y no usa el campo JSON `settings` estándar de la herramienta.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "Extrae páginas o divide un PDF en partes."
|
||||
i18n_source_hash: 5c8d8041d219
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c0ffa44dbe7b
|
||||
---
|
||||
|
||||
# Dividir PDF {#split-pdf}
|
||||
|
||||
Extrae un rango de páginas a un nuevo PDF, o divide un documento en fragmentos de N páginas.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/split-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | No | `"range"` | Modo de división: `range` o `every` |
|
||||
| range | string | Cuando el modo es `range` | - | Rango de páginas en sintaxis qpdf, p. ej. `"1-5,8,10-z"` |
|
||||
| everyN | integer | Cuando el modo es `every` | - | Dividir en fragmentos de N páginas (1-500) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
Extraer páginas específicas:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/split-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"mode": "range", "range": "1-5,8"}'
|
||||
```
|
||||
|
||||
Dividir en fragmentos de 10 páginas:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/split-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"mode": "every", "everyN": 10}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 980000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- En el modo `range`, se devuelve un único PDF que contiene las páginas seleccionadas.
|
||||
- En el modo `every`, el resultado es un archivo ZIP que contiene las partes individuales.
|
||||
- Los rangos de páginas usan la sintaxis de qpdf: `1-5` para las páginas 1 a 5, `z` para la última página y comas para combinar rangos (p. ej. `1-3,7,10-z`).
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Elimina la protección con contraseña de un PDF."
|
||||
i18n_source_hash: 14f5165d185c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c7840a025b61
|
||||
---
|
||||
|
||||
# Desbloquear PDF {#unlock-pdf}
|
||||
|
||||
Elimina la protección con contraseña de un PDF cifrado proporcionando la contraseña correcta.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/unlock-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| password | string | Sí | - | Contraseña para descifrar el PDF (1-256 caracteres) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/unlock-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"password": "s3cret"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2500000,
|
||||
"processedSize": 2450000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Se debe proporcionar la contraseña correcta; una contraseña incorrecta devuelve un error 400.
|
||||
- Tanto la contraseña de usuario como la de propietario funcionarán para el descifrado.
|
||||
- Las contraseñas se ocultan en los registros de auditoría.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
description: "Añade una marca de agua de texto a todas las páginas de un PDF."
|
||||
i18n_source_hash: f1f7d8912fbd
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 74862b9bda1c
|
||||
---
|
||||
|
||||
# Marca de agua en PDF {#watermark-pdf}
|
||||
|
||||
Estampa una marca de agua de texto en todas las páginas de un PDF con posición, tamaño, opacidad y rotación configurables.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/watermark-pdf`
|
||||
|
||||
Acepta datos de formulario multipart con un archivo PDF y un campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Sí | - | Texto de la marca de agua (1-200 caracteres) |
|
||||
| position | string | No | `"c"` | Ubicación en la página: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
|
||||
| fontSize | integer | No | `48` | Tamaño de fuente en puntos (6-72) |
|
||||
| opacity | number | No | `0.3` | Opacidad de la marca de agua (0.05-1) |
|
||||
| rotation | number | No | `45` | Ángulo de rotación en grados (-180 a 180) |
|
||||
|
||||
### Valores de posición {#position-values}
|
||||
|
||||
- `tl` arriba a la izquierda, `tc` arriba al centro, `tr` arriba a la derecha
|
||||
- `l` centro a la izquierda, `c` centro, `r` centro a la derecha
|
||||
- `bl` abajo a la izquierda, `bc` abajo al centro, `br` abajo a la derecha
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/watermark-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"text": "CONFIDENTIAL", "position": "c", "opacity": 0.2, "rotation": 45}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2500000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- La marca de agua se muestra como una superposición de texto en cada página.
|
||||
- El mismo texto, posición y estilo de marca de agua se aplican de manera uniforme a todas las páginas.
|
||||
- Usa valores de opacidad más bajos (0.1-0.3) para marcas de agua sutiles que no oculten el contenido.
|
||||
Reference in New Issue
Block a user