@dragon708/docmind-pdf
v2.3.0
Published
Basic PDF text and metadata for DocMind (pdf-parse). Per-page text, outline, links, and annotations via pdfjs-dist. AcroForm listing, fill, and flatten via pdf-lib. Optional OCR pipeline via @dragon708/docmind-pdf/pipeline.
Readme
@dragon708/docmind-pdf
PDF para DocMind: texto nativo y metadatos (pdf-parse), texto y estructura con PDF.js (por página, outline, enlaces, anotaciones), formularios AcroForm con pdf-lib (listar, rellenar, aplanar), manipulación básica (insertar/paginar/partir/merge) y extractStructuredDataFromPdf, que construye StructuredDocumentResult. Opcionalmente, pipeline OCR sobre rasters en submódulo @dragon708/docmind-pdf/pipeline (integración con @dragon708/docmind-ocr).
Requisito: Node ≥ 20 (motores pdfjs / entorno).
Instalación
npm install @dragon708/docmind-pdfDepende de @dragon708/docmind-ocr para el pipeline raster. No uses este paquete en bundles browser estándar salvo que configures pdfjs/workers explícitamente; en apps web suele procesarse PDF en servidor (@dragon708/docmind-node).
Exportaciones del entry principal (@dragon708/docmind-pdf)
Análisis y texto
import {
analyzePdf,
extractTextFromPdf,
extractPdfMetadata,
getPdfPageCount,
type PdfAnalyzeOptions,
type PdfAnalysisResult,
} from "@dragon708/docmind-pdf";
const analysis = await analyzePdf(buffer, { ocr: "auto" /* … */ });
const meta = await extractPdfMetadata(buffer);
const pages = await getPdfPageCount(buffer);Documento estructurado
import {
extractStructuredDataFromPdf,
type ExtractStructuredDataFromPdfOptions,
type ExtractStructuredDataFromPdfIncludeFlags,
} from "@dragon708/docmind-pdf";
const structured = await extractStructuredDataFromPdf(buffer, {
include: { outline: true, links: true, annotations: true },
ocr: "auto",
});Texto por página (PDF.js)
import {
extractPdfTextByPage,
extractPdfPages,
type ExtractPdfByPageOptions,
} from "@dragon708/docmind-pdf";
const byPage = await extractPdfTextByPage(buffer, { maxPages: 50 });
const pageBodies = await extractPdfPages(buffer, options);Outline, enlaces, anotaciones
import {
extractPdfOutline,
extractPdfLinks,
extractPdfAnnotations,
} from "@dragon708/docmind-pdf";
const outline = await extractPdfOutline(buffer);
const links = await extractPdfLinks(buffer);
const annotations = await extractPdfAnnotations(buffer);Formularios (pdf-lib)
import {
getPdfFormFields,
fillPdfForm,
flattenPdfForm,
type PdfFormFillValues,
} from "@dragon708/docmind-pdf";
const fields = await getPdfFormFields(buffer);
await fillPdfForm(buffer, { campo: "valor" } as PdfFormFillValues);
await flattenPdfForm(buffer);Manipulación
import {
mergePdf,
splitPdf,
insertPdfPages,
removePdfPages,
type SplitPdfOptions,
type InsertPdfPagesOptions,
} from "@dragon708/docmind-pdf";Estrategia OCR del pipeline PDF
import type { PdfOcrPipelineStrategy } from "@dragon708/docmind-pdf";
// "native-first" | "ocr-only" | "hybrid"Submódulo @dragon708/docmind-pdf/pipeline
import { runPdfOcrPipeline } from "@dragon708/docmind-pdf/pipeline";
// Rasteriza / elige estrategia nativa vs OCR según opcionesÚsalo cuando la API pública de Node (analyzeFile, runOcr) no baste y necesites control fino del pipeline en servidor.
Tipos y opciones frecuentes
PdfBinaryInput: buffer + nombre/MIME opcionales.PdfAnalyzeOptions:ocr,maxPages,ocrStrategy, idiomas, señales de abort, etc.ExtractPdfByPageOptions,ExtractPdfStructureOptions: flags de inclusión para outline/links/anotaciones.- Resultados tipados:
PdfOutlineResult,PdfLinksResult,PdfAnnotationsResult,GetPdfFormFieldsResult, etc.
Integración con Markdown
@dragon708/docmind-markdown convierte PDF a Markdown en Node (con fallback estructurado cuando aplica); ese camino se alimenta del análisis PDF y del texto/layout expuesto aquí y en el paquete markdown. Este paquete no reexporta extractMarkdown.
Errores y PDF corruptos
PDF inválidos o cifrados pueden fallar con errores de pdf-parse/pdf-lib/pdfjs. Captura y muestra message; DocMind a veces envuelve en DocMindError aguas arriba.
Paquetes relacionados
| Paquete | Rol |
|---------|-----|
| @dragon708/docmind-node | API pública analyzeFile / extractStructuredData PDF |
| @dragon708/docmind-ocr | Tesseract en pipeline |
| @dragon708/docmind-markdown | PDF → Markdown en Node |
| @dragon708/docmind-shared | Tipos |
Licencia
MIT (monorepo DocMind).
