Skip to content

Referência da API JavaScript

O PDF Oxide fornece bindings WebAssembly para JavaScript e TypeScript. O pacote npm pdf-oxide-wasm funciona tanto em Node.js quanto em navegadores.

npm install pdf-oxide-wasm

Para a API Rust, veja a Referência da API Rust. Para the Python API, see the Referência da API Python. Para detalhes de tipos, veja Tipos e Enums.


WasmPdfDocument

A classe principal para abrir, extrair, editar e salvar PDFs.

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

Construtor

new WasmPdfDocument(data)

Carregar um documento PDF a partir de bytes brutos.

Parâmetro Tipo Descrição
data Uint8Array O conteúdo do arquivo PDF

Lança: Error se o PDF for inválido ou não puder ser analisado.

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

Somente Leitura

pageCount() -> number

Obter o número de páginas no documento.

version() -> Uint8Array

Obter o Versão do PDF as [major, minor].

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

authenticate(password) -> boolean

Descriptografar um PDF criptografado. Retorna true se a autenticação foi bem-sucedida.

Parâmetro Tipo Descrição
password string A string de senha

hasStructureTree() -> boolean

Verificar se o documento é um PDF Marcado com uma árvore de estrutura.


Extração de Texto

extractText(pageIndex) -> string

Extrair texto simples de uma página única.

Parâmetro Tipo Descrição
pageIndex number Número de página baseado em zero
const text = doc.extractText(0);

extractAllText() -> string

Extrair texto simples de todas as páginas, separado por caracteres de avanço de formulário.

extractChars(pageIndex) -> Array

Extrair caracteres individuais com posicionamento preciso e metadados de fonte.

Parâmetro Tipo Descrição
pageIndex number Número de página baseado em zero

Retorna: Array de objetos com campos:

Campo Tipo Descrição
char string O caractere
bbox {x, y, width, height} Caixa delimitadora
font_name string Nome da fonte
font_size number Tamanho da fonte em pontos
font_weight string Peso (Normal, Bold, etc.)
is_italic boolean Indicador de itálico
color {r, g, b} Cor 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

Extrair spans de texto estilizados com metadados de fonte.

Parâmetro Tipo Descrição
pageIndex number Número de página baseado em zero

Retorna: Array de objetos com campos:

Campo Tipo Descrição
text string O conteúdo de texto
bbox {x, y, width, height} Caixa delimitadora
font_name string Nome da fonte
font_size number Tamanho da fonte em pontos
font_weight string Peso (Normal, Bold, etc.)
is_italic boolean Indicador de itálico
color {r, g, b} Cor 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}`);
}

Conversão de Formato

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

Converter uma única página para Markdown.

Parâmetro Tipo Padrão Descrição
pageIndex number Número de página baseado em zero
detectHeadings boolean true Detectar cabeçalhos pelo tamanho da fonte
includeImages boolean true Incluir imagens
includeFormFields boolean true Incluir valores de campos de formulário

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

Converter todas as páginas para Markdown.

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

Converter uma única página para HTML.

Parâmetro Tipo Padrão Descrição
pageIndex number Número de página baseado em zero
preserveLayout boolean false Preservar layout visual
detectHeadings boolean true Detectar cabeçalhos
includeFormFields boolean true Incluir valores de campos de formulário

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

Converter todas as páginas para HTML.

toPlainText(pageIndex) -> string

Converter uma única página para texto simples.

toPlainTextAll() -> string

Converter todas as páginas para texto simples.


Busca

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

Buscar texto em todas as páginas.

Parâmetro Tipo Padrão Descrição
pattern string Padrão de busca (string ou regex)
caseInsensitive boolean false Busca insensível a maiúsculas/minúsculas
literal boolean false Tratar padrão como string literal
wholeWord boolean false Corresponder apenas palavras inteiras
maxResults number Máximo de resultados a retornar

Retorna: Array de objetos com campos:

Campo Tipo Descrição
page number Número da página
text string Texto correspondente
bbox object Caixa delimitadora
start_index number Índice inicial no texto da página
end_index number Índice final no texto da página

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

Buscar texto dentro de uma página única.


Informações de Imagem

extractImages(pageIndex) -> Array

Obter metadados de imagem para uma página.

Campo Tipo Descrição
width number Largura da imagem em pixels
height number Altura da imagem em pixels
color_space string Espaço de cor (ex.: DeviceRGB)
bits_per_component number Bits por canal de cor
bbox object Posição na página

extractImageBytes(pageIndex) -> Array

Extrair bytes brutos de imagem de uma página. Retorna um array de objetos:

Campo Tipo Descrição
width number Largura da imagem em pixels
height number Altura da imagem em pixels
data Uint8Array Bytes brutos da imagem
format string Formato da imagem

pageImages(pageIndex) -> Array

Obter nomes de imagens e limites para operações de posicionamento.

Campo Tipo Descrição
name string Nome do XObject
bounds number[] [x, y, width, height]
matrix number[] Matriz de transformação [a, b, c, d, e, f]

Estrutura do Documento

getOutline() -> Array | null

Obter marcadores / índice do documento. Retorna null se nenhum índice existir.

getAnnotations(pageIndex) -> Array

Obter metadados de anotação (tipo, retângulo, conteúdo, etc.) para uma página.

extractPaths(pageIndex) -> Array

Obter caminhos vetoriais (linhas, curvas, formas) de uma página.

pageLabels() -> Array

Obter intervalos de rótulos de página. Retorna um array de objetos:

Campo Tipo Descrição
start_page number Primeira página neste intervalo
style string Estilo de numeração
prefix string Prefixo do rótulo
start_value number Número inicial

xmpMetadata() -> object | null

Obter metadados XMP. Retorna null se não presente. Os campos do objeto incluem:

Campo Tipo Descrição
dc_title string | null Título do documento
dc_creator string[] | null Lista de criadores
dc_description string | null Descrição
xmp_creator_tool string | null Ferramenta criadora
xmp_create_date string | null Data de criação
xmp_modify_date string | null Data de modificação
pdf_producer string | null Produtor PDF

Campos de Formulário

getFormFields() -> Array

Obter todos os campos de formulário com nome, tipo, valor e sinalizadores.

Campo Tipo Descrição
name string Nome do campo
field_type string Tipo de campo (texto, caixa de seleção, etc.)
value string Valor atual
flags number Sinalizadores do campo
const fields = doc.getFormFields();
for (const f of fields) {
  console.log(`${f.name} (${f.field_type}) = ${f.value}`);
}

hasXfa() -> boolean

Verificar se o documento contém formulários XFA.

getFormFieldValue(name) -> any

Obter um valor de campo de formulário por nome. Retorna uma string, boolean ou null dependendo do tipo do campo.

Parâmetro Tipo Descrição
name string Nome do campo

setFormFieldValue(name, value) -> void

Definir um valor de campo de formulário por nome.

Parâmetro Tipo Descrição
name string Nome do campo
value string | boolean New field value

exportFormData(format?) -> Uint8Array

Exportar dados de formulário como FDF (padrão) ou XFDF.

Parâmetro Tipo Padrão Descrição
format string "fdf" Formato de exportação: "fdf" ou "xfdf"

Edição

Metadados

Método Parâmetros Descrição
setTitle(title) string Definir título do documento
setAuthor(author) string Definir autor do documento
setSubject(subject) string Definir assunto do documento
setKeywords(keywords) string Definir palavras-chave do documento

Rotacao de Páginas

Método Parâmetros Descrição
pageRotation(pageIndex) number Obter rotação atual (0, 90, 180, 270)
setPageRotation(pageIndex, degrees) number, number Definir rotação absoluta
rotatePage(pageIndex, degrees) number, number Adicionar à rotação atual
rotateAllPages(degrees) number Rotacionar todas as páginas

Dimensões da Página

Método Parâmetros Descrição
pageMediaBox(pageIndex) number Obter MediaBox [llx, lly, urx, ury]
setPageMediaBox(pageIndex, llx, lly, urx, ury) number, ... Definir MediaBox
pageCropBox(pageIndex) number Obter CropBox (pode ser null)
setPageCropBox(pageIndex, llx, lly, urx, ury) number, ... Definir CropBox
cropMargins(left, right, top, bottom) number, ... Recortar todas as margens da página

Apagar / Branquear

Método Parâmetros Descrição
eraseRegion(pageIndex, llx, lly, urx, ury) number, ... Apagar uma região
eraseRegions(pageIndex, rects) number, Float32Array Apagar múltiplas regiões
clearEraseRegions(pageIndex) number Limpar apagamentos pendentes

Anotações e Redação

Método Parâmetros Descrição
flattenPageAnnotations(pageIndex) number Achatar anotações na página
flattenAllAnnotations() Achatar todas as anotações
applyPageRedactions(pageIndex) number Aplicar redações na página
applyAllRedactions() Aplicar todas as redações

Achatamento de Formulários

Método Parâmetros Descrição
flattenForms() Achatar todos os campos de formulário no conteúdo da página
flattenFormsOnPage(pageIndex) number Achatar formulários em uma página específica

Mesclar e Incorporar

mergeFrom(data) -> number

Mesclar páginas de outro PDF. Retorna o número de páginas mescladas.

Parâmetro Tipo Descrição
data Uint8Array Os bytes do arquivo PDF de origem

embedFile(name, data) -> void

Anexar um arquivo ao PDF.

Parâmetro Tipo Descrição
name string Nome do arquivo para o anexo
data Uint8Array Conteúdo do arquivo

Manipulacao de Imagens

Método Parâmetros Descrição
repositionImage(pageIndex, name, x, y) number, string, number, number Mover imagem
resizeImage(pageIndex, name, w, h) number, string, number, number Redimensionar imagem
setImageBounds(pageIndex, name, x, y, w, h) number, string, ... Definir limites da imagem

Renderização

Método Parâmetros Retorno Descrição
renderPage(pageIndex, dpi?) number, number Uint8Array Renderizar página em bytes PNG
flattenToImages(dpi?) number Uint8Array Achatar todas as páginas em PDF baseado em imagens

Salvar

saveToBytes() -> Uint8Array

Salvar o PDF editado como bytes.

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

Salvar com criptografia AES-256.

Parâmetro Tipo Padrão Descrição
password string Senha de usuário
ownerPassword string user password Senha do proprietário
allowPrint boolean true Permitir impressão
allowCopy boolean true Permitir cópia
allowModify boolean false Permitir modificação
allowAnnotate boolean true Permitir anotações

free()

Liberar memória WASM. Sempre chame isto quando terminar com o documento.


WasmPdf

Classe fábrica para criar novos PDFs.

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

Métodos Estáticos

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

Criar um PDF a partir de texto Markdown.

Parâmetro Tipo Padrão Descrição
content string Conteúdo Markdown
title string Título do documento
author string Autor do documento

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

Criar um PDF a partir de HTML.

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

Criar um PDF a partir de texto simples.

WasmPdf.fromImageBytes(data) -> WasmPdf

Criar um PDF de uma única página a partir de bytes de imagem.

Parâmetro Tipo Descrição
data Uint8Array Bytes do arquivo de imagem (JPEG, PNG)

WasmPdf.fromMultipleImageBytes(imagesArray) -> WasmPdf

Criar um PDF de múltiplas páginas a partir de múltiplas imagens, uma página por imagem.

Parâmetro Tipo Descrição
imagesArray Uint8Array[] Array de bytes de arquivo de imagem

Métodos de Instância

toBytes() -> Uint8Array

Obter o PDF como bytes.

size -> number

Tamanho do PDF em bytes (propriedade somente leitura).

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

Disponibilidade de Funcionalidades

Algumas funcionalidades requerem dependências nativas e não estão disponíveis em WebAssembly:

Funcionalidade WASM Notas
Extração de texto Sim Suporte completo
Extração estruturada Sim Caracteres, spans
Criação de PDF Sim Markdown, HTML, texto, imagens
Edição de PDF Sim Metadados, rotação, dimensões, apagar
Campos de formulário Sim Ler, escrever, exportar, achatar
Search Sim Suporte completo a regex
Criptografia Sim Leitura e escrita AES-256
Annotations Sim Ler, achatar, redigir
Mesclar PDFs Sim Mesclar páginas de outro PDF
Arquivos incorporados Sim Anexar arquivos a PDFs
Page labels Sim Ler intervalos de rótulos de página
XMP metadata Sim Ler metadados XMP
OCR No Requer ONNX Runtime nativo
Assinaturas digitais No Requer bibliotecas criptográficas nativas
Renderização de página No Requer tiny-skia nativo
Barcodes No Requer renderização nativa
Conversão Office No Requer LibreOffice nativo

Tratamento de Erros

Todos os métodos que podem falhar lançam objetos JavaScript Error:

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

TypeScript

Definições de tipo completas estão incluídas no pacote:

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");