Skip to content

JavaScript-API-Referenz

PDF Oxide bietet WebAssembly-Bindings für JavaScript und TypeScript. Das npm-Paket pdf-oxide-wasm funktioniert sowohl in Node.js als auch in Browsern.

npm install pdf-oxide-wasm

Für die Rust-API siehe die API-Referenz. Für die Python-API siehe die Python-API-Referenz. Für Typdetails siehe Typen und Enums.


WasmPdfDocument

Die primäre Klasse zum Öffnen, Extrahieren, Bearbeiten und Speichern von PDFs.

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

Konstruktor

new WasmPdfDocument(data)

Ein PDF-Dokument aus Roh-Bytes laden.

Parameter Typ Beschreibung
data Uint8Array Der PDF-Dateiinhalt

Wirft: Error wenn das PDF ungültig ist oder nicht geparst werden kann.

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

Nur-Lesen

pageCount() -> number

Die Anzahl der Seiten im Dokument abrufen.

version() -> Uint8Array

Die PDF-Version als [major, minor] abrufen.

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

authenticate(password) -> boolean

Ein verschlüsseltes PDF entschlüsseln. Gibt true zurück, wenn die Authentifizierung erfolgreich war.

Parameter Typ Beschreibung
password string Die Passwortzeichenkette

hasStructureTree() -> boolean

Prüfen, ob das Dokument ein getaggtes PDF mit Strukturbaum ist.


Textextraktion

extractText(pageIndex) -> string

Klartext von einer einzelnen Seite extrahieren.

Parameter Typ Beschreibung
pageIndex number Nullbasierte Seitennummer
const text = doc.extractText(0);

extractAllText() -> string

Klartext von allen Seiten extrahieren, getrennt durch Seitenvorschubzeichen.

extractChars(pageIndex) -> Array

Einzelne Zeichen mit präziser Positionierung und Schriftmetadaten extrahieren.

Parameter Typ Beschreibung
pageIndex number Nullbasierte Seitennummer

Rückgabe: Array of objects with fields:

Feld Typ Beschreibung
char string Das Zeichen
bbox {x, y, width, height} Begrenzungsrahmen
font_name string Schriftname
font_size number Schriftgröße in Punkten
font_weight string Gewicht (Normal, Bold usw.)
is_italic boolean Kursiv-Flag
color {r, g, b} RGB-Farbe (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

Gestylte Text-Spans mit Schriftmetadaten extrahieren.

Parameter Typ Beschreibung
pageIndex number Nullbasierte Seitennummer

Rückgabe: Array of objects with fields:

Feld Typ Beschreibung
text string Der Textinhalt
bbox {x, y, width, height} Begrenzungsrahmen
font_name string Schriftname
font_size number Schriftgröße in Punkten
font_weight string Gewicht (Normal, Bold usw.)
is_italic boolean Kursiv-Flag
color {r, g, b} RGB-Farbe (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}`);
}

Formatkonvertierung

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

Eine einzelne Seite in Markdown konvertieren.

Parameter Typ Standard Beschreibung
pageIndex number Nullbasierte Seitennummer
detectHeadings boolean true Überschriften anhand der Schriftgröße erkennen
includeImages boolean true Bilder einbeziehen
includeFormFields boolean true Formularfeldwerte einbeziehen

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

Alle Seiten in Markdown konvertieren.

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

Eine einzelne Seite in HTML konvertieren.

Parameter Typ Standard Beschreibung
pageIndex number Nullbasierte Seitennummer
preserveLayout boolean false Visuelles Layout beibehalten
detectHeadings boolean true Überschriften erkennen
includeFormFields boolean true Formularfeldwerte einbeziehen

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

Alle Seiten in HTML konvertieren.

toPlainText(pageIndex) -> string

Eine einzelne Seite in Klartext konvertieren.

toPlainTextAll() -> string

Alle Seiten in Klartext konvertieren.


Suche

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

Text über alle Seiten hinweg suchen.

Parameter Typ Standard Beschreibung
pattern string Suchmuster (String oder Regex)
caseInsensitive boolean false Suche ohne Groß-/Kleinschreibung
literal boolean false Muster als literale Zeichenkette behandeln
wholeWord boolean false Nur ganze Wörter suchen
maxResults number Maximale Anzahl zurückzugebender Ergebnisse

Rückgabe: Array of objects with fields:

Feld Typ Beschreibung
page number Seitennummer
text string Gefundener Text
bbox object Begrenzungsrahmen
start_index number Startindex im Seitentext
end_index number Endindex im Seitentext

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

Text innerhalb einer einzelnen Seite suchen.


Bildinformationen

extractImages(pageIndex) -> Array

Bildmetadaten für eine Seite abrufen.

Feld Typ Beschreibung
width number Bildbreite in Pixeln
height number Bildhöhe in Pixeln
color_space string Farbraum (z.B. DeviceRGB)
bits_per_component number Bits pro Farbkanal
bbox object Position auf der Seite

extractImageBytes(pageIndex) -> Array

Rohe Bildbytes einer Seite extrahieren. Gibt ein Array von Objekten zurück:

Feld Typ Beschreibung
width number Bildbreite in Pixeln
height number Bildhöhe in Pixeln
data Uint8Array Rohe Bildbytes
format string Bildformat

pageImages(pageIndex) -> Array

Bildnamen und -grenzen für Positionierungsoperationen abrufen.

Feld Typ Beschreibung
name string XObject-Name
bounds number[] [x, y, width, height]
matrix number[] Transformationsmatrix [a, b, c, d, e, f]

Dokumentstruktur

getOutline() -> Array | null

Dokumentlesezeichen / Inhaltsverzeichnis abrufen. Gibt null zurück, wenn kein Inhaltsverzeichnis existiert.

getAnmerkungen(pageIndex) -> Array

Anmerkungsmetadaten (Typ, Rechteck, Inhalt usw.) für eine Seite abrufen.

extractPaths(pageIndex) -> Array

Vektorpfade (Linien, Kurven, Formen) einer Seite abrufen.

pageLabels() -> Array

Seitenbeschriftungsbereiche abrufen. Gibt ein Array von Objekten zurück:

Feld Typ Beschreibung
start_page number Erste Seite in diesem Bereich
style string Nummerierungsstil
prefix string Beschriftungspräfix
start_value number Startnummer

xmpMetadata() -> object | null

XMP-Metadaten abrufen. Gibt null zurück, wenn nicht vorhanden. Objektfelder umfassen:

Feld Typ Beschreibung
dc_title string | null Dokumenttitel
dc_creator string[] | null Erstellerliste
dc_description string | null Description
xmp_creator_tool string | null Erstellerwerkzeug
xmp_create_date string | null Erstellungsdatum
xmp_modify_date string | null Änderungsdatum
pdf_producer string | null PDF-Produzent

Formularfelder

getFormFields() -> Array

Alle Formularfelder mit Name, Typ, Wert und Flags abrufen.

Feld Typ Beschreibung
name string Feldname
field_type string Feldtyp (Text, Checkbox usw.)
value string Aktueller Wert
flags number Feldflags
const fields = doc.getFormFields();
for (const f of fields) {
  console.log(`${f.name} (${f.field_type}) = ${f.value}`);
}

hasXfa() -> boolean

Prüfen, ob das Dokument XFA-Formulare enthält.

getFormFieldValue(name) -> any

Einen Formularfeldwert nach Name abrufen. Gibt einen string, boolean oder null zurück, abhängig vom Feldtyp.

Parameter Typ Beschreibung
name string Feldname

setFormFieldValue(name, value) -> void

Einen Formularfeldwert nach Name setzen.

Parameter Typ Beschreibung
name string Feldname
value string | boolean New field value

exportFormData(format?) -> Uint8Array

Formulardaten als FDF exportieren (default) or XFDF.

Parameter Typ Standard Beschreibung
format string "fdf" Exportformat: "fdf" oder "xfdf"

Bearbeitung

Metadaten

Method Parameters Description
setTitle(title) string Dokumenttitel setzen
setAuthor(author) string Dokumentautor setzen
setSubject(subject) string Dokumentbetreff setzen
setKeywords(keywords) string Dokumentschlüsselwörter setzen

Seite Rotation

Method Parameters Description
pageRotation(pageIndex) number Get current rotation (0, 90, 180, 270)
setPageRotation(pageIndex, degrees) number, number Absolute Rotation setzen
rotatePage(pageIndex, degrees) number, number Add to current rotation
rotateAllPages(degrees) number Alle Seiten rotieren

Seitendimensionen

Method Parameters Description
pageMediaBox(pageIndex) number Get MediaBox [llx, lly, urx, ury]
setPageMediaBox(pageIndex, llx, lly, urx, ury) number, ... MediaBox setzen
pageCropBox(pageIndex) number Get CropBox (may be null)
setPageCropBox(pageIndex, llx, lly, urx, ury) number, ... CropBox setzen
cropMargins(left, right, top, bottom) number, ... Crop all page margins

Löschen / Weißen

Method Parameters Description
eraseRegion(pageIndex, llx, lly, urx, ury) number, ... Erase a region
eraseRegions(pageIndex, rects) number, Float32Array Erase multiple regions
clearEraseRegions(pageIndex) number Clear pending erases

Anmerkungen und Schwärzung

Method Parameters Description
flattenPageAnmerkungen(pageIndex) number Flatten annotations on page
flattenAllAnmerkungen() Alle Anmerkungen einbetten
applyPageRedactions(pageIndex) number Apply redactions on page
applyAllRedactions() Apply all redactions

Formular-Einbettung

Method Parameters Description
flattenForms() Alle Formularfelder einbetten into page content
flattenFormsOnPage(pageIndex) number Flatten forms on a specific page

Zusammenführen und Einbetten

mergeFrom(data) -> number

Seiten aus einem anderen PDF zusammenführen. Gibt die Anzahl der zusammengeführten Seiten zurück.

Parameter Typ Beschreibung
data Uint8Array Die Quell-PDF-Dateibytes

embedFile(name, data) -> void

Datei anhängen to the PDF.

Parameter Typ Beschreibung
name string Dateiname für den Anhang
data Uint8Array Dateiinhalt

Image Manipulation

Method Parameters Description
repositionImage(pageIndex, name, x, y) number, string, number, number Move image
resizeImage(pageIndex, name, w, h) number, string, number, number Resize image
setImageBounds(pageIndex, name, x, y, w, h) number, string, ... Set image bounds

Rendering

Methode Parameter Rückgabe Beschreibung
renderPage(pageIndex, dpi?) number, number Uint8Array Seite als PNG-Bytes rendern
flattenToImages(dpi?) number Uint8Array Alle Seiten in bildbasiertes PDF umwandeln

Speichern

saveToBytes() -> Uint8Array

Das bearbeitete PDF als Bytes speichern.

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

Mit AES-256-Verschlüsselung speichern.

Parameter Typ Standard Beschreibung
password string Benutzerpasswort
ownerPassword string user password Eigentümerpasswort
allowPrint boolean true Drucken erlauben
allowCopy boolean true Kopieren erlauben
allowModify boolean false Ändern erlauben
allowAnnotate boolean true Anmerkungen erlauben

free()

WASM-Speicher freigeben. Immer aufrufen, wenn die Arbeit mit dem Dokument beendet ist.


WasmPdf

Fabrikklasse zum Erstellen neuer PDFs.

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

Statische Methoden

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

Ein PDF aus Markdown-Text erstellen.

Parameter Typ Standard Beschreibung
content string Markdown-Inhalt
title string Dokumenttitel
author string Dokumentautor

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

Ein PDF aus HTML erstellen.

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

Ein PDF aus Klartext erstellen.

WasmPdf.fromImageBytes(data) -> WasmPdf

Ein einseitiges PDF aus Bild-Bytes erstellen.

Parameter Typ Beschreibung
data Uint8Array Bilddateibytes (JPEG, PNG)

WasmPdf.fromMultipleImageBytes(imagesArray) -> WasmPdf

Ein mehrseitiges PDF aus mehreren Bildern erstellen, eine Seite pro Bild.

Parameter Typ Beschreibung
imagesArray Uint8Array[] Array von Bilddateibytes

Instanzmethoden

toBytes() -> Uint8Array

Das PDF als Bytes abrufen.

size -> number

PDF-Größe in Bytes (schreibgeschützte Eigenschaft).

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

Funktionsverfügbarkeit

Einige Funktionen erfordern native Abhängigkeiten und sind nicht in WebAssembly verfügbar:

Funktion WASM Hinweise
Textextraktion Yes Vollständige Unterstützung
Strukturierte Extraktion Yes Chars, spans
PDF-Erstellung Yes Markdown, HTML, text, images
PDF-Bearbeitung Yes Metadata, rotation, dimensions, erase
Formularfelder Yes Lesen, Schreiben, Exportieren, Einbetten
Search Yes Vollständige Regex-Unterstützung
Verschlüsselung Yes AES-256 Lesen und Schreiben
Anmerkungen Yes Lesen, Einbetten, Schwärzen
PDFs zusammenführen Yes Seiten aus einem anderen PDF zusammenführen
Eingebettete Dateien Yes Dateien an PDFs anhängen
Page labels Yes Seitenbeschriftungsbereiche lesen
XMP metadata Yes XMP-Metadaten lesen
OCR No Erfordert natives ONNX Runtime
Digitale Signaturen No Erfordert native Krypto-Bibliotheken
Seiten-Rendering No Erfordert natives tiny-skia
Barcodes No Erfordert natives Rendering
Office-Konvertierung No Erfordert natives LibreOffice

Fehlerbehandlung

Alle Methoden, die fehlschlagen können, werfen JavaScript Error-Objekte:

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

TypeScript

Vollständige Typdefinitionen sind im Paket enthalten:

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