Documentation
¶
Index ¶
- type Array
- type Bool
- type Dict
- func (d Dict) Delete(key string)
- func (d Dict) Get(key string) Object
- func (d Dict) GetArray(key string) (Array, bool)
- func (d Dict) GetBool(key string) (Bool, bool)
- func (d Dict) GetDict(key string) (Dict, bool)
- func (d Dict) GetIndirectRef(key string) (IndirectRef, bool)
- func (d Dict) GetInt(key string) (Int, bool)
- func (d Dict) GetName(key string) (Name, bool)
- func (d Dict) GetReal(key string) (Real, bool)
- func (d Dict) GetStream(key string) (*Stream, bool)
- func (d Dict) GetString(key string) (String, bool)
- func (d Dict) Has(key string) bool
- func (d Dict) Keys() []string
- func (d Dict) Set(key string, value Object)
- func (d Dict) String() string
- func (d Dict) Type() ObjectType
- type IndirectObject
- type IndirectRef
- type Int
- type Lexer
- type Name
- type Null
- type Object
- type ObjectStream
- func (os *ObjectStream) ContainsObject(objNum int) (bool, error)
- func (os *ObjectStream) Extends() *IndirectRef
- func (os *ObjectStream) First() int
- func (os *ObjectStream) GetObjectByIndex(index int) (Object, int, error)
- func (os *ObjectStream) GetObjectByNumber(objNum int) (Object, int, error)
- func (os *ObjectStream) N() int
- func (os *ObjectStream) ObjectNumbers() ([]int, error)
- type ObjectType
- type Parser
- type Real
- type Stream
- type String
- type Token
- type TokenType
- type XRefEntry
- type XRefEntryType
- type XRefParser
- func (x *XRefParser) FindXRef() (int64, error)
- func (x *XRefParser) ParseAllXRefs() ([]*XRefTable, error)
- func (x *XRefParser) ParsePrevXRef(table *XRefTable) (*XRefTable, error)
- func (x *XRefParser) ParseXRef(offset int64) (*XRefTable, error)
- func (x *XRefParser) ParseXRefFromEOF() (*XRefTable, error)
- type XRefTable
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Array ¶
type Array []Object
Array represents a PDF array
func (Array) Type ¶
func (a Array) Type() ObjectType
type Bool ¶
type Bool bool
Bool represents a PDF boolean
func (Bool) Type ¶
func (b Bool) Type() ObjectType
type Dict ¶
Dict represents a PDF dictionary
func (Dict) GetIndirectRef ¶
func (d Dict) GetIndirectRef(key string) (IndirectRef, bool)
GetIndirectRef retrieves an indirect reference
func (Dict) Type ¶
func (d Dict) Type() ObjectType
type IndirectObject ¶
type IndirectObject struct {
Ref IndirectRef
Object Object
}
IndirectObject represents an indirect object with its reference
type IndirectRef ¶
IndirectRef represents an indirect object reference
func (IndirectRef) String ¶
func (r IndirectRef) String() string
func (IndirectRef) Type ¶
func (r IndirectRef) Type() ObjectType
type Int ¶
type Int int64
Int represents a PDF integer
func (Int) Type ¶
func (i Int) Type() ObjectType
type Lexer ¶
type Lexer struct {
// contains filtered or unexported fields
}
Lexer performs lexical analysis of PDF content
type Name ¶
type Name string
Name represents a PDF name
func (Name) Type ¶
func (n Name) Type() ObjectType
type Null ¶
type Null struct{}
Null represents a PDF null object
func (Null) Type ¶
func (n Null) Type() ObjectType
type Object ¶
type Object interface {
Type() ObjectType
String() string
}
Object represents a PDF object
type ObjectStream ¶
type ObjectStream struct {
// contains filtered or unexported fields
}
ObjectStream represents a PDF Object Stream (Type /ObjStm) Object streams (PDF 1.5+) store multiple objects in a single compressed stream
func NewObjectStream ¶
func NewObjectStream(stream *Stream) (*ObjectStream, error)
NewObjectStream creates an ObjectStream from a Stream object Returns an error if the stream is not a valid object stream
func (*ObjectStream) ContainsObject ¶
func (os *ObjectStream) ContainsObject(objNum int) (bool, error)
ContainsObject checks if an object number is stored in this stream
func (*ObjectStream) Extends ¶
func (os *ObjectStream) Extends() *IndirectRef
Extends returns the reference to another object stream this one extends, or nil
func (*ObjectStream) First ¶
func (os *ObjectStream) First() int
First returns the byte offset to the first object in the decoded data
func (*ObjectStream) GetObjectByIndex ¶
func (os *ObjectStream) GetObjectByIndex(index int) (Object, int, error)
GetObjectByIndex extracts an object by its index within the stream (0-based) The index corresponds to the position in the header, not the object number
func (*ObjectStream) GetObjectByNumber ¶
func (os *ObjectStream) GetObjectByNumber(objNum int) (Object, int, error)
GetObjectByNumber finds and extracts an object by its object number Returns the object and its index, or an error if not found
func (*ObjectStream) N ¶
func (os *ObjectStream) N() int
N returns the number of objects in the stream
func (*ObjectStream) ObjectNumbers ¶
func (os *ObjectStream) ObjectNumbers() ([]int, error)
ObjectNumbers returns a slice of all object numbers stored in this stream
type ObjectType ¶
type ObjectType int
ObjectType represents the type of PDF object
const ( ObjNull ObjectType = iota ObjBool ObjInt ObjReal ObjString ObjName ObjArray ObjDict ObjStream ObjIndirect )
func (ObjectType) String ¶
func (t ObjectType) String() string
String returns the string representation of the object type
type Parser ¶
type Parser struct {
// contains filtered or unexported fields
}
Parser parses PDF objects using the Lexer
func (*Parser) ParseIndirectObject ¶
func (p *Parser) ParseIndirectObject() (*IndirectObject, error)
ParseIndirectObject parses an indirect object (num gen obj ... endobj)
func (*Parser) ParseObject ¶
ParseObject parses a PDF object
type Real ¶
type Real float64
Real represents a PDF real number
func (Real) Type ¶
func (r Real) Type() ObjectType
type Stream ¶
Stream represents a PDF stream object
func (*Stream) Decode ¶
Decode decodes the stream data according to its Filter(s) Returns decoded data or error
func (*Stream) Type ¶
func (s *Stream) Type() ObjectType
type String ¶
type String string
String represents a PDF string
func (String) Type ¶
func (s String) Type() ObjectType
type TokenType ¶
type TokenType int
TokenType represents the type of token
const ( TokenEOF TokenType = iota TokenWhitespace TokenComment TokenKeyword // true, false, null, obj, endobj, stream, endstream, etc. TokenInteger // 123 TokenReal // 3.14 TokenString // (hello) TokenHexString // <48656C6C6F> TokenName // /Type TokenArrayStart // [ TokenArrayEnd // ] TokenDictStart // << TokenDictEnd // >> TokenIndirectRef // R (after two numbers) )
type XRefEntry ¶
type XRefEntry struct {
Type XRefEntryType // Entry type (free, uncompressed, or compressed)
Offset int64 // Byte offset (uncompressed) or object stream number (compressed)
Generation int // Generation number (uncompressed) or index within object stream (compressed)
InUse bool // true if object is in use (Type != XRefEntryFree)
}
XRefEntry represents a single cross-reference table entry
type XRefEntryType ¶
type XRefEntryType int
XRefEntryType represents the type of an XRef entry
const ( // XRefEntryFree indicates a free (deleted) object entry XRefEntryFree XRefEntryType = 0 // XRefEntryUncompressed indicates an in-use object at a byte offset in the file XRefEntryUncompressed XRefEntryType = 1 // XRefEntryCompressed indicates an object stored in an object stream (PDF 1.5+) XRefEntryCompressed XRefEntryType = 2 )
func (XRefEntryType) String ¶
func (t XRefEntryType) String() string
String returns a human-readable representation of the entry type
type XRefParser ¶
type XRefParser struct {
// contains filtered or unexported fields
}
XRefParser parses PDF cross-reference tables
func NewXRefParser ¶
func NewXRefParser(r io.ReadSeeker) *XRefParser
NewXRefParser creates a new XRef parser
func (*XRefParser) FindXRef ¶
func (x *XRefParser) FindXRef() (int64, error)
FindXRef finds the byte offset of the XRef table by scanning from EOF PDFs end with "startxref\n<offset>\n%%EOF"
func (*XRefParser) ParseAllXRefs ¶
func (x *XRefParser) ParseAllXRefs() ([]*XRefTable, error)
ParseAllXRefs parses the main XRef table and all previous ones (incremental updates) Returns them in order from oldest to newest
func (*XRefParser) ParsePrevXRef ¶
func (x *XRefParser) ParsePrevXRef(table *XRefTable) (*XRefTable, error)
ParsePrevXRef checks if the trailer has a /Prev entry and parses that XRef table This handles incremental updates in PDFs
func (*XRefParser) ParseXRef ¶
func (x *XRefParser) ParseXRef(offset int64) (*XRefTable, error)
ParseXRef parses the XRef table at the given byte offset Handles both traditional XRef tables (PDF 1.0-1.4) and XRef streams (PDF 1.5+)
func (*XRefParser) ParseXRefFromEOF ¶
func (x *XRefParser) ParseXRefFromEOF() (*XRefTable, error)
ParseXRefFromEOF finds and parses the XRef table by scanning from EOF
type XRefTable ¶
type XRefTable struct {
Entries map[int]*XRefEntry // Map from object number to XRef entry
Trailer Dict // Trailer dictionary
IsStream bool // true if this XRef came from a stream (PDF 1.5+)
}
XRefTable represents a PDF cross-reference table
func MergeXRefTables ¶
MergeXRefTables merges multiple XRef tables (from incremental updates) Later entries override earlier ones