Skip to content

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