Skip to content

Referencia de API JavaScript

PDF Oxide proporciona bindings WebAssembly para JavaScript y TypeScript. El paquete npm pdf-oxide-wasm funciona tanto en Node.js como en navegadores.

npm install pdf-oxide-wasm

Para la API de Rust, consulte la Rust API Reference. Para la API de Python, consulte la Referencia de API Python. Para detalles de tipos, consulte Types & Enums.


WasmPdfDocument

La clase principal para abrir, extraer, editar y guardar PDFs.

import { WasmPdfDocument } from "pdf-oxide-wasm";

Constructor

new WasmPdfDocument(data)

Cargue un documento PDF desde bytes sin procesar.

Parámetro Tipo Descripción
data Uint8Array El contenido del archivo PDF

Lanza: Error si el PDF es inválido o no puede ser analizado.

const bytes = new Uint8Array(readFileSync("document.pdf"));
const doc = new WasmPdfDocument(bytes);

Núcleo de solo lectura

pageCount() -> number

Obtener el número de páginas del documento.

version() -> Uint8Array

Obtener la versión PDF como [major, minor].

const [major, minor] = doc.version();
console.log(`PDF ${major}.${minor}`);

authenticate(password) -> boolean

Desencriptar un PDF encriptado. Retorna true si la autenticación fue exitosa.

Parámetro Tipo Descripción
password string La cadena de contraseña

hasStructureTree() -> boolean

Verificar si el documento es un PDF etiquetado con un árbol de estructura.


Extracción de texto

extractText(pageIndex) -> string

Extraer texto plano de una sola página.

Parámetro Tipo Descripción
pageIndex number Número de página basado en cero
const text = doc.extractText(0);

extractAllText() -> string

Extraer texto plano de todas las páginas, separado por caracteres de avance de página.

extractChars(pageIndex) -> Array

Extraer caracteres individuales con posicionamiento preciso y metadatos de fuente.

Parámetro Tipo Descripción
pageIndex number Número de página basado en cero

Retorna: Array de objetos con campos:

Campo Tipo Descripción
char string El carácter
bbox {x, y, width, height} Cuadro delimitador
font_name string Nombre de fuente
font_size number Tamaño de fuente en puntos
font_weight string Peso (Normal, Bold, etc.)
is_italic boolean Indicador de cursiva
color {r, g, b} Color RGB (0.0–1.0)
const chars = doc.extractChars(0);
for (const c of chars) {
  console.log(`'${c.char}' at (${c.bbox.x}, ${c.bbox.y})`);
}

extractSpans(pageIndex) -> Array

Extraer spans de texto con estilo y metadatos de fuente.

Parámetro Tipo Descripción
pageIndex number Número de página basado en cero

Retorna: Array de objetos con campos:

Campo Tipo Descripción
text string El contenido de texto
bbox {x, y, width, height} Cuadro delimitador
font_name string Font name
font_size number Tamaño de fuente en puntos
font_weight string Peso (Normal, Bold, etc.)
is_italic boolean Indicador de cursiva
color {r, g, b} Color RGB (0.0–1.0)
const result = doc.extractPageText(0);
console.log(`Page: ${result.pageWidth}x${result.pageHeight} pt`);
for (const span of result.spans) {
  console.log(`'${span.text}' font=${span.fontName} size=${span.fontSize}`);
}
const spans = doc.extractSpans(0);
for (const span of spans) {
  console.log(`"${span.text}" size=${span.fontSize}`);
}

Conversión de formato

toMarkdown(pageIndex, detectHeadings?, includeImages?, includeFormFields?) -> string

Convertir una sola página a Markdown.

Parámetro Tipo Predeterminado Descripción
pageIndex number Número de página basado en cero
detectHeadings boolean true Detectar encabezados por tamaño de fuente
includeImages boolean true Incluir imágenes
includeFormFields boolean true Incluir valores de campos de formulario

toMarkdownAll(detectHeadings?, includeImages?, includeFormFields?) -> string

Convertir todas las páginas a Markdown.

toHtml(pageIndex, preserveLayout?, detectHeadings?, includeFormFields?) -> string

Convertir una sola página a HTML.

Parámetro Tipo Predeterminado Descripción
pageIndex number Número de página basado en cero
preserveLayout boolean false Preservar diseño visual
detectHeadings boolean true Detectar encabezados
includeFormFields boolean true Incluir valores de campos de formulario

toHtmlAll(preserveLayout?, detectHeadings?, includeFormFields?) -> string

Convertir todas las páginas a HTML.

toPlainText(pageIndex) -> string

Convertir una sola página a texto plano.

toPlainTextAll() -> string

Convertir todas las páginas a texto plano.


Búsqueda

search(pattern, caseInsensitive?, literal?, wholeWord?, maxResults?) -> Array

Buscar texto en todas las páginas.

Parámetro Tipo Predeterminado Descripción
pattern string Patrón de búsqueda (cadena o regex)
caseInsensitive boolean false Búsqueda insensible a mayúsculas
literal boolean false Tratar patrón como cadena literal
wholeWord boolean false Coincidir solo palabras completas
maxResults number Máximo de resultados a retornar

Retorna: Array of objects with fields:

Campo Tipo Descripción
page number Número de página
text string Texto coincidente
bbox object Cuadro delimitador
start_index number Índice de inicio en el texto de la página
end_index number Índice final en el texto de la página

searchPage(pageIndex, pattern, caseInsensitive?, literal?, wholeWord?, maxResults?) -> Array

Buscar texto en una sola página.


Información de imágenes

extractImages(pageIndex) -> Array

Obtener metadatos de imágenes de una página.

Campo Tipo Descripción
width number Ancho de imagen en píxeles
height number Alto de imagen en píxeles
color_space string Espacio de color (e.g. DeviceRGB)
bits_per_component number Bits por canal de color
bbox object Posición en la página

extractImageBytes(pageIndex) -> Array

Extraer bytes de imagen sin procesar de una página. Retorna un array de objetos:

Campo Tipo Descripción
width number Ancho de imagen en píxeles
height number Alto de imagen en píxeles
data Uint8Array Bytes de imagen sin procesar
format string Formato de imagen

pageImages(pageIndex) -> Array

Obtener nombres de imágenes y límites para operaciones de posicionamiento.

Campo Tipo Descripción
name string Nombre XObject
bounds number[] [x, y, width, height]
matrix number[] Matriz de transformación [a, b, c, d, e, f]

Estructura del documento

getOutline() -> Array | null

Obtener marcadores del documento / tabla de contenidos. Retorna null si no existe un esquema.

getAnnotations(pageIndex) -> Array

Obtener metadatos de anotaciones (tipo, rectángulo, contenido, etc.) de una página.

extractPaths(pageIndex) -> Array

Obtener trazados vectoriales (líneas, curvas, formas) de una página.

pageLabels() -> Array

Obtener rangos de etiquetas de página. Retorna un array de objetos:

Campo Tipo Descripción
start_page number Primera página en este rango
style string Estilo de numeración
prefix string Prefijo de etiqueta
start_value number Número inicial

xmpMetadata() -> object | null

Obtener metadatos XMP. Retorna null si no está presente. Los campos del objeto incluyen:

Campo Tipo Descripción
dc_title string | null Título del documento
dc_creator string[] | null Lista de creadores
dc_description string | null Descripción
xmp_creator_tool string | null Herramienta creadora
xmp_create_date string | null Fecha de creación
xmp_modify_date string | null Fecha de modificación
pdf_producer string | null Productor PDF

Campos de formulario

getFormFields() -> Array

Obtener todos los campos de formulario con nombre, tipo, valor e indicadores.

Campo Tipo Descripción
name string Nombre de campo
field_type string Tipo de campo (text, checkbox, etc.)
value string Valor actual
flags number Indicadores de campo
const fields = doc.getFormFields();
for (const f of fields) {
  console.log(`${f.name} (${f.field_type}) = ${f.value}`);
}

hasXfa() -> boolean

Verificar si el documento contiene formularios XFA.

getFormFieldValue(name) -> any

Obtener un valor de campo de formulario por nombre. Retorna un string, boolean o null dependiendo del tipo de campo.

Parámetro Tipo Descripción
name string Nombre de campo

setFormFieldValue(name, value) -> void

Establecer un valor de campo de formulario por nombre.

Parámetro Tipo Descripción
name string Nombre de campo
value string | boolean Nuevo valor del campo

exportFormData(format?) -> Uint8Array

Exportar datos de formulario como FDF (predeterminado) o XFDF.

Parámetro Tipo Predeterminado Descripción
format string "fdf" Formato de exportación: "fdf" or "xfdf"

Edición

Metadatos

Method Parameters Descripción
setTitle(title) string Establecer título del documento
setAuthor(author) string Establecer autor del documento
setSubject(subject) string Establecer asunto del documento
setKeywords(keywords) string Establecer palabras clave del documento

Rotación de páginas

Method Parameters Descripción
pageRotation(pageIndex) number Obtener rotación actual (0, 90, 180, 270)
setPageRotation(pageIndex, degrees) number, number Establecer rotación absoluta
rotatePage(pageIndex, degrees) number, number Agregar a la rotación actual
rotateAllPages(degrees) number Rotar todas las páginas

Dimensiones de página

Method Parameters Descripción
pageMediaBox(pageIndex) number Obtener MediaBox [llx, lly, urx, ury]
setPageMediaBox(pageIndex, llx, lly, urx, ury) number, ... Establecer MediaBox
pageCropBox(pageIndex) number Obtener CropBox (puede ser null)
setPageCropBox(pageIndex, llx, lly, urx, ury) number, ... Establecer CropBox
cropMargins(left, right, top, bottom) number, ... Recortar todos los márgenes de página

Borrado / Blanqueo

Method Parameters Descripción
eraseRegion(pageIndex, llx, lly, urx, ury) number, ... Borrar una región
eraseRegions(pageIndex, rects) number, Float32Array Borrar múltiples regiones
clearEraseRegions(pageIndex) number Limpiar borrados pendientes

Anotaciones & Redaction

Method Parameters Descripción
flattenPageAnnotations(pageIndex) number Aplanar anotaciones en la página
flattenAllAnnotations() Aplanar todas las anotaciones
applyPageRedactions(pageIndex) number Aplicar redacciones en la página
applyAllRedactions() Aplicar todas las redacciones

Aplanamiento de formularios

Method Parameters Descripción
flattenForms() Aplanar todos los campos de formulario en el contenido de la página
flattenFormsOnPage(pageIndex) number Aplanar formularios en una página específica

Combinar e incrustar

mergeFrom(data) -> number

Combinar páginas de otro PDF. Retorna el número de páginas combinadas.

Parámetro Tipo Descripción
data Uint8Array Los bytes del archivo PDF fuente

embedFile(name, data) -> void

Adjuntar un archivo al PDF.

Parámetro Tipo Descripción
name string Nombre de archivo para el adjunto
data Uint8Array Contenido del archivo

Manipulación de imágenes

Method Parameters Descripción
repositionImage(pageIndex, name, x, y) number, string, number, number Mover imagen
resizeImage(pageIndex, name, w, h) number, string, number, number Redimensionar imagen
setImageBounds(pageIndex, name, x, y, w, h) number, string, ... Establecer límites de imagen

Renderizado

Método Parámetros Retorno Descripción
renderPage(pageIndex, dpi?) number, number Uint8Array Renderizar página como bytes PNG
flattenToImages(dpi?) number Uint8Array Aplanar todas las páginas a PDF basado en imágenes

Guardar

saveToBytes() -> Uint8Array

Guardar el PDF editado como bytes.

saveEncryptedToBytes(password, ownerPassword?, allowPrint?, allowCopy?, allowModify?, allowAnnotate?) -> Uint8Array

Guardar con encriptación AES-256.

Parámetro Tipo Predeterminado Descripción
password string Contraseña de usuario
ownerPassword string user password Contraseña de propietario
allowPrint boolean true Permitir impresión
allowCopy boolean true Permitir copia
allowModify boolean false Permitir modificación
allowAnnotate boolean true Permitir anotaciones

free()

Liberar memoria WASM. Siempre llame a esto cuando termine con el documento.


WasmPdf

Clase de fábrica para crear nuevos PDFs.

import { WasmPdf } from "pdf-oxide-wasm";

Métodos estáticos

WasmPdf.fromMarkdown(content, title?, author?) -> WasmPdf

Crear un PDF desde texto Markdown.

Parámetro Tipo Predeterminado Descripción
content string Contenido Markdown
title string Título del documento
author string Autor del documento

WasmPdf.fromHtml(content, title?, author?) -> WasmPdf

Crear un PDF desde HTML.

WasmPdf.fromText(content, title?, author?) -> WasmPdf

Crear un PDF desde texto plano.

WasmPdf.fromImageBytes(data) -> WasmPdf

Crear un PDF de una sola página desde bytes de imagen.

Parámetro Tipo Descripción
data Uint8Array Bytes de archivo de imagen (JPEG, PNG)

WasmPdf.fromMultipleImageBytes(imagesArray) -> WasmPdf

Crear un PDF de múltiples páginas desde múltiples imágenes, una página por imagen.

Parámetro Tipo Descripción
imagesArray Uint8Array[] Array de bytes de archivos de imagen

Métodos de instancia

toBytes() -> Uint8Array

Obtener el PDF como bytes.

size -> number

Tamaño del PDF en bytes (propiedad de solo lectura).

const pdf = WasmPdf.fromMarkdown("# Hello World\n\nThis is a PDF.");
console.log(`PDF size: ${pdf.size} bytes`);
writeFileSync("output.pdf", pdf.toBytes());

Disponibilidad de funciones

Algunas funciones requieren dependencias nativas y no están disponibles en WebAssembly:

Función WASM Notas
Extracción de texto Soporte completo
Extracción estructurada Caracteres, spans
Creación de PDF Markdown, HTML, texto, imágenes
Edición de PDF Metadatos, rotación, dimensiones, borrado
Campos de formulario Leer, escribir, exportar, aplanar
Búsqueda Soporte completo de regex
Encriptación Lectura y escritura AES-256
Anotaciones Leer, aplanar, redactar
Combinar PDFs Combinar páginas de otro PDF
Archivos embebidos Adjuntar archivos a PDFs
Etiquetas de página Leer rangos de etiquetas de página
Metadatos XMP Leer metadatos XMP
OCR No Requiere ONNX Runtime nativo
Digital signatures No Requiere bibliotecas criptográficas nativas
Page rendering No Requiere tiny-skia nativo
Barcodes No Requiere renderizado nativo
Office conversion No Requiere LibreOffice nativo

Manejo de errores

Todos los métodos que pueden fallar lanzan objetos Error de JavaScript:

try {
  const doc = new WasmPdfDocument(new Uint8Array([0, 1, 2]));
} catch (e) {
  console.error(`Failed to open: ${e.message}`);
}

TypeScript

Las definiciones completas de tipos están incluidas en el paquete:

import { WasmPdfDocument, WasmPdf } from "pdf-oxide-wasm";

const doc: WasmPdfDocument = new WasmPdfDocument(bytes);
const text: string = doc.extractText(0);
const pdf: WasmPdf = WasmPdf.fromMarkdown("# Hello");