n8n-nodes-pdfbox
v0.2.4
Published
n8n community node para extracción de texto e imágenes de PDFs usando Apache PDFBox
Downloads
598
Maintainers
Readme
n8n-nodes-pdfbox
Nodo comunitario de n8n para extracción de texto e imágenes desde archivos PDF usando Apache PDFBox.
¿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-pdfboxOpció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 n8nOpció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 build2. 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
- Añade el nodo PDF Box a tu workflow
- Conecta un nodo que provea datos binarios (ej: HTTP Request, Webhook)
- 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
- Añade el nodo PDF Box a tu workflow
- Conecta un nodo que provea datos binarios
- 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 lintRoadmap
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
- Issues: https://github.com/pablopescador/n8n-nodes-pdfbox/issues
- Documentación: Ver carpeta
docs/
Agradecimientos
- Apache PDFBox: https://pdfbox.apache.org/
- n8n: https://n8n.io/
