Skip to content

Java-API-Referenz

PDF Oxide stellt native Java-Bindings über eine JNI-Schicht auf dem Rust-Kern bereit. Die mitgelieferte native Bibliothek wird automatisch beim Laden der Klasse geladen; vorkompilierte Natives gibt es für Linux, macOS und Windows (x86_64 und ARM64).

<dependency>
  <groupId>fyi.oxide</groupId>
  <artifactId>pdf-oxide</artifactId>
  <version>0.3.69</version>
</dependency>

Alle Klassen liegen im Paket fyi.oxide.pdf und seinen Unterpaketen (fyi.oxide.pdf.geometry, fyi.oxide.pdf.text, fyi.oxide.pdf.form usw.).

import fyi.oxide.pdf.PdfDocument;
import fyi.oxide.pdf.DocumentEditor;
import fyi.oxide.pdf.Pdf;

Lebenszyklus. PdfDocument, DocumentEditor und Pdf besitzen nativen Speicher und implementieren AutoCloseable. Verwenden Sie stets try-with-resources. close() ist idempotent; ein Cleaner als Absicherung gibt geleakte Handles frei, darf aber nicht für eine zeitnahe Bereinigung herangezogen werden.

Thread-Sicherheit. Dokumentinstanzen sind nicht thread-sicher — öffnen Sie eine pro Worker. Zustandslose statische Helfer (MarkdownConverter, PdfValidator, PdfPolicy) sind thread-sicher.

Für die Rust-API siehe die Rust-API-Referenz. Für die Python-API siehe die Python-API-Referenz.


PdfDocument

Der primäre schreibgeschützte Einstiegspunkt zu einem PDF — öffnen, extrahieren, rendern und konvertieren. Implementiert AutoCloseable.

import fyi.oxide.pdf.PdfDocument;
import java.nio.file.Paths;

try (PdfDocument doc = PdfDocument.open(Paths.get("invoice.pdf"))) {
    System.out.println(doc.extractText(0));
}

Öffnen (statische Factory-Methoden)

static PdfDocument open(Path path)

Öffnet ein PDF von einem Dateisystempfad.

static PdfDocument open(String path)

Öffnet ein PDF von einem Pfad-String.

static PdfDocument open(byte[] bytes)

Öffnet ein PDF aus In-Memory-Bytes (z. B. von S3 oder HTTP heruntergeladen).

static PdfDocument open(Path path, String password)

Öffnet ein verschlüsseltes PDF von einem Pfad mit einem Benutzer- oder Eigentümerpasswort.

static PdfDocument open(String path, String password)

Öffnet ein verschlüsseltes PDF von einem Pfad-String mit einem Passwort.

static PdfDocument open(byte[] bytes, String password)

Öffnet ein verschlüsseltes PDF aus Bytes mit einem Passwort.

static PdfDocument open(InputStream stream)

Öffnet ein PDF, indem alle Bytes aus einem InputStream gelesen werden.

Einmalige statische Helfer

static String extractText(String path)

Öffnet, extrahiert den gesamten Text und schließt in einem einzigen Aufruf (Pfad-String).

static String extractText(Path path)

Öffnet, extrahiert den gesamten Text und schließt in einem einzigen Aufruf (Path).

Authentifizierung

boolean authenticate(String password)

Authentifiziert ein verschlüsseltes PDF nach dem Öffnen; gibt bei Erfolg true zurück.

boolean authenticate(byte[] password)

Authentifiziert mit einem rohen Byte-Passwort.

Dokumentinformationen

int pageCount()

Gibt die Anzahl der Seiten im Dokument zurück.

boolean isOpen()

Gibt true zurück, wenn das Dokument-Handle noch geöffnet ist.

Textextraktion

String extractText(int pageIndex)

Extrahiert reinen Text aus einer einzelnen, nullbasiert indizierten Seite.

String extractTextAuto(int pageIndex)

Extrahiert Text von einer Seite und greift bei gescannten Seiten automatisch auf OCR zurück.

String extractStructured(int page)

Extrahiert strukturierten Seiteninhalt (Spans, Zeilen, Layout) als JSON-String.

Konvertierung

String toMarkdown()

Konvertiert das gesamte Dokument nach Markdown.

String toMarkdown(int pageIndex)

Konvertiert eine einzelne Seite nach Markdown.

String toHtml()

Konvertiert das gesamte Dokument nach HTML.

String toHtml(int pageIndex)

Konvertiert eine einzelne Seite nach HTML.

DOM-Zugriff

PdfPage page(int index)

Gibt ein lazy ausgewertetes PdfPage-Handle für den angegebenen nullbasierten Index zurück.

Rendering

byte[] render(int pageIndex)

Rendert eine Seite mit der Standard-DPI zu PNG-Bytes.

byte[] render(int pageIndex, int dpi)

Rendert eine Seite mit der angegebenen DPI zu PNG-Bytes.

Lebenszyklus

void close()

Gibt das zugrunde liegende native Handle frei. Idempotent.


DocumentEditor

Veränderliche Bearbeitungssitzung über ein PDF: Formularausfüllung, Schwärzung, Metadaten-Bereinigung und Speichern. Gibt von Mutatoren this zurück, um flüssiges Verketten zu ermöglichen. Implementiert AutoCloseable.

import fyi.oxide.pdf.DocumentEditor;

try (DocumentEditor editor = DocumentEditor.open("form.pdf")) {
    editor.setFormField("name", "Jane Doe")
          .setFormField("subscribe", true)
          .saveTo(Paths.get("filled.pdf"));
}

Öffnen (statische Factory-Methoden)

static DocumentEditor open(Path path)

Öffnet ein PDF zur Bearbeitung von einem Path.

static DocumentEditor open(String path)

Öffnet ein PDF zur Bearbeitung von einem Pfad-String.

static DocumentEditor open(byte[] bytes)

Öffnet ein PDF zur Bearbeitung aus In-Memory-Bytes.

Formularfelder

DocumentEditor setFormField(String name, String value)

Setzt den Wert eines Text- oder Auswahlfeldes anhand des Namens; gibt this zurück.

DocumentEditor setFormField(String name, boolean checked)

Setzt ein Kontrollkästchen-/Optionsfeld anhand des Namens; gibt this zurück.

Schwärzung

DocumentEditor addRedaction(int pageIndex, BBox region)

Stellt eine Schwärzung über einem rechteckigen Bereich auf einer Seite in die Warteschlange; gibt this zurück.

int redactionCount(int pageIndex)

Gibt die Anzahl der ausstehenden Schwärzungen auf einer Seite zurück.

int redactionCount()

Gibt die Gesamtzahl der ausstehenden Schwärzungen im gesamten Dokument zurück.

RedactResult applyRedactionsDestructive()

Wendet alle eingereihten Schwärzungen an und entfernt den überdeckten Inhalt dauerhaft; gibt ein RedactResult zurück.

Metadaten

DocumentEditor scrubMetadata()

Entfernt Dokumentinformationen und XMP-Metadaten; gibt this zurück.

Speichern

byte[] save()

Serialisiert das bearbeitete Dokument in ein neues Byte-Array (vollständige Neuschreibung).

void saveTo(Path out)

Schreibt das bearbeitete Dokument in eine Datei (vollständige Neuschreibung).

byte[] saveIncremental()

Serialisiert mit einem inkrementellen Update und bewahrt die ursprünglichen Bytes.

void saveIncrementalTo(Path out)

Schreibt ein inkrementelles Update in eine Datei.

Lebenszyklus

boolean isOpen()
void close()

Prüft, ob der Editor geöffnet ist, und gibt sein natives Handle frei.


Pdf

Erstellt neue PDFs aus Markdown, HTML oder Bildern und teilt bestehende PDFs auf. Implementiert AutoCloseable.

import fyi.oxide.pdf.Pdf;

try (Pdf pdf = Pdf.fromMarkdown("# Report\n\nGenerated by PDF Oxide.")) {
    pdf.saveTo(Paths.get("report.pdf"));
}

Erstellung (statische Factory-Methoden)

static Pdf fromMarkdown(String markdown)

Erstellt ein PDF aus Markdown-Inhalt.

static Pdf fromHtml(String html)

Erstellt ein PDF aus HTML-Inhalt.

static Pdf fromImages(List<byte[]> images)

Erstellt ein mehrseitiges PDF, eine Seite pro Bild (JPEG/PNG-Bytes).

Aufteilen

List<BookmarkSegment> planSplitByBookmarks(SplitByBookmarksOptions opts)

Berechnet den BookmarkSegment-Plan für das Aufteilen auf einer Lesezeichen-Ebene, ohne Ausgabe zu schreiben.

List<byte[]> splitByBookmarks(SplitByBookmarksOptions opts)

Teilt das PDF auf der konfigurierten Lesezeichen-Ebene auf und gibt ein Byte-Array pro Segment zurück.

static int planSplitByBookmarksCount(byte[] sourcePdf, int level)

Gibt zurück, wie viele Segmente eine Aufteilung auf Lesezeichen-Ebene erzeugen würde, ohne ein Pdf zu öffnen.

static byte[][] splitByBookmarksFromBytes(byte[] sourcePdf, int level)

Teilt die Quell-PDF-Bytes auf der angegebenen Lesezeichen-Ebene in einem einzigen statischen Aufruf auf.

Speichern und Lebenszyklus

byte[] save()

Serialisiert das PDF in ein Byte-Array.

void saveTo(Path out)

Schreibt das PDF in eine Datei.

boolean isOpen()
void close()

Prüft, ob das Handle geöffnet ist, und gibt native Ressourcen frei.


AutoExtractor

Adaptive Extraktion, die jede Seite klassifiziert (Textebene vs. gescannt) und OCR dort anwendet, wo nötig. Wird aus einem geöffneten PdfDocument erstellt.

import fyi.oxide.pdf.AutoExtractor;

try (PdfDocument doc = PdfDocument.open("scan.pdf")) {
    AutoExtractor extractor = AutoExtractor.balanced(doc);
    AutoResult result = extractor.extractDocument();
    System.out.println(result.text());
}

Konstruktion (statische Factory-Methoden)

static AutoExtractor of(PdfDocument doc)

Erstellt einen Extraktor mit der Standardkonfiguration.

static AutoExtractor of(PdfDocument doc, AutoExtractConfig config)

Erstellt einen Extraktor mit einer expliziten AutoExtractConfig.

static AutoExtractor fast(PdfDocument doc)

Erstellt einen auf Geschwindigkeit abgestimmten Extraktor (Textebene zuerst).

static AutoExtractor balanced(PdfDocument doc)

Erstellt einen Extraktor mit einer ausgewogenen Voreinstellung aus Geschwindigkeit und Genauigkeit.

static AutoExtractor highFidelity(PdfDocument doc)

Erstellt einen auf maximale Genauigkeit abgestimmten Extraktor (aggressives OCR).

Extraktion

String extractText()

Extrahiert reinen Text über das gesamte Dokument.

String extractTextForPage(int pageIndex)

Extrahiert reinen Text für eine einzelne Seite.

AutoResult extractDocument()

Führt die vollständige adaptive Extraktion über das Dokument aus; gibt ein AutoResult zurück.

AutoResult extractAutoDocument()

Alias von extractDocument(), gibt das vollständige Dokumentergebnis zurück.

AutoResult extractPage(int pageIndex)

Führt die adaptive Extraktion für eine einzelne Seite aus.

AutoResult extractAutoPage(int pageIndex)

Alias von extractPage() für eine einzelne Seite.

Klassifizierung

ClassifyResult classifyDocument()

Klassifiziert jede Seite ohne Extraktion; gibt ein ClassifyResult zurück.

ClassifyResult classifyPage(int pageIndex)

Klassifiziert eine einzelne Seite.

JSON-Ausgabe

String extractDocumentJson()

Extrahiert das gesamte Dokument und serialisiert das Ergebnis nach JSON.

String extractPageJson(int pageIndex)

Extrahiert eine Seite und serialisiert das Ergebnis nach JSON.

Zugriffsmethoden

PdfDocument document()

Gibt das zugrunde liegende PdfDocument zurück.

AutoExtractConfig config()

Gibt die aktive Konfiguration zurück.


MarkdownConverter

Zustandslose, thread-sichere statische Helfer für die Markdown- und HTML-Konvertierung.

static String toMarkdown(PdfDocument doc, int pageIndex)

Konvertiert eine einzelne Seite nach Markdown.

static String toMarkdown(PdfDocument doc)

Konvertiert das gesamte Dokument nach Markdown.

static String toHtml(PdfDocument doc, int pageIndex)

Konvertiert eine einzelne Seite nach HTML.

static String toHtml(PdfDocument doc)

Konvertiert das gesamte Dokument nach HTML.


PdfSigner

Digitales Signieren und Verifizieren mit einem PKCS#12-Keystore.

import fyi.oxide.pdf.PdfSigner;
import fyi.oxide.pdf.signature.SignOptions;

PdfSigner signer = PdfSigner.fromPkcs12(Paths.get("cert.p12"), "keystore-pw");
byte[] signed = signer.sign(pdfBytes, SignOptions.builder().withReason("Approved").build());
static PdfSigner fromPkcs12(Path keystore, String password)

Lädt einen Signierer aus einer PKCS#12-Keystore-Datei.

static PdfSigner fromPkcs12(byte[] keystoreBytes, String password)

Lädt einen Signierer aus In-Memory-PKCS#12-Keystore-Bytes.

byte[] sign(byte[] pdf, SignOptions opts)

Signiert PDF-Bytes mit dem konfigurierten Zertifikat und den SignOptions; gibt das signierte PDF zurück.

boolean verify(byte[] pdf)

Verifiziert die in einem PDF eingebetteten Signaturen; gibt true zurück, wenn sie gültig sind.

static SignatureLevel classifyLevel(byte[] pdf)

Klassifiziert die PAdES-Signaturstufe eines signierten PDFs; gibt ein SignatureLevel zurück.


PdfValidator

Zustandslose, thread-sichere Konformitätsvalidierung für PDF/A, PDF/X und PDF/UA.

static boolean isPdfA(PdfDocument doc, PdfALevel level)

Schnelle boolesche Prüfung auf PDF/A-Konformität für eine gegebene Stufe.

static boolean isPdfUa(PdfDocument doc, PdfUaLevel level)

Schnelle boolesche Prüfung auf PDF/UA-Konformität für eine gegebene Stufe.

static ValidationResult validatePdfA(PdfDocument doc, PdfALevel level)

Validiert gegen eine PDF/A-Stufe; gibt ein ValidationResult mit Verstößen zurück.

static ValidationResult validatePdfX(PdfDocument doc, PdfXLevel level)

Validiert gegen eine PDF/X-Stufe.

static ValidationResult validatePdfUa(PdfDocument doc, PdfUaLevel level)

Validiert gegen eine PDF/UA-Stufe.


PdfPolicy

Prozessweite Sicherheitsrichtlinie, die steuert, welche kryptografischen Algorithmen zulässig sind. Thread-sichere statische Zugriffsmethoden.

static PolicyMode current()

Gibt den aktuell aktiven Richtlinienmodus zurück.

static void set(PolicyMode mode)

Setzt den prozessweiten Richtlinienmodus.

static PolicyMode compat()

Gibt die Konstante für den permissiven Kompatibilitätsmodus zurück.

static PolicyMode strict()

Gibt die Konstante für den strikten Modus zurück.

static PolicyMode fipsStrict()

Gibt die Konstante für den FIPS-strikten Modus zurück.


PdfPage

Ein lazy ausgewertetes Seiten-Handle, das von PdfDocument.page(int) zurückgegeben wird. Eigenschaften werden beim Zugriff an das übergeordnete Dokument weitergeleitet.

PdfDocument parent()

Gibt das besitzende Dokument zurück.

int index()

Gibt den nullbasierten Seitenindex zurück.

BBox mediaBox()

Gibt die MediaBox der Seite als BBox zurück.

BBox cropBox()

Gibt die CropBox der Seite zurück.

double width()
double height()

Gibt Breite und Höhe der Seite in PDF-Punkten zurück.

int rotation()

Gibt die Seitendrehung in Grad zurück (0, 90, 180, 270).

String text()

Extrahiert den gesamten reinen Text auf der Seite.

String text(BBox region)

Extrahiert Text innerhalb eines rechteckigen Bereichs.

List<TextWord> words()

Gibt Text auf Wortebene mit Bounding Boxes zurück (TextWord).

List<TextLine> lines()

Gibt Text auf Zeilenebene zurück (TextLine).

List<TextChar> chars()

Gibt Daten auf Zeichenebene zurück (TextChar).


Geometrie-Typen

BBox

Unveränderliche achsenparallele Bounding Box in PDF-Koordinaten.

BBox(double x0, double y0, double x1, double y1)
double x0()
double y0()
double x1()
double y1()
double width()
double height()

Rect

Rechteck aus Position und Größe (Ursprung + Breite/Höhe).

Rect(double x, double y, double width, double height)
double x()
double y()
double width()
double height()
BBox toBBox()

Point

Ein 2-D-Punkt.

Point(double x, double y)
double x()
double y()

Color

8-Bit-RGBA-Farbe.

Color(int r, int g, int b, int a)
Color(int r, int g, int b)
int r()
int g()
int b()
int a()

Text-Typen

TextChar

Ein einzelnes dekodiertes Zeichen mit Position und OCR-Konfidenz.

TextChar(int codepoint, BBox bbox, float confidence)
int codepoint()
BBox bbox()
float confidence()
String asString()

TextWord

Ein durch Leerzeichen abgegrenztes Wort mit Begrenzungen und Konfidenz.

TextWord(String text, BBox bbox, float confidence)
String text()
BBox bbox()
float confidence()

TextLine

Eine aus Wörtern zusammengesetzte Textzeile.

TextLine(String text, BBox bbox, List<TextWord> words)
String text()
BBox bbox()
List<TextWord> words()

TextSpan

Ein zusammenhängender Lauf einheitlich formatierten Texts.

TextSpan(String text, BBox bbox, TextStyle style)
String text()
BBox bbox()
TextStyle style()

TextStyle

Schriftart- und Stil-Metadaten für einen Span.

TextStyle(String font, double size, Color color, boolean bold, boolean italic)
double size()
Color color()
boolean bold()
boolean italic()

Tabellen-Typen

Table

Eine erkannte Tabelle mit Zellengitter.

Table(BBox bbox, int rows, int cols, List<TableCell> cells)
BBox bbox()
int rows()
int cols()
List<TableCell> cells()

TableCell

Eine einzelne Zelle, einschließlich Span-Informationen.

TableCell(String text, BBox bbox, int row, int col, int rowSpan, int colSpan)
String text()
BBox bbox()
int row()
int col()
int rowSpan()
int colSpan()

Bild-Typen

ExtractedImage

Ein aus einer Seite extrahiertes Rasterbild.

ExtractedImage(byte[] bytes, ImageFormat format, BBox bbox, int width, int height)
byte[] bytes()
ImageFormat format()
BBox bbox()
int width()
int height()

ImageFormat (enum)

JPEG, PNG, CCITT, RAW.


Such-Typen

SearchOptions

Über einen Builder konfigurierte Suchparameter.

boolean caseSensitive()
boolean wholeWord()
boolean regex()
Optional<Integer> maxResults()
static SearchOptions.Builder builder()

Builder: withCaseSensitive(boolean), withWholeWord(boolean), withRegex(boolean), withMaxResults(Integer), withMaxResults(int), build().

SearchResult

Das vollständige Ergebnis einer Abfrage.

SearchResult(String query, List<SearchMatch> matches)
String query()
List<SearchMatch> matches()
int count()
boolean isEmpty()

SearchMatch

Ein einzelner Treffer mit Seite und Position.

SearchMatch(int pageIndex, BBox bbox, String text)
int pageIndex()
BBox bbox()
String text()

Formular-Typen

FormField

Ein AcroForm-Feld.

FormField(String name, FormFieldType type, String value, BBox bbox, int pageIndex)
String name()
FormFieldType type()
Optional<String> value()
Optional<BBox> bbox()
int pageIndex()

FormFieldType (enum)

TEXT, CHECKBOX, RADIO, CHOICE.


Annotations-Typen

Annotation

Eine Seitenannotation.

Annotation(AnnotationType type, int pageIndex, BBox bbox, String contents, String uri)
AnnotationType type()
int pageIndex()
BBox bbox()
Optional<String> contents()
Optional<String> uri()

AnnotationType (enum)

HIGHLIGHT, TEXT, LINK, STAMP, UNDERLINE, STRIKEOUT, SQUIGGLY, FREE_TEXT, LINE, SQUARE, CIRCLE, FILE_ATTACHMENT.


Metadaten-Typen

DocumentInfo

Standardfelder des Dokumentinformations-Dictionarys.

Optional<String> title()
Optional<String> author()
Optional<String> subject()
Optional<String> keywords()
Optional<String> creator()
Optional<String> producer()
Optional<String> creationDate()
Optional<String> modificationDate()

XmpMetadata

Rohes XMP-Metadatenpaket.

XmpMetadata(String xml)
String xml()
boolean isEmpty()

Auto-Extraktions-Typen

AutoExtractConfig

Unveränderliche, über einen Builder erstellte Konfiguration für AutoExtractor.

Optional<ExtractMode> mode()
Optional<List<Integer>> forceOcrPages()
Optional<Double> minOcrConfidence()
Optional<List<String>> ocrLanguages()
Optional<List<String>> passwords()
Optional<Double> topMarginFraction()
Optional<Double> bottomMarginFraction()
Optional<Boolean> allowSingleColumnTables()
Optional<Boolean> ocrInlineImages()
Optional<String> cancelToken()
static AutoExtractConfig.Builder builder()
AutoExtractConfig.Builder toBuilder()

Builder-Methoden: withMode(ExtractMode), withForceOcrPages(List<Integer>), withMinOcrConfidence(Double), withOcrLanguages(List<String>), withOcrLanguages(String...), withPasswords(List<String>), withPasswords(String...), withTopMarginFraction(Double), withTopMarginFraction(double), withBottomMarginFraction(Double), withBottomMarginFraction(double), withAllowSingleColumnTables(Boolean), withAllowSingleColumnTables(boolean), withOcrInlineImages(Boolean), withOcrInlineImages(boolean), withCancelToken(String), build().

AutoResult

Ergebnis einer adaptiven Extraktion.

String text()
Optional<String> markdown()
Optional<String> html()
ExtractReason reason()
double confidence()
boolean ocrUsed()
List<RegionResult> regions()
List<Integer> pagesNeedingOcr()

RegionResult

Extraktionsergebnis pro Region.

int pageIndex()
BBox bbox()
String text()
ExtractReason reason()
double confidence()
boolean ocrUsed()
Optional<Table> table()

ClassifyResult

Ergebnis der Seitenklassifizierung.

List<PageClass> pages()
List<Integer> pagesNeedingOcr()
List<Integer> pagesWithChart()
List<Integer> pagesEncrypted()

ExtractMode (enum)

TEXT_ONLY, AUTO.

PageClass (enum)

TEXT_LAYER, SCANNED, MIXED.

ExtractReason (enum)

OK, SCANNED_NO_TEXT_LAYER, GLYPH_MAPPING_MISSING, ENCRYPTED_NO_EXTRACT_PERMISSION, IMAGE_TABLE_NO_STRUCTURE, CHART_NOT_TRANSCRIBED, OCR_REQUESTED_BUT_UNAVAILABLE, OCR_LOW_CONFIDENCE, EMPTY.


Signatur-Typen

SignOptions

Über einen Builder erstellte Signierparameter für PdfSigner.

SignatureLevel level()
Optional<String> reason()
Optional<String> location()
Optional<String> contactInfo()
Optional<String> tsaUrl()
static SignOptions.Builder builder()

Builder: withLevel(SignatureLevel), withReason(String), withLocation(String), withContactInfo(String), withTsaUrl(String), build().

SignatureLevel (enum)

PAdES-Baseline-Stufen: B_B (basic), B_T (mit vertrauenswürdigem Zeitstempel).


Aufteilungs-Typen

SplitByBookmarksOptions

Über einen Builder erstellte Optionen für die lesezeichenbasierte Aufteilung.

int level()
Optional<String> filenamePrefix()
static SplitByBookmarksOptions.Builder builder()

Builder: withLevel(int), withFilenamePrefix(String), build().

BookmarkSegment

Ein geplantes Ausgabesegment aus einer Lesezeichen-Aufteilung.

BookmarkSegment(String title, int firstPage, int lastPage, String filename)
String title()
int firstPage()
int lastPage()
String filename()

Schwärzungs-Typen

RedactResult

Ergebnis von DocumentEditor.applyRedactionsDestructive().

RedactResult(int regionsApplied, boolean oracleVerified)
int regionsApplied()
boolean oracleVerified()

Konformitäts-Typen

ValidationResult

Ergebnis einer PdfValidator-Prüfung.

ValidationResult(boolean valid, List<ValidationViolation> violations)
boolean valid()
List<ValidationViolation> violations()

ValidationViolation

Ein einzelner Konformitätsverstoß.

ValidationViolation(String ruleId, String description, Integer pageIndex)
String ruleId()
String description()
Optional<Integer> pageIndex()

PdfALevel (enum)

A_1B, A_1A, A_2B, A_2A, A_2U, A_3B, A_3A, A_3U, A_4, A_4E.

PdfXLevel (enum)

X_1A_2001, X_1A_2003, X_3_2002, X_3_2003, X_4, X_4P, X_5G, X_5N, X_5PG, X_6, X_6P.

PdfUaLevel (enum)

UA_1, UA_2 — jede stellt int code() bereit.


Richtlinien-Typen

PolicyMode (enum)

COMPAT, STRICT.

SecurityPolicy

Über einen Builder erstellte Sicherheitsrichtlinie pro Operation.

PolicyMode mode()
List<String> additionalAllow()
List<String> additionalDeny()
static SecurityPolicy.Builder builder()

Builder: withMode(PolicyMode), allow(String algId), deny(String algId), build().


Render-Typen

PixelFormat (enum)

RGBA_8888, RGB_888, GRAY_8.


Fehlerbehandlung

Alle PDF-spezifischen Fehler werfen PdfException (eine ungeprüfte RuntimeException) oder eine ihrer Unterklassen. Jede Exception trägt ein PdfErrorKind kind().

import fyi.oxide.pdf.PdfDocument;
import fyi.oxide.pdf.exception.PdfException;

try (PdfDocument doc = PdfDocument.open("file.pdf")) {
    String text = doc.extractText(0);
} catch (PdfException e) {
    System.err.println(e.kind() + ": " + e.getMessage());
}

PdfException

PdfException(String message)
PdfException(PdfErrorKind kind, String message)
PdfException(PdfErrorKind kind, String message, Throwable cause)
PdfErrorKind kind()

Unterklassen

Exception Wird geworfen, wenn
PdfParseException Die Datei fehlerhaft oder kein gültiges PDF ist
PdfEncryptedException Das PDF verschlüsselt ist und kein/ein ungültiges Passwort angegeben wurde
PdfPermissionException Die angeforderte Operation durch Dokumentberechtigungen verweigert wird
PdfIoException Ein zugrunde liegender E/A-Fehler aufgetreten ist
PdfOcrUnavailableException OCR angefordert wurde, das OCR-Backend aber nicht verfügbar ist
PdfSignatureException Eine Signier- oder Verifizierungsoperation fehlgeschlagen ist
PdfInvalidStateException Eine Operation auf einem geschlossenen oder ungültigen Handle aufgerufen wurde
PdfUnsupportedException Eine angeforderte Funktion nicht unterstützt wird

PdfErrorKind (enum)

PARSE, ENCRYPTED, PERMISSION, IO, OCR_UNAVAILABLE, SIGNATURE, INVALID_STATE, UNSUPPORTED.


Vollständiges Beispiel

import fyi.oxide.pdf.PdfDocument;
import fyi.oxide.pdf.DocumentEditor;
import fyi.oxide.pdf.Pdf;
import fyi.oxide.pdf.AutoExtractor;
import fyi.oxide.pdf.auto.AutoResult;
import java.nio.file.Paths;

public class Example {
    public static void main(String[] args) throws Exception {
        // --- Extraction ---
        try (PdfDocument doc = PdfDocument.open(Paths.get("input.pdf"))) {
            System.out.println("Pages: " + doc.pageCount());
            for (int i = 0; i < doc.pageCount(); i++) {
                System.out.println(doc.extractText(i));
            }
            String markdown = doc.toMarkdown();

            // Adaptive extraction with OCR fallback
            AutoResult auto = AutoExtractor.balanced(doc).extractDocument();
            System.out.println("OCR used: " + auto.ocrUsed());
        }

        // --- Creation ---
        try (Pdf pdf = Pdf.fromMarkdown("# Report\n\nGenerated by PDF Oxide.")) {
            pdf.saveTo(Paths.get("report.pdf"));
        }

        // --- Editing ---
        try (DocumentEditor editor = DocumentEditor.open("form.pdf")) {
            editor.setFormField("name", "Jane Doe")
                  .setFormField("subscribe", true)
                  .scrubMetadata()
                  .saveTo(Paths.get("filled.pdf"));
        }
    }
}

Other Language Bindings

PDF Oxide bietet native Bindings für jedes wichtige Ökosystem: Rust, Python, Node.js, WASM, C#, Golang, PHP, Ruby, C++, Swift, Kotlin, Dart, R, Julia, Zig, Scala, Clojure, Objective-C und Elixir.

Nächste Schritte