Back to Nodes

PDF Box

Last updated Nov 11, 2025

n8n community node para extracción de texto e imágenes de PDFs usando Apache PDFBox

5 Weekly Downloads
602 Monthly Downloads

Included Nodes

PDF Box

Description

n8n-nodes-pdfbox

Nodo comunitario de n8n para extracción de texto e imágenes desde archivos PDF usando Apache PDFBox.

npm version
License: MIT

¿Por qué este nodo?

El nodo nativo "Extract from File" de n8n usa pdfjs-dist que tiene un bug crítico:

  • ❌ Crash (SIGILL exit 132) en PDFs >= 140 KB
  • ❌ Afecta ARM64 (Raspberry Pi) y x86_64
  • ❌ Bug en upstream Mozilla PDF.js 5.x

Este nodo usa Apache PDFBox (estándar enterprise):

  • ✅ Sin crashes en PDFs grandes
  • ✅ Funciona en todas las arquitecturas
  • ✅ Extracción robusta de texto e imágenes

Local vs Cloud: ¿Por qué PDFBox?

Procesamiento 100% Local

  • ✅ Privacidad total: Tus PDFs nunca salen del servidor
  • ✅ Gratis: Sin API keys, sin límites de uso, sin costos por volumen
  • ✅ Offline: Funciona sin conexión a Internet
  • ✅ Sin vendor lock-in: No dependes de servicios externos
  • ✅ GDPR compliant: Ideal para datos sensibles (facturas, contratos, documentos legales)

Alternativas Cloud

  • ❌ Requieren API key de pago
  • ❌ Envían documentos a servidores externos
  • ❌ Costos variables según volumen
  • ❌ Dependencia de disponibilidad del servicio
  • ✅ Ofrecen IA y features avanzados (OCR multilenguaje, firmas digitales, clasificación)

¿Cuándo usar cada uno?

  • n8n-nodes-pdfbox: Automatizaciones con PDFs confidenciales, alto volumen sin costos, infraestructura self-hosted
  • Servicios cloud: Necesitas IA, OCR avanzado, o no tienes restricciones de privacidad

Operaciones

1. Extraer Texto

Extrae todo el texto del PDF con estadísticas opcionales (líneas, palabras, caracteres).

2. Extraer Imágenes

Extrae todas las imágenes del PDF como archivos binarios separados (PNG o JPEG).

Instalación

1. Instalar el nodo desde GitHub

Opción A: Desde n8n UI

Settings > Community Nodes > Install
Ingresar: pablopescador/n8n-nodes-pdfbox

Opción B: Manualmente en el servidor

# Detener n8n
docker compose -f /home/pablo/n8n/docker-compose.yml stop n8n

# Instalar el nodo
docker exec n8n-n8n-1 npm install -g pablopescador/n8n-nodes-pdfbox

# Reiniciar n8n
docker compose -f /home/pablo/n8n/docker-compose.yml start n8n

Opción C: Instalación local (desarrollo)

cd ~/.n8n/nodes
git clone https://github.com/pablopescador/n8n-nodes-pdfbox.git
cd n8n-nodes-pdfbox
npm install
npm run build

2. Instalar dependencias en el contenedor

Requisito: Java 17+ y Apache PDFBox deben estar en el contenedor n8n.

# Instalar Java 17
docker exec -u root n8n-container apk add --no-cache openjdk17-jre wget

# Crear directorio
docker exec n8n-container mkdir -p /usr/local/lib/pdfbox

# Descargar PDFBox
docker exec n8n-container wget -O /usr/local/lib/pdfbox/pdfbox.jar \
  https://repo1.maven.org/maven2/org/apache/pdfbox/pdfbox-app/3.0.3/pdfbox-app-3.0.3.jar

# Copiar wrapper (desde el directorio del paquete npm)
docker cp node_modules/n8n-nodes-pdfbox/scripts/pdfbox-wrapper.mjs \
  n8n-container:/usr/local/lib/pdfbox/

Uso

Extracción de Texto

  1. Añade el nodo PDF Box a tu workflow
  2. Conecta un nodo que provea datos binarios (ej: HTTP Request, Webhook)
  3. Configura:
    • Operación: Extraer Texto
    • Archivo PDF: data (o nombre de la propiedad binaria)
    • Opciones:
      • Incluir estadísticas: ✅
      • Max Buffer: 10 MB (ajustar para PDFs grandes)

Output:

{
  "text": "Texto completo extraído del PDF...",
  "fileName": "documento.pdf",
  "mimeType": "application/pdf",
  "stats": {
    "lines": 1070,
    "words": 9853,
    "characters": 52525,
    "sizeKB": 51
  },
  "extractedAt": "2025-11-11T22:30:00.000Z"
}

Extracción de Imágenes

  1. Añade el nodo PDF Box a tu workflow
  2. Conecta un nodo que provea datos binarios
  3. Configura:
    • Operación: Extraer Imágenes
    • Archivo PDF: data
    • Opciones:
      • Formato de salida: PNG o JPEG
      • Prefijo: image (personalizable)

Output: Un item por cada imagen extraída, con datos binarios listos para guardar o procesar.

{
  "json": {
    "fileName": "image-1.png",
    "sourceFile": "documento.pdf",
    "extractedAt": "2025-11-11T23:25:00.000Z"
  },
  "binary": {
    "data": {
      "data": "...",
      "mimeType": "image/png",
      "fileName": "image-1.png"
    }
  }
}

Ejemplo de workflow

Texto:

[HTTP Request] → [PDF Box: Extraer Texto] → [AI Agent]
   (descarga)          (extrae texto)         (analiza)

Imágenes:

[Webhook] → [PDF Box: Extraer Imágenes] → [Google Drive]
 (recibe)        (extrae imágenes)          (guarda)

Output

Ver sección "Uso" arriba para ejemplos de output de cada operación.

Desarrollo

# Clonar repositorio
git clone https://github.com/pablopescador/n8n-nodes-pdfbox.git
cd n8n-nodes-pdfbox

# Instalar dependencias
npm install

# Compilar
npm run build

# Lint
npm run lint

Roadmap

Implementado (v0.2.3)

  • ✅ Extracción de texto con estadísticas
  • ✅ Extracción de imágenes (formatos originales: JPG, PNG, TIFF)
  • ✅ Instalación automática desde npm
  • ✅ Wrapper con ruta dinámica del paquete

Planificado

  • ⏳ Merge de múltiples PDFs
  • ⏳ Split de PDFs por páginas
  • ⏳ Añadir marcas de agua (texto/imagen)
  • ⏳ Extracción de metadatos (autor, fecha, propiedades)
  • ⏳ Conversión a PDF/A (archivo de larga duración)
  • ⏳ Optimización/compresión de PDFs

Contribuciones

Pull requests bienvenidos. Para cambios grandes, abre primero un issue para discutir.

Casos de Uso

Automatización de Facturas

[Webhook Email] → [PDF Box: Texto] → [AI: Extract Invoice Data] → [Google Sheets]

Archivo Digital de Documentos

[Google Drive Trigger] → [PDF Box: Imágenes] → [Image Resize] → [Cloud Storage]

Análisis de Contratos

[Dropbox] → [PDF Box: Texto] → [OpenAI] → [Notion Database]

Procesamiento de Formularios

[Upload Form] → [PDF Box: Texto] → [Regex Extract] → [CRM API]

Licencia

MIT © Pablo Pescador

Soporte

Agradecimientos