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,DocumentEditorundAutoCloseable. Verwenden Sie stets try-with-resources.close()ist idempotent; einCleanerals 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.
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
- Typen & Enums — alle gemeinsamen Typen und Enums
- Page-API-Referenz — konsistente Iteration pro Seite über alle Bindings hinweg
- Erste Schritte mit Java — Tutorial