Dividir PDF
Dividir PDF es una API que separa un PDF en varios, por las páginas o rangos que le indiques. Perfecto para sacar capítulos, anexos o páginas sueltas desde n8n, Make o Zapier, sin montar servidores.
Cómo funciona
Le mandas un PDF y una lista de páginas o rangos (por ejemplo 1-3,5,7-9) y te devuelve un PDF por cada rango, todos dentro de la misma respuesta. No guarda nada: se genera al momento.
Como el resultado son varios archivos a la vez, la respuesta es siempre un JSON con un PDF en base64 por cada rango pedido (nunca un único PDF binario de golpe, aunque le mandes el PDF de entrada "a pelo").
Lo único que necesitas
- Tu API key. La creas en tu panel con "+ Crear llave". Se muestra una sola vez, así que cópiala y guárdala.
- En tu plataforma de automatización, un paso de tipo "HTTP Request" / "Hacer una petición HTTP" (lo tienen n8n, Make, Zapier, Pipedream…).
- Saber qué páginas quieres sacar (ej.
1-3,5,7-9).
Cómo usarlo en n8n (paso a paso)
Le envías tu PDF tal cual (como archivo binario, no como texto) y te devuelve los trozos. En el nodo HTTP Request:
- Method:
POST - URL:
https://api.cofferdock.com/pdf-split - Send Query Parameters: actívalo y añade
ranges=1-3,5,7-9 - Send Headers: actívalo y añade dos:
x-api-key= tu llave, yContent-Type=application/pdf - Send Body: actívalo → elige la opción para mandar un archivo binario (en n8n: "n8n Binary File", seleccionando la propiedad binaria que trae tu PDF de un paso anterior, normalmente
data)
La respuesta es un JSON con un PDF en base64 por cada rango. Para guardarlos como archivos sueltos necesitas un paso extra que decodifique cada base64 (por ejemplo, un nodo Code con Buffer.from(item.pdf, 'base64') por cada elemento de files).
En Make (módulo HTTP → Make a request): mismo método y URL, en Query String añade ranges, en Headers las dos cabeceras, Body type: el archivo PDF como dato binario (Make lo ofrece al conectar un módulo que ya trae un archivo, como Google Drive o email).
En resumen: POST a …/pdf-split, ranges como Query Parameter, cabeceras x-api-key y Content-Type: application/pdf, el PDF como Body binario. La respuesta trae un PDF en base64 por cada rango.
Opciones (en Query Parameters)
| Opción | Por defecto | Para qué sirve |
|---|---|---|
ranges | - | Obligatorio. Páginas o rangos separados por comas, 1 = primera página. Ej.: 1-3,5,7-9 saca 3 PDFs: páginas 1 a 3, la página 5 sola, y páginas 7 a 9. |
Resumen de la API
- Endpoint:
POST https://api.cofferdock.com/pdf-split - Auth: cabecera
x-api-key: TU_LLAVE. - Entrada: el PDF va en el cuerpo como
application/pdf(a pelo, conrangesen Query Parameters) o comoapplication/jsoncon{ "file": "<base64>", "ranges": "…" }. - Salida: SIEMPRE JSON:
{ files: [{ range, pages, pdf, size_bytes }, …] }(no hay modo binario directo; el resultado es un conjunto de archivos). - Límites: el PDF de entrada admite hasta 20 MB (50 MB en planes Business/Scale) en modo
application/pdf; en JSON con base64, unos 4 MB reales. 30 peticiones/min por IP. 1 división = 1 crédito, sin importar cuántos rangos pidas.
Opciones
| Opción | Por defecto | Descripción |
|---|---|---|
ranges | - | Obligatorio. Ej.: 1-3,5,7-9 (1-indexado, inclusive). Un token inválido o fuera del número real de páginas del documento → 400. |
file | - | Solo en modo JSON: el PDF en base64. |
Ejemplos
curl (PDF a pelo, guarda la respuesta JSON):
curl -X POST "https://api.cofferdock.com/pdf-split?ranges=1-3,5,7-9" \
-H "x-api-key: TU_LLAVE" \
-H "Content-Type: application/pdf" \
--data-binary @documento.pdf \
-o resultado.json
JavaScript (Node 18+, guarda cada trozo como fichero):
const fs = require('fs');
const r = await fetch('https://api.cofferdock.com/pdf-split?ranges=1-3,5,7-9', {
method: 'POST',
headers: { 'x-api-key': 'TU_LLAVE', 'Content-Type': 'application/pdf' },
body: fs.readFileSync('documento.pdf'),
});
const j = await r.json();
for (const f of j.files) fs.writeFileSync(`parte-${f.range}.pdf`, Buffer.from(f.pdf, 'base64'));
Python:
import requests, base64
r = requests.post(
'https://api.cofferdock.com/pdf-split',
params={'ranges': '1-3,5,7-9'},
headers={'x-api-key': 'TU_LLAVE', 'Content-Type': 'application/pdf'},
data=open('documento.pdf', 'rb').read(),
)
for f in r.json()['files']:
open(f'parte-{f["range"]}.pdf', 'wb').write(base64.b64decode(f['pdf']))
Forma de la respuesta
{ "success": true,
"files": [
{ "range": "1-3", "pages": [1,2,3], "pdf": "JVBERi0xLjQ…", "size_bytes": 12044 },
{ "range": "5", "pages": [5], "pdf": "JVBERi0xLjQ…", "size_bytes": 4021 },
{ "range": "7-9", "pages": [7,8,9], "pdf": "JVBERi0xLjQ…", "size_bytes": 9112 }
],
"meta": { "source_pages": 10, "files_created": 3, "used": 13, "remaining": 487 } }
Lo que recibes
Un JSON con un PDF en base64 por cada rango que pediste, más el número total de páginas del documento original.