Tipos e Enums
Todos os tipos públicos em pdf_oxide, organizados por categoria. Para documentação em nível de método, veja a Referência da API Rust.
Geometria
Point
pub struct Point {
pub x: f64,
pub y: f64,
}
Um ponto 2D no espaço de coordenadas PDF (origem no canto inferior esquerdo, Y cresce para cima).
Rect
pub struct Rect {
pub x0: f64,
pub y0: f64,
pub x1: f64,
pub y1: f64,
}
Um retângulo alinhado aos eixos. (x0, y0) é o canto inferior esquerdo, (x1, y1) é o canto superior direito. Todas as coordenadas estão em pontos PDF (1 ponto = 1/72 polegada).
Python: Acessível como uma tupla (x0, y0, x1, y1).
Matrix
pub struct Matrix {
pub a: f64,
pub b: f64,
pub c: f64,
pub d: f64,
pub e: f64,
pub f: f64,
}
Uma matriz de transformação afim 3x3 no formato da especificação PDF:
| a b 0 |
| c d 0 |
| e f 1 |
Usada para posicionamento de texto, colocação de imagens e transformações de Form XObject.
Texto
TextoSpan
pub struct TextSpan {
pub text: String,
pub x: f64,
pub y: f64,
pub font_name: String,
pub font_size: f64,
pub bbox: Rect,
}
Um trecho de texto com estilo idêntico. Retornado por extract_spans().
TextoChar
pub struct TextChar {
pub char: char,
pub x: f64,
pub y: f64,
pub font_size: f64,
pub font_name: String,
pub bbox: Rect,
}
Um único caractere com posicionamento preciso. Retornado por extract_chars().
Campos Python:
| Campo | Tipo | Descrição |
|---|---|---|
char |
str |
O caractere |
bbox |
tuple[float, float, float, float] |
Caixa delimitadora (x0, y0, x1, y1) |
font_name |
str |
Nome da fonte |
font_size |
float |
Tamanho da fonte em pontos |
origin_x |
float |
Origem X da linha de base |
origin_y |
float |
Origem Y da linha de base |
rotation_degrees |
float |
Ângulo de rotação (0–360) |
advance_width |
float |
Distância até a próxima posição do caractere |
FontWeight
pub enum FontWeight {
Thin, // 100
ExtraLight, // 200
Light, // 300
Normal, // 400
Medium, // 500
SemiBold, // 600
Bold, // 700
ExtraBold, // 800
Black, // 900
}
Color
pub struct Color {
pub r: f64,
pub g: f64,
pub b: f64,
}
Cor RGB com componentes no intervalo de 0.0 a 1.0.
Página
PáginaSize
pub enum PageSize {
Letter, // 612 x 792 pt (8.5 x 11 in)
A4, // 595.28 x 841.89 pt (210 x 297 mm)
Legal, // 612 x 1008 pt (8.5 x 14 in)
A3, // 841.89 x 1190.55 pt
A5, // 419.53 x 595.28 pt
Custom(f32, f32), // Custom width x height in points
}
Métodos:
| Método | Retorno | Descrição |
|---|---|---|
dimensions() |
(f32, f32) |
Largura e altura em pontos |
PáginaInfo
pub struct PageInfo {
pub width: f64,
pub height: f64,
pub rotation: i32,
pub media_box: Rect,
pub crop_box: Option<Rect>,
pub trim_box: Option<Rect>,
pub bleed_box: Option<Rect>,
pub art_box: Option<Rect>,
}
PáginaLabelStyle
pub enum PageLabelStyle {
Decimal, // 1, 2, 3, ...
UpperRoman, // I, II, III, ...
LowerRoman, // i, ii, iii, ...
UpperAlpha, // A, B, C, ...
LowerAlpha, // a, b, c, ...
None, // No numbering
}
PáginaLabelRange
pub struct PageLabelRange {
pub start_page: usize,
pub style: PageLabelStyle,
pub prefix: Option<String>,
pub start_number: Option<usize>,
}
Define um intervalo de rótulo de página. Por exemplo, um intervalo começando na página 0 com estilo LowerRoman e número inicial 1 rotula as páginas como i, ii, iii, e assim por diante.
Imagens
ImageFormat
pub enum ImageFormat {
Jpeg,
Png,
Tiff,
Bmp,
Gif,
Jp2,
Jbig2,
Ccitt,
Raw,
Unknown,
}
ColorSpace
pub enum ColorSpace {
DeviceRGB,
DeviceCMYK,
DeviceGray,
ICCBased,
CalRGB,
CalGray,
Lab,
Indexed,
Pattern,
Separation,
DeviceN,
Unknown,
}
ImageInfo
pub struct ImageContent {
pub width: u32,
pub height: u32,
pub bits_per_component: u8,
pub color_space: ColorSpace,
pub format: ImageFormat,
pub data: Vec<u8>,
pub bbox: Rect,
pub horizontal_dpi: Option<f32>,
pub vertical_dpi: Option<f32>,
}
Métodos:
| Método | Retorno | Descrição |
|---|---|---|
resolution() |
Option<(f32, f32)> |
DPI como (horizontal, vertical) |
is_high_resolution() |
bool |
DPI >= 300 |
is_medium_resolution() |
bool |
DPI 150–299 |
is_low_resolution() |
bool |
DPI < 150 |
calculate_dpi() |
Option<(f32, f32)> |
Calcular a partir de dimensões em pixels e bbox |
Caminhos
PathContent
pub struct PathContent {
pub operations: Vec<PathOperation>,
pub stroke_color: Option<Color>,
pub fill_color: Option<Color>,
pub stroke_width: f32,
pub line_cap: LineCap,
pub line_join: LineJoin,
pub bbox: Rect,
}
PathOperation
pub enum PathOperation {
MoveTo { x: f64, y: f64 },
LineTo { x: f64, y: f64 },
CurveTo { x1: f64, y1: f64, x2: f64, y2: f64, x3: f64, y3: f64 },
ClosePath,
Rect { x: f64, y: f64, width: f64, height: f64 },
}
LineCap
pub enum LineCap {
Butt, // Square end at endpoint (default)
Round, // Semicircle at endpoint
Square, // Square extends half line width past endpoint
}
LineJoin
pub enum LineJoin {
Miter, // Sharp corner (default)
Round, // Rounded corner
Bevel, // Flat corner
}
BlendMode
pub enum BlendMode {
Normal,
Multiply,
Screen,
Overlay,
Darken,
Lighten,
ColorDodge,
ColorBurn,
HardLight,
SoftLight,
Difference,
Exclusion,
}
Usado no estado gráfico para composição de transparência. Definido via ExtGState ou a API de gráficos.
Elementos de Conteúdo
ConteúdoElement
O tipo união para todos os elementos de conteúdo da página:
pub enum ContentElement {
Text(TextContent),
Image(ImageContent),
Path(PathContent),
Table(TableContent),
Structure(StructureElement),
}
TextoContent
pub struct TextContent {
pub text: String,
pub font_name: String,
pub font_size: f64,
pub font_weight: FontWeight,
pub font_style: FontStyle,
pub color: Color,
pub bbox: Rect,
}
FontStyle
pub enum FontStyle {
Normal,
Italic,
Oblique,
}
TextoStyle
pub struct TextStyle {
pub font_name: String,
pub font_size: f64,
pub font_weight: FontWeight,
pub font_style: FontStyle,
pub color: Color,
}
TableContent
pub struct TableContent {
pub rows: Vec<TableRowContent>,
pub column_count: usize,
pub has_header: bool,
pub caption: Option<String>,
pub style: Option<TableContentStyle>,
pub source: TableSource,
pub bbox: Rect,
}
TableRowContent
pub struct TableRowContent {
pub cells: Vec<TableCellContent>,
pub is_header: bool,
}
TableCellContent
pub struct TableCellContent {
pub text: String,
pub row_span: usize,
pub col_span: usize,
pub alignment: TableCellAlign,
pub vertical_alignment: TableCellVAlign,
pub bbox: Rect,
}
TableCellAlign / TableCellVAlign
pub enum TableCellAlign {
Left,
Center,
Right,
}
pub enum TableCellVAlign {
Top,
Middle,
Bottom,
}
TableSource
pub enum TableSource {
StructureTree, // From tagged PDF structure
Geometric, // Detected from layout analysis
Manual, // User-created
}
EstruturaElement
pub struct StructureElement {
pub structure_type: String,
pub children: Vec<ContentElement>,
pub alt_text: Option<String>,
pub actual_text: Option<String>,
pub language: Option<String>,
}
Anotações
AnnotationType
pub enum AnnotationSubtype {
Text,
Link,
FreeText,
Line,
Square,
Circle,
Polygon,
PolyLine,
Highlight,
Underline,
Squiggly,
StrikeOut,
Stamp,
Caret,
Ink,
Popup,
FileAttachment,
Sound,
Movie,
Screen,
Widget,
PrinterMark,
TrapNet,
Watermark,
ThreeD,
Redact,
RichMedia,
Unknown,
}
TextoAnnotationIcon
pub enum TextAnnotationIcon {
Comment,
Key,
Note,
Help,
NewParagraph,
Paragraph,
Insert,
Check,
Circle,
Cross,
RightArrow,
RightPointer,
Star,
UpArrow,
UpLeftArrow,
}
StampType
pub enum StampType {
Approved,
Experimental,
NotApproved,
AsIs,
Expired,
NotForPublicRelease,
Confidential,
Final,
Sold,
Departmental,
ForComment,
TopSecret,
Draft,
ForPublicRelease,
}
Códigos de Barras
BarcodeType
Requer a flag de feature barcodes.
pub enum BarcodeType {
QrCode,
Code128,
Ean13,
UpcA,
Code39,
Itf,
}
Python: Os tipos de código de barras são passados como strings: "code128", "ean13", "upca", "code39", "ean8", "itf".
Formulários
FieldType / FormFieldType
pub enum FormFieldType {
Text,
Button,
Choice,
Signature,
}
FormField
pub struct FormField {
pub name: String,
pub field_type: FormFieldType,
pub value: FormFieldValue,
pub rect: Option<Rect>,
pub page_index: Option<usize>,
pub readonly: bool,
pub required: bool,
}
FormFieldValue
pub enum FormFieldValue {
None,
Text(String),
Boolean(bool),
Choice(String),
MultiChoice(Vec<String>),
}
Métodos:
| Método | Retorno | Descrição |
|---|---|---|
is_none() |
bool |
Verificar se o valor é None |
as_text() |
Option<&str> |
Obter valor de texto |
as_bool() |
Option<bool> |
Obter valor booleano |
as_choice() |
Option<&str> |
Obter valor de escolha |
as_multi_choice() |
Option<&[String]> |
Obter valores de múltipla escolha |
Busca
BuscaOptions
pub struct SearchOptions {
pub case_sensitive: bool,
pub literal: bool,
pub whole_word: bool,
pub max_results: Option<usize>,
pub page_range: Option<(usize, usize)>,
}
BuscaResult
pub struct SearchResult {
pub page_index: usize,
pub text: String,
pub bbox: Rect,
pub context: Option<String>,
}
Retornado por Pdf::search() e PdfDocument::search(). Cada resultado inclui a página onde a correspondência foi encontrada, o texto correspondente, suas coordenadas de caixa delimitadora e contexto circundante opcional.
Configuração
ConversionOptions
pub struct ConversionOptions {
pub preserve_layout: bool,
pub detect_headings: bool,
pub extract_tables: bool,
pub include_images: bool,
pub image_output_dir: Option<String>,
pub embed_images: bool,
// ... additional fields
}
TextoConfig
pub struct TextConfig {
pub detect_headings: bool,
pub detect_lists: bool,
pub detect_tables: bool,
pub merge_spans: bool,
}
RenderOptions
Requer a flag de feature rendering.
pub struct RenderOptions {
pub dpi: f32,
pub background_color: Option<Color>,
pub format: ImageFormat,
}
CriptografiaConfig
pub struct CriptografiaConfig {
pub user_password: String,
pub owner_password: String,
pub algorithm: CriptografiaAlgorithm,
pub permissions: Permissions,
}
Construtor:
CriptografiaConfig::new("user_pass", "owner_pass")
.with_algorithm(CriptografiaAlgorithm::Aes256)
.with_permissions(Permissions::read_only())
CriptografiaAlgorithm
pub enum CriptografiaAlgorithm {
Rc4_40, // V=1, R=2, 40-bit (legacy)
Rc4_128, // V=2, R=3, 128-bit (legacy)
Aes128, // V=4, R=4, 128-bit
Aes256, // V=5, R=6, 256-bit (default, recommended)
}
Permissions
pub struct Permissions {
pub print: bool,
pub copy: bool,
pub modify: bool,
pub annotate: bool,
pub fill_forms: bool,
pub extract: bool,
}
Métodos de fábrica:
| Método | Descrição |
|---|---|
Permissions::all() |
Todas as permissões habilitadas |
Permissions::read_only() |
Apenas visualização permitida |
PdfConfig
pub struct PdfConfig {
pub page_size: PageSize,
pub margins: (f32, f32, f32, f32), // left, right, top, bottom
pub font_size: f32,
pub line_height: f32,
pub title: Option<String>,
pub author: Option<String>,
pub subject: Option<String>,
pub keywords: Option<String>,
}
Layout de Texto
TextoAlign
pub enum TextAlign {
Left,
Center,
Right,
Justify,
}
RectFilterMode
Para extração espacial de texto:
pub enum RectFilterMode {
Intersects, // Any overlap (default)
FullyContained, // Completely within bounds
MinOverlap(f32), // Minimum overlap fraction (0.0-1.0)
}
Tipos de Conformidade
Veja as páginas PDF/A, PDF/UA, e PDF/X para documentação completa de conformidade.
PdfALevel
pub enum PdfALevel {
A1a, A1b,
A2a, A2b, A2u,
A3a, A3b, A3u,
}
PdfUaLevel
pub enum PdfUaLevel {
UA1,
UA2,
}
PdfXLevel
pub enum PdfXLevel {
X1a2001, X1a2003,
X3_2002, X3_2003,
X4, X4p,
X5g, X5n, X5pg,
X6, X6n, X6p,
}
Tipos de Erro
PdfError
pub enum PdfError {
Io(std::io::Error),
Parse(String),
Password,
PageOutOfRange { index: usize, count: usize },
}
| Variante | Descrição |
|---|---|
Io |
Falha no sistema de arquivos ou E/S |
Parse |
Estrutura PDF malformada |
Password |
Documento é criptografado e nenhuma senha foi fornecida |
PageOutOfRange |
Índice de página solicitado excede a contagem de páginas |
Próximos Passos
- Referência da API Rust – method-level documentation
- Referência da API Python – bindings Python
- Primeiros Passos com Rust – tutorial