Referência da API Java
O PDF Oxide oferece bindings Java nativos por meio de uma camada JNI sobre o núcleo em Rust. A biblioteca nativa embutida é carregada automaticamente no momento de carga da classe; binários nativos pré-compilados são distribuídos para Linux, macOS e Windows (x86_64 e ARM64).
<dependency>
<groupId>fyi.oxide</groupId>
<artifactId>pdf-oxide</artifactId>
<version>0.3.69</version>
</dependency>
Todas as classes vivem no pacote fyi.oxide.pdf e em seus subpacotes (fyi.oxide.pdf.geometry, fyi.oxide.pdf.text, fyi.oxide.pdf.form, etc.).
import fyi.oxide.pdf.PdfDocument;
import fyi.oxide.pdf.DocumentEditor;
import fyi.oxide.pdf.Pdf;
Ciclo de vida.
PdfDocument,DocumentEditoreAutoCloseable. Sempre use try-with-resources.close()é idempotente; um backstop viaCleanerlibera handles vazados, mas não se deve depender dele para uma limpeza pontual.Thread safety. Instâncias de documento não são thread-safe — abra uma por worker. Os helpers estáticos sem estado (
MarkdownConverter,PdfValidator,PdfPolicy) são thread-safe.
Para a API Rust, veja a Referência da API Rust. Para a API Python, veja a Referência da API Python.
PdfDocument
O ponto de entrada principal e somente leitura para um PDF — abre, extrai, renderiza e converte. Implementa 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));
}
Abertura (métodos de fábrica estáticos)
static PdfDocument open(Path path)
Abre um PDF a partir de um caminho no sistema de arquivos.
static PdfDocument open(String path)
Abre um PDF a partir de uma string de caminho.
static PdfDocument open(byte[] bytes)
Abre um PDF a partir de bytes em memória (por exemplo, baixados do S3 ou via HTTP).
static PdfDocument open(Path path, String password)
Abre um PDF criptografado a partir de um caminho com uma senha de usuário ou de proprietário.
static PdfDocument open(String path, String password)
Abre um PDF criptografado a partir de uma string de caminho com uma senha.
static PdfDocument open(byte[] bytes, String password)
Abre um PDF criptografado a partir de bytes com uma senha.
static PdfDocument open(InputStream stream)
Abre um PDF lendo todos os bytes de um InputStream.
Helpers estáticos de uma chamada
static String extractText(String path)
Abre, extrai todo o texto e fecha em uma única chamada (string de caminho).
static String extractText(Path path)
Abre, extrai todo o texto e fecha em uma única chamada (Path).
Autenticação
boolean authenticate(String password)
Autentica um PDF criptografado após a abertura; retorna true em caso de sucesso.
boolean authenticate(byte[] password)
Autentica com uma senha em bytes brutos.
Informações do documento
int pageCount()
Retorna o número de páginas do documento.
boolean isOpen()
Retorna true se o handle do documento ainda estiver aberto.
Extração de texto
String extractText(int pageIndex)
Extrai texto puro de uma única página indexada a partir de zero.
String extractTextAuto(int pageIndex)
Extrai texto de uma página, recorrendo automaticamente ao OCR para páginas digitalizadas.
String extractStructured(int page)
Extrai o conteúdo estruturado da página (spans, linhas, layout) como uma string JSON.
Conversão
String toMarkdown()
Converte o documento inteiro para Markdown.
String toMarkdown(int pageIndex)
Converte uma única página para Markdown.
String toHtml()
Converte o documento inteiro para HTML.
String toHtml(int pageIndex)
Converte uma única página para HTML.
Acesso ao DOM
PdfPage page(int index)
Retorna um handle lazy de PdfPage para o índice baseado em zero informado.
Renderização
byte[] render(int pageIndex)
Renderiza uma página para bytes PNG no DPI padrão.
byte[] render(int pageIndex, int dpi)
Renderiza uma página para bytes PNG no DPI informado.
Ciclo de vida
void close()
Libera o handle nativo subjacente. Idempotente.
DocumentEditor
Sessão de edição mutável sobre um PDF: preenchimento de formulários, redação, limpeza de metadados e salvamento. Os mutadores retornam this para encadeamento fluente. Implementa 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"));
}
Abertura (métodos de fábrica estáticos)
static DocumentEditor open(Path path)
Abre um PDF para edição a partir de um Path.
static DocumentEditor open(String path)
Abre um PDF para edição a partir de uma string de caminho.
static DocumentEditor open(byte[] bytes)
Abre um PDF para edição a partir de bytes em memória.
Campos de formulário
DocumentEditor setFormField(String name, String value)
Define o valor de um campo de formulário de texto ou de escolha pelo nome; retorna this.
DocumentEditor setFormField(String name, boolean checked)
Define um campo de formulário do tipo checkbox / radio pelo nome; retorna this.
Redação
DocumentEditor addRedaction(int pageIndex, BBox region)
Enfileira uma redação sobre uma região retangular de uma página; retorna this.
int redactionCount(int pageIndex)
Retorna o número de redações pendentes em uma página.
int redactionCount()
Retorna o número total de redações pendentes em todo o documento.
RedactResult applyRedactionsDestructive()
Aplica todas as redações enfileiradas, removendo permanentemente o conteúdo coberto; retorna um RedactResult.
Metadados
DocumentEditor scrubMetadata()
Remove as informações do documento e os metadados XMP; retorna this.
Salvamento
byte[] save()
Serializa o documento editado em um novo array de bytes (reescrita completa).
void saveTo(Path out)
Grava o documento editado em um arquivo (reescrita completa).
byte[] saveIncremental()
Serializa usando uma atualização incremental, preservando os bytes originais.
void saveIncrementalTo(Path out)
Grava uma atualização incremental em um arquivo.
Ciclo de vida
boolean isOpen()
void close()
Verifica se o editor está aberto e libera seu handle nativo.
Cria novos PDFs a partir de Markdown, HTML ou imagens, e divide PDFs existentes. Implementa AutoCloseable.
import fyi.oxide.pdf.Pdf;
try (Pdf pdf = Pdf.fromMarkdown("# Report\n\nGenerated by PDF Oxide.")) {
pdf.saveTo(Paths.get("report.pdf"));
}
Criação (métodos de fábrica estáticos)
static Pdf fromMarkdown(String markdown)
Cria um PDF a partir de conteúdo Markdown.
static Pdf fromHtml(String html)
Cria um PDF a partir de conteúdo HTML.
static Pdf fromImages(List<byte[]> images)
Cria um PDF de várias páginas, uma página por imagem (bytes JPEG/PNG).
Divisão
List<BookmarkSegment> planSplitByBookmarks(SplitByBookmarksOptions opts)
Calcula o plano de BookmarkSegment para divisão em um nível de marcador sem gravar a saída.
List<byte[]> splitByBookmarks(SplitByBookmarksOptions opts)
Divide o PDF no nível de marcador configurado, retornando um array de bytes por segmento.
static int planSplitByBookmarksCount(byte[] sourcePdf, int level)
Retorna quantos segmentos uma divisão por nível de marcador produziria, sem abrir um Pdf.
static byte[][] splitByBookmarksFromBytes(byte[] sourcePdf, int level)
Divide os bytes do PDF de origem no nível de marcador informado em uma única chamada estática.
Salvamento e ciclo de vida
byte[] save()
Serializa o PDF em um array de bytes.
void saveTo(Path out)
Grava o PDF em um arquivo.
boolean isOpen()
void close()
Verifica se o handle está aberto e libera os recursos nativos.
AutoExtractor
Extração adaptativa que classifica cada página (camada de texto vs. digitalizada) e aplica OCR onde necessário. Construído a partir de um PdfDocument aberto.
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());
}
Construção (métodos de fábrica estáticos)
static AutoExtractor of(PdfDocument doc)
Cria um extrator com a configuração padrão.
static AutoExtractor of(PdfDocument doc, AutoExtractConfig config)
Cria um extrator com um AutoExtractConfig explícito.
static AutoExtractor fast(PdfDocument doc)
Cria um extrator otimizado para velocidade (camada de texto primeiro).
static AutoExtractor balanced(PdfDocument doc)
Cria um extrator com um preset equilibrado entre velocidade e fidelidade.
static AutoExtractor highFidelity(PdfDocument doc)
Cria um extrator otimizado para máxima fidelidade (OCR agressivo).
Extração
String extractText()
Extrai texto puro de todo o documento.
String extractTextForPage(int pageIndex)
Extrai texto puro de uma única página.
AutoResult extractDocument()
Executa a extração adaptativa completa sobre o documento; retorna um AutoResult.
AutoResult extractAutoDocument()
Alias de extractDocument(), retornando o resultado completo do documento.
AutoResult extractPage(int pageIndex)
Executa a extração adaptativa para uma única página.
AutoResult extractAutoPage(int pageIndex)
Alias de extractPage() para uma única página.
Classificação
ClassifyResult classifyDocument()
Classifica todas as páginas sem extrair; retorna um ClassifyResult.
ClassifyResult classifyPage(int pageIndex)
Classifica uma única página.
Saída JSON
String extractDocumentJson()
Extrai todo o documento e serializa o resultado em JSON.
String extractPageJson(int pageIndex)
Extrai uma página e serializa o resultado em JSON.
Acessadores
PdfDocument document()
Retorna o PdfDocument subjacente.
AutoExtractConfig config()
Retorna a configuração ativa.
MarkdownConverter
Helpers estáticos sem estado e thread-safe para conversão de Markdown e HTML.
static String toMarkdown(PdfDocument doc, int pageIndex)
Converte uma única página para Markdown.
static String toMarkdown(PdfDocument doc)
Converte o documento inteiro para Markdown.
static String toHtml(PdfDocument doc, int pageIndex)
Converte uma única página para HTML.
static String toHtml(PdfDocument doc)
Converte o documento inteiro para HTML.
PdfSigner
Assinatura e verificação digital usando um keystore PKCS#12.
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)
Carrega um signatário a partir de um arquivo de keystore PKCS#12.
static PdfSigner fromPkcs12(byte[] keystoreBytes, String password)
Carrega um signatário a partir de bytes de keystore PKCS#12 em memória.
byte[] sign(byte[] pdf, SignOptions opts)
Assina os bytes do PDF com o certificado configurado e SignOptions; retorna o PDF assinado.
boolean verify(byte[] pdf)
Verifica as assinaturas embutidas em um PDF; retorna true se válidas.
static SignatureLevel classifyLevel(byte[] pdf)
Classifica o nível de assinatura PAdES de um PDF assinado; retorna um SignatureLevel.
PdfValidator
Validação de conformidade PDF/A, PDF/X e PDF/UA, sem estado e thread-safe.
static boolean isPdfA(PdfDocument doc, PdfALevel level)
Verificação booleana rápida de conformidade PDF/A em um determinado nível.
static boolean isPdfUa(PdfDocument doc, PdfUaLevel level)
Verificação booleana rápida de conformidade PDF/UA em um determinado nível.
static ValidationResult validatePdfA(PdfDocument doc, PdfALevel level)
Valida contra um nível PDF/A; retorna um ValidationResult com violações.
static ValidationResult validatePdfX(PdfDocument doc, PdfXLevel level)
Valida contra um nível PDF/X.
static ValidationResult validatePdfUa(PdfDocument doc, PdfUaLevel level)
Valida contra um nível PDF/UA.
PdfPolicy
Política de segurança válida para todo o processo, que controla quais algoritmos criptográficos são permitidos. Acessadores estáticos thread-safe.
static PolicyMode current()
Retorna o modo de política atualmente ativo.
static void set(PolicyMode mode)
Define o modo de política para todo o processo.
static PolicyMode compat()
Retorna a constante do modo de compatibilidade permissivo.
static PolicyMode strict()
Retorna a constante do modo estrito.
static PolicyMode fipsStrict()
Retorna a constante do modo FIPS-strict.
PdfPage
Um handle lazy de página retornado por PdfDocument.page(int). As propriedades são despachadas para o documento pai no momento do acesso.
PdfDocument parent()
Retorna o documento proprietário.
int index()
Retorna o índice de página baseado em zero.
BBox mediaBox()
Retorna o MediaBox da página como um BBox.
BBox cropBox()
Retorna o CropBox da página.
double width()
double height()
Retorna a largura e a altura da página em pontos PDF.
int rotation()
Retorna a rotação da página em graus (0, 90, 180, 270).
String text()
Extrai todo o texto puro da página.
String text(BBox region)
Extrai o texto dentro de uma região retangular.
List<TextWord> words()
Retorna o texto por palavra com bounding boxes (TextWord).
List<TextLine> lines()
Retorna o texto por linha (TextLine).
List<TextChar> chars()
Retorna os dados por caractere (TextChar).
Tipos de geometria
BBox
Bounding box imutável e alinhado aos eixos em coordenadas PDF.
BBox(double x0, double y0, double x1, double y1)
double x0()
double y0()
double x1()
double y1()
double width()
double height()
Rect
Retângulo de posição e tamanho (origem + largura/altura).
Rect(double x, double y, double width, double height)
double x()
double y()
double width()
double height()
BBox toBBox()
Point
Um ponto 2-D.
Point(double x, double y)
double x()
double y()
Color
Cor RGBA de 8 bits.
Color(int r, int g, int b, int a)
Color(int r, int g, int b)
int r()
int g()
int b()
int a()
Tipos de texto
TextChar
Um único caractere decodificado com posição e confiança de OCR.
TextChar(int codepoint, BBox bbox, float confidence)
int codepoint()
BBox bbox()
float confidence()
String asString()
TextWord
Uma palavra delimitada por espaços em branco com limites e confiança.
TextWord(String text, BBox bbox, float confidence)
String text()
BBox bbox()
float confidence()
TextLine
Uma linha de texto composta por palavras.
TextLine(String text, BBox bbox, List<TextWord> words)
String text()
BBox bbox()
List<TextWord> words()
TextSpan
Um trecho de texto com estilo idêntico.
TextSpan(String text, BBox bbox, TextStyle style)
String text()
BBox bbox()
TextStyle style()
TextStyle
Metadados de fonte e estilo de um span.
TextStyle(String font, double size, Color color, boolean bold, boolean italic)
double size()
Color color()
boolean bold()
boolean italic()
Tipos de tabela
Table
Uma tabela detectada com grade de células.
Table(BBox bbox, int rows, int cols, List<TableCell> cells)
BBox bbox()
int rows()
int cols()
List<TableCell> cells()
TableCell
Uma única célula, incluindo informações de span.
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()
Tipos de imagem
ExtractedImage
Uma imagem raster extraída de uma página.
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.
Tipos de busca
SearchOptions
Parâmetros de busca configurados por builder.
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
O resultado completo de uma consulta.
SearchResult(String query, List<SearchMatch> matches)
String query()
List<SearchMatch> matches()
int count()
boolean isEmpty()
SearchMatch
Uma única ocorrência com página e localização.
SearchMatch(int pageIndex, BBox bbox, String text)
int pageIndex()
BBox bbox()
String text()
Tipos de formulário
FormField
Um campo de AcroForm.
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.
Tipos de anotação
Annotation
Uma anotação de página.
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.
Tipos de metadados
DocumentInfo
Campos padrão do dicionário de informações do documento.
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
Pacote bruto de metadados XMP.
XmpMetadata(String xml)
String xml()
boolean isEmpty()
Tipos de extração automática
AutoExtractConfig
Configuração imutável, construída por builder, para o 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()
Métodos do Builder: 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
Resultado de uma extração adaptativa.
String text()
Optional<String> markdown()
Optional<String> html()
ExtractReason reason()
double confidence()
boolean ocrUsed()
List<RegionResult> regions()
List<Integer> pagesNeedingOcr()
RegionResult
Resultado de extração por região.
int pageIndex()
BBox bbox()
String text()
ExtractReason reason()
double confidence()
boolean ocrUsed()
Optional<Table> table()
ClassifyResult
Resultado da classificação de páginas.
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.
Tipos de assinatura
SignOptions
Parâmetros de assinatura construídos por builder para o 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)
Níveis baseline PAdES: B_B (básico), B_T (com timestamp confiável).
Tipos de divisão
SplitByBookmarksOptions
Opções construídas por builder para divisão baseada em marcadores.
int level()
Optional<String> filenamePrefix()
static SplitByBookmarksOptions.Builder builder()
Builder: withLevel(int), withFilenamePrefix(String), build().
BookmarkSegment
Um segmento de saída planejado a partir de uma divisão por marcadores.
BookmarkSegment(String title, int firstPage, int lastPage, String filename)
String title()
int firstPage()
int lastPage()
String filename()
Tipos de redação
RedactResult
Resultado de DocumentEditor.applyRedactionsDestructive().
RedactResult(int regionsApplied, boolean oracleVerified)
int regionsApplied()
boolean oracleVerified()
Tipos de conformidade
ValidationResult
Resultado de uma verificação do PdfValidator.
ValidationResult(boolean valid, List<ValidationViolation> violations)
boolean valid()
List<ValidationViolation> violations()
ValidationViolation
Uma única violação de conformidade.
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 — cada um expõe int code().
Tipos de política
PolicyMode (enum)
COMPAT, STRICT.
SecurityPolicy
Política de segurança por operação, construída por builder.
PolicyMode mode()
List<String> additionalAllow()
List<String> additionalDeny()
static SecurityPolicy.Builder builder()
Builder: withMode(PolicyMode), allow(String algId), deny(String algId), build().
Tipos de renderização
PixelFormat (enum)
RGBA_8888, RGB_888, GRAY_8.
Tratamento de erros
Todas as falhas específicas de PDF lançam PdfException (uma RuntimeException não verificada) ou uma de suas subclasses. Toda exceção carrega um 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()
Subclasses
| Exceção | Lançada quando |
|---|---|
PdfParseException |
O arquivo está malformado ou não é um PDF válido |
PdfEncryptedException |
O PDF está criptografado e nenhuma senha (ou uma senha inválida) foi fornecida |
PdfPermissionException |
A operação solicitada é negada pelas permissões do documento |
PdfIoException |
Ocorreu um erro de I/O subjacente |
PdfOcrUnavailableException |
O OCR foi solicitado, mas o backend de OCR está indisponível |
PdfSignatureException |
Uma operação de assinatura ou verificação falhou |
PdfInvalidStateException |
Uma operação foi chamada em um handle fechado ou inválido |
PdfUnsupportedException |
Um recurso solicitado não é suportado |
PdfErrorKind (enum)
PARSE, ENCRYPTED, PERMISSION, IO, OCR_UNAVAILABLE, SIGNATURE, INVALID_STATE, UNSUPPORTED.
Exemplo completo
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
O PDF Oxide oferece bindings nativos para todos os principais ecossistemas: Rust, Python, Node.js, WASM, C#, Golang, PHP, Ruby, C++, Swift, Kotlin, Dart, R, Julia, Zig, Scala, Clojure, Objective-C e Elixir.
Próximos passos
- Tipos e Enums — todos os tipos e enums compartilhados
- Referência da API Page — iteração consistente por página entre os bindings
- Primeiros Passos com Java — tutorial