npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

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

Readme

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

  • 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/