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