pdfcpu

package
v1.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 21, 2019 License: Apache-2.0 Imports: 34 Imported by: 0

Documentation

Overview

Package pdfcpu is a simple PDF processing library written in Go supporting encryption. It provides an API and a command line interface. Supported are all versions up to PDF 1.7 (ISO-32000).

The commands are:

attachments	list, add, remove, extract embedded file attachments
changeopw	change owner password
changeupw	change user password
decrypt		remove password protection
encrypt		set password protection
extract		extract images, fonts, content, pages or metadata
grid		rearrange pages orimages for enhanced browsing experience
import		import/convert images
merge		concatenate 2 or more PDFs
nup			rearrange pages or images for reduced number of pages
optimize	optimize PDF by getting rid of redundant page resources
pages		insert, remove selected pages
paper		print list of supported paper sizes
permissions	list, add user access permissions
rotate		rotate pages
split		split multi-page PDF into several PDFs according to split span
stamp		add text, image or PDF stamp to selected pages
trim		create trimmed version with selected pages
validate	validate PDF against PDF 32000-1:2008 (PDF 1.7)
version		print version
watermark	add text, image or PDF watermark to selected pages

Index

Constants

View Source
const (
	DeviceGrayCS = "DeviceGray"
	DeviceRGBCS  = "DeviceRGB"
	DeviceCMYKCS = "DeviceCMYK"
	CalGrayCS    = "CalGray"
	CalRGBCS     = "CalRGB"
	LabCS        = "Lab"
	ICCBasedCS   = "ICCBased"
	IndexedCS    = "Indexed"
	PatternCS    = "Pattern"
	SeparationCS = "Separation"
	DeviceNCS    = "DeviceN"
)

PDF defines the following Color Spaces:

View Source
const (

	// ValidationStrict ensures 100% compliance with the spec (PDF 32000-1:2008).
	ValidationStrict = 0

	// ValidationRelaxed ensures PDF compliance based on frequently encountered validation errors.
	ValidationRelaxed = 1

	// StatsFileNameDefault is the standard stats filename.
	StatsFileNameDefault = "stats.csv"

	// PermissionsAll enables all user access permission bits.
	PermissionsAll int16 = -1 // 0xFFFF

	// PermissionsNone disables all user access permissions bits.
	PermissionsNone int16 = -3901 // 0xF0C3

)
View Source
const (
	TopLeft anchor = iota
	TopCenter
	TopRight
	Left
	Center // default
	Right
	BottomLeft
	BottomCenter
	BottomRight
	Full // special case, no anchor needed, imageSize = pageSize
)

These are the defined anchors for relative positioning.

View Source
const (
	RightDown orientation = iota
	DownRight
	LeftDown
	DownLeft
)

These are the defined anchors for relative positioning.

View Source
const (
	RootVersion = iota
	RootExtensions
	RootPageLabels
	RootNames
	RootDests
	RootViewerPrefs
	RootPageLayout
	RootPageMode
	RootOutlines
	RootThreads
	RootOpenAction
	RootAA
	RootURI
	RootAcroForm
	RootMetadata
	RootStructTreeRoot
	RootMarkInfo
	RootLang
	RootSpiderInfo
	RootOutputIntents
	RootPieceInfo
	RootOCProperties
	RootPerms
	RootLegal
	RootRequirements
	RootCollection
	RootNeedsRendering
)

The PDF root object fields.

View Source
const (
	PageLastModified = iota
	PageResources
	PageMediaBox
	PageCropBox
	PageBleedBox
	PageTrimBox
	PageArtBox
	PageBoxColorInfo
	PageContents
	PageRotate
	PageGroup
	PageThumb
	PageB
	PageDur
	PageTrans
	PageAnnots
	PageAA
	PageMetadata
	PagePieceInfo
	PageStructParents
	PageID
	PagePZ
	PageSeparationInfo
	PageTabs
	PageTemplateInstantiated
	PagePresSteps
	PageUserUnit
	PageVP
)

The PDF page object fields.

View Source
const (
	EolLF   = "\x0A"
	EolCR   = "\x0D"
	EolCRLF = "\x0D\x0A"
)

Supported line delimiters

View Source
const (
	// PDFCPUVersion returns the current pdfcpu version.
	PDFCPUVersion = "0.1.25"

	// PDFCPULongVersion returns pdfcpu's signature.
	PDFCPULongVersion = "pdfcpu v" + PDFCPUVersion
)
View Source
const FreeHeadGeneration = 65535

FreeHeadGeneration is the predefined generation number for the head of the free list.

View Source
const (

	// ObjectStreamMaxObjects limits the number of objects within an object stream written.
	ObjectStreamMaxObjects = 100
)

Variables

View Source
var (
	ErrUnsupportedColorSpace   = errors.New("unsupported color space")
	ErrUnsupported16BPC        = errors.New("unsupported 16 bits per component")
	ErrUnsupportedTIFFCreation = errors.New("unsupported tiff file creation")
)

Errors to be identified.

View Source
var PaperSize = map[string]*dim{}/* 150 elements not displayed */

PaperSize is a map of known paper sizes in user units (=72 dpi pixels).

Functions

func AddWatermarks

func AddWatermarks(ctx *Context, selectedPages IntSet, wm *Watermark) error

AddWatermarks adds watermarks to all pages selected.

func AppendPageTree

func AppendPageTree(d1 *IndirectRef, countd1 int, d2 *Dict) error

AppendPageTree appends a pagetree d1 to page tree d2.

func AppendStatsFile

func AppendStatsFile(ctx *Context) error

AppendStatsFile appends a stats line for this xRefTable to the configured csv file name.

func AttachAdd

func AttachAdd(xRefTable *XRefTable, files StringSet) (ok bool, err error)

AttachAdd embeds specified files. Existing attachments are replaced. ok returns true if at least one attachment was added.

func AttachExtract

func AttachExtract(ctx *Context, files StringSet) (err error)

AttachExtract exports specified embedded files. If no files specified extract all embedded files.

func AttachList

func AttachList(xRefTable *XRefTable) (list []string, err error)

AttachList returns a list of embedded files.

func AttachRemove

func AttachRemove(xRefTable *XRefTable, files StringSet) (ok bool, err error)

AttachRemove deletes specified embedded files. ok returns true if at least one attachment could be removed.

func CreatePDF

func CreatePDF(xRefTable *XRefTable, dirName, fileName string) error

CreatePDF creates a PDF file for an xRefTable.

func DateString

func DateString(t time.Time) string

DateString returns a string representation of t.

func DecodeUTF16String

func DecodeUTF16String(s string) (string, error)

DecodeUTF16String decodes a UTF16BE string from a hex string.

func Escape

func Escape(s string) (*string, error)

Escape applies all defined escape sequences to s.

func ExtractAllFontData

func ExtractAllFontData(ctx *Context, objNr int) (*FontObject, *StreamDict, error)

ExtractAllFontData extract all embedded fonts returns the font object and the stream dictionary

func ExtractStreamData

func ExtractStreamData(ctx *Context, objNr int) (data []byte, err error)

ExtractStreamData extracts the content of a stream dict for a specific objNr.

func HexLiteralToString

func HexLiteralToString(hexString string) (string, error)

HexLiteralToString returns a possibly UTF16 encoded string for a hex string.

func IntMemberOf

func IntMemberOf(i int, list []int) bool

IntMemberOf returns true if list contains i.

func IsStringUTF16BE

func IsStringUTF16BE(s string) bool

IsStringUTF16BE checks a string for Big Endian byte order BOM.

func IsUTF16BE

func IsUTF16BE(b []byte) (ok bool, err error)

IsUTF16BE checks for Big Endian byte order mark.

func MemberOf

func MemberOf(s string, list []string) bool

MemberOf returns true if list contains s.

func MergeXRefTables

func MergeXRefTables(ctxSource, ctxDest *Context) (err error)

MergeXRefTables merges Context ctxSource into ctxDest by appending its page tree.

func NUpFromPDF

func NUpFromPDF(ctx *Context, selectedPages IntSet, nup *NUp) error

NUpFromPDF creates an n-up version of the PDF represented by xRefTable.

func OptimizeXRefTable

func OptimizeXRefTable(ctx *Context) error

OptimizeXRefTable optimizes an xRefTable by locating and getting rid of redundant embedded fonts and images.

func ParseNUpDetails

func ParseNUpDetails(s string, nup *NUp) error

ParseNUpDetails parses a NUp command string into an internal structure.

func ParseNUpGridDefinition

func ParseNUpGridDefinition(s1, s2 string, nUp *NUp) error

ParseNUpGridDefinition parses NUp grid dimensions into an internal structure.

func ParseNUpValue

func ParseNUpValue(s string, nUp *NUp) error

ParseNUpValue parses the NUp value into an internal structure.

func Permissions

func Permissions(ctx *Context) (list []string)

Permissions returns a list of set permissions.

func RotatePages

func RotatePages(ctx *Context, selectedPages IntSet, rotation int) error

RotatePages rotates all selected pages by a multiple of 90 degrees.

func StringLiteralToString

func StringLiteralToString(s string) (string, error)

StringLiteralToString returns the best possible string rep for a string literal.

func TimingStats

func TimingStats(op string, durRead, durVal, durOpt, durWrite, durTotal float64)

TimingStats prints processing time stats for an operation.

func Unescape

func Unescape(s string) ([]byte, error)

Unescape resolves all escape sequences of s.

func ValidationTimingStats

func ValidationTimingStats(dur1, dur2, dur float64)

ValidationTimingStats prints processing time stats for validation.

func Write

func Write(ctx *Context) error

Write generates a PDF file for the cross reference table contained in Context.

func WriteImage

func WriteImage(xRefTable *XRefTable, filename string, sd *StreamDict, objNr int) (fileName string, err error)

WriteImage writes a PDF image object to disk.

Types

type Array

type Array []Object

Array represents a PDF array object.

func NewIntegerArray

func NewIntegerArray(fVars ...int) Array

NewIntegerArray returns a PDFArray with Integer entries.

func NewNameArray

func NewNameArray(sVars ...string) Array

NewNameArray returns a PDFArray with Name entries.

func NewNumberArray

func NewNumberArray(fVars ...float64) Array

NewNumberArray returns a PDFArray with Float entries.

func NewStringArray

func NewStringArray(sVars ...string) Array

NewStringArray returns a PDFArray with StringLiteral entries.

func (Array) PDFString

func (a Array) PDFString() string

PDFString returns a string representation as found in and written to a PDF file.

func (Array) String

func (a Array) String() string

type Boolean

type Boolean bool

Boolean represents a PDF boolean object.

func (Boolean) PDFString

func (boolean Boolean) PDFString() string

PDFString returns a string representation as found in and written to a PDF file.

func (Boolean) String

func (boolean Boolean) String() string

func (Boolean) Value

func (boolean Boolean) Value() bool

Value returns a bool value for this PDF object.

type ByteSize

type ByteSize float64

ByteSize represents the various terms for storage space.

const (
	KB ByteSize = 1 << (10 * iota)
	MB
	GB
)

Storage space terms.

func (ByteSize) String

func (b ByteSize) String() string

type CommandMode

type CommandMode int

CommandMode specifies the operation being executed.

const (
	VALIDATE CommandMode = iota
	OPTIMIZE
	SPLIT
	MERGE
	EXTRACTIMAGES
	EXTRACTFONTS
	EXTRACTPAGES
	EXTRACTCONTENT
	EXTRACTMETADATA
	TRIM
	ADDATTACHMENTS
	REMOVEATTACHMENTS
	EXTRACTATTACHMENTS
	LISTATTACHMENTS
	ADDPERMISSIONS
	LISTPERMISSIONS
	ENCRYPT
	DECRYPT
	CHANGEUPW
	CHANGEOPW
	ADDWATERMARKS
	IMPORTIMAGES
	INSERTPAGES
	REMOVEPAGES
	ROTATE
	NUP
)

The available commands.

type Configuration

type Configuration struct {

	// Enables PDF V1.5 compatible processing of object streams, xref streams, hybrid PDF files.
	Reader15 bool

	// Enables decoding of all streams (fontfiles, images..) for logging purposes.
	DecodeAllStreams bool

	// Validate against ISO-32000: strict or relaxed
	ValidationMode int

	// End of line char sequence for writing.
	Eol string

	// Turns on object stream generation.
	// A signal for compressing any new non-stream-object into an object stream.
	// true enforces WriteXRefStream to true.
	// false does not prevent xRefStream generation.
	WriteObjectStream bool

	// Switches between xRefSection (<=V1.4) and objectStream/xRefStream (>=V1.5) writing.
	WriteXRefStream bool

	// Turns on stats collection.
	// TODO Decision - unused.
	CollectStats bool

	// A CSV-filename holding the statistics.
	StatsFileName string

	// Supplied user password
	UserPW    string
	UserPWNew *string

	// Supplied owner password
	OwnerPW    string
	OwnerPWNew *string

	// EncryptUsingAES ensures AES encryption.
	// true: AES encryption
	// false: RC4 encryption.
	EncryptUsingAES bool

	// AES:40,128,256 RC4:40,128
	EncryptKeyLength int

	// Supplied user access permissions, see Table 22
	UserAccessPermissions int16

	// Command being executed.
	Cmd CommandMode
}

Configuration of a Context.

func NewConfiguration

func NewConfiguration(userPW, ownerPW string) *Configuration

NewConfiguration returns a default configuration for userPW and ownerPW.

func NewDefaultConfiguration

func NewDefaultConfiguration() *Configuration

NewDefaultConfiguration returns the default pdfcpu configuration.

func (*Configuration) ReducedFeatureSet

func (c *Configuration) ReducedFeatureSet() bool

ReducedFeatureSet returns true if complex entries like annotations shall not be written.

func (*Configuration) ValidationModeString

func (c *Configuration) ValidationModeString() string

ValidationModeString returns a string rep for the validation mode in effect.

type Context

type Context struct {
	*Configuration
	*XRefTable
	Read     *ReadContext
	Optimize *OptimizationContext
	Write    *WriteContext
	// contains filtered or unexported fields
}

Context represents an environment for processing PDF files.

func CreateContext

func CreateContext(xRefTable *XRefTable, config *Configuration) *Context

CreateContext creates a Context for given cross reference table and configuration.

func CreateContextWithXRefTable

func CreateContextWithXRefTable(config *Configuration, pageDim *dim) (*Context, error)

CreateContextWithXRefTable creates a Context with an xRefTable without pages for given configuration.

func NUpFromImage

func NUpFromImage(config *Configuration, imageFileNames []string, nup *NUp) (*Context, error)

NUpFromImage creates a single page n-up PDF for one image or a sequence of n-up pages for more than one image.

func NewContext

func NewContext(rs io.ReadSeeker, fileName string, fileSize int64, config *Configuration) (*Context, error)

NewContext initializes a new Context.

func Read

func Read(rs io.ReadSeeker, fileName string, fileSize int64, config *Configuration) (*Context, error)

Read takes a readSeeker and generates a Context, an in-memory representation containing a cross reference table.

func ReadFile

func ReadFile(fileIn string, config *Configuration) (*Context, error)

ReadFile reads in a PDF file and builds an internal structure holding its cross reference table aka the Context.

func (*Context) ResetWriteContext

func (ctx *Context) ResetWriteContext()

ResetWriteContext prepares an existing WriteContext for a new file to be written.

func (*Context) String

func (ctx *Context) String() string

type Dict

type Dict map[string]Object

Dict represents a PDF dict object.

func NewDict

func NewDict() Dict

NewDict returns a new PDFDict object.

func (Dict) ArrayEntry

func (d Dict) ArrayEntry(key string) Array

ArrayEntry expects and returns a Array entry for given key.

func (Dict) BooleanEntry

func (d Dict) BooleanEntry(key string) *bool

BooleanEntry expects and returns a BooleanEntry for given key.

func (Dict) Delete

func (d Dict) Delete(key string) (value Object)

Delete deletes the Object for given key.

func (Dict) DictEntry

func (d Dict) DictEntry(key string) Dict

DictEntry expects and returns a PDFDict entry for given key.

func (Dict) Entry

func (d Dict) Entry(dictName, key string, required bool) (Object, error)

Entry returns the value for given key.

func (Dict) Find

func (d Dict) Find(key string) (value Object, found bool)

Find returns the Object for given key and PDFDict.

func (Dict) First

func (d Dict) First() *int

First returns a *int for key "First".

func (Dict) HexLiteralEntry

func (d Dict) HexLiteralEntry(key string) *HexLiteral

HexLiteralEntry returns a HexLiteral object for given key.

func (*Dict) Increment

func (d *Dict) Increment(key string) error

Increment increments the integer value for given key.

func (*Dict) IncrementBy

func (d *Dict) IncrementBy(key string, i int) error

IncrementBy increments the integer value for given key by i.

func (Dict) Index

func (d Dict) Index() Array

Index returns a *Array for key "Index".

func (Dict) IndirectRefEntry

func (d Dict) IndirectRefEntry(key string) *IndirectRef

IndirectRefEntry returns an indirectRefEntry for given key for this dictionary.

func (Dict) Insert

func (d Dict) Insert(key string, value Object) (ok bool)

Insert adds a new entry to this PDFDict.

func (Dict) InsertFloat

func (d Dict) InsertFloat(key string, value float32)

InsertFloat adds a new float entry to this PDFDict.

func (Dict) InsertInt

func (d Dict) InsertInt(key string, value int)

InsertInt adds a new int entry to this PDFDict.

func (Dict) InsertName

func (d Dict) InsertName(key, value string)

InsertName adds a new name entry to this PDFDict.

func (Dict) InsertString

func (d Dict) InsertString(key, value string)

InsertString adds a new string entry to this PDFDict.

func (Dict) Int64Entry

func (d Dict) Int64Entry(key string) *int64

Int64Entry expects and returns a Integer entry representing an int64 value for given key.

func (Dict) IntEntry

func (d Dict) IntEntry(key string) *int

IntEntry expects and returns a Integer entry for given key.

func (Dict) IsLinearizationParmDict

func (d Dict) IsLinearizationParmDict() bool

IsLinearizationParmDict returns true if this dict has an int entry for key "Linearized".

func (Dict) IsObjStm

func (d Dict) IsObjStm() bool

IsObjStm returns true if given PDFDict is an object stream.

func (Dict) Len

func (d Dict) Len() int

Len returns the length of this PDFDict.

func (Dict) Length

func (d Dict) Length() (*int64, *int)

Length returns a *int64 for entry with key "Length". Stream length may be referring to an indirect object.

func (Dict) N

func (d Dict) N() *int

N returns a *int for key "N".

func (Dict) NameEntry

func (d Dict) NameEntry(key string) *string

NameEntry expects and returns a Name entry for given key.

func (Dict) PDFString

func (d Dict) PDFString() string

PDFString returns a string representation as found in and written to a PDF file.

func (Dict) Prev

func (d Dict) Prev() *int64

Prev returns the previous offset.

func (Dict) Size

func (d Dict) Size() *int

Size returns the value of the int entry for key "Size"

func (Dict) StreamDictEntry

func (d Dict) StreamDictEntry(key string) *StreamDict

StreamDictEntry expects and returns a StreamDict entry for given key. unused.

func (Dict) String

func (d Dict) String() string

func (Dict) StringEntry

func (d Dict) StringEntry(key string) *string

StringEntry expects and returns a StringLiteral entry for given key. Unused.

func (Dict) StringEntryBytes

func (d Dict) StringEntryBytes(key string) ([]byte, error)

StringEntryBytes returns the byte slice representing the string value for key.

func (Dict) StringLiteralEntry

func (d Dict) StringLiteralEntry(key string) *StringLiteral

StringLiteralEntry returns a StringLiteral object for given key.

func (Dict) Subtype

func (d Dict) Subtype() *string

Subtype returns the value of the name entry for key "Subtype".

func (Dict) Type

func (d Dict) Type() *string

Type returns the value of the name entry for key "Type".

func (Dict) Update

func (d Dict) Update(key string, value Object)

Update modifies an existing entry of this PDFDict.

func (Dict) W

func (d Dict) W() Array

W returns a *Array for key "W".

type Enc

type Enc struct {
	O, U       []byte
	OE, UE     []byte
	Perms      []byte
	L, P, R, V int
	Emd        bool // encrypt meta data
	ID         []byte
}

Enc wraps around all defined encryption attributes.

type Float

type Float float64

Float represents a PDF float object.

func (Float) PDFString

func (f Float) PDFString() string

PDFString returns a string representation as found in and written to a PDF file.

func (Float) String

func (f Float) String() string

func (Float) Value

func (f Float) Value() float64

Value returns a float64 value for this PDF object.

type FontObject

type FontObject struct {
	ResourceNames []string
	Prefix        string
	FontName      string
	FontDict      Dict
	Data          []byte
	Extension     string
}

FontObject represents a font used in a PDF file.

func ExtractFontData

func ExtractFontData(ctx *Context, objNr int) (*FontObject, error)

ExtractFontData extracts font data (the "fontfile") for objNr. Supported fontTypes: TrueType

func (*FontObject) AddResourceName

func (fo *FontObject) AddResourceName(resourceName string)

AddResourceName adds a resourceName referring to this font.

func (FontObject) Embedded

func (fo FontObject) Embedded() (embedded bool)

Embedded returns true if the font is embedded into this PDF file.

func (FontObject) Encoding

func (fo FontObject) Encoding() string

Encoding returns the Encoding of this font.

func (FontObject) ResourceNamesString

func (fo FontObject) ResourceNamesString() string

ResourceNamesString returns a string representation of all the resource names of this font.

func (FontObject) String

func (fo FontObject) String() string

func (FontObject) SubType

func (fo FontObject) SubType() string

SubType returns the SubType of this font.

type HexLiteral

type HexLiteral string

HexLiteral represents a PDF hex literal object.

func NewHexLiteral

func NewHexLiteral(b []byte) HexLiteral

NewHexLiteral creates a new HexLiteral for b..

func (HexLiteral) Bytes

func (hexliteral HexLiteral) Bytes() ([]byte, error)

Bytes returns the byte representation.

func (HexLiteral) PDFString

func (hexliteral HexLiteral) PDFString() string

PDFString returns the string representation as found in and written to a PDF file.

func (HexLiteral) String

func (hexliteral HexLiteral) String() string

func (HexLiteral) Value

func (hexliteral HexLiteral) Value() string

Value returns a string value for this PDF object.

type ImageObject

type ImageObject struct {
	ResourceNames []string
	ImageDict     *StreamDict
}

ImageObject represents an image used in a PDF file.

func ExtractImageData

func ExtractImageData(ctx *Context, objNr int) (*ImageObject, error)

ExtractImageData extracts image data for objNr. Supported imgTypes: FlateDecode, DCTDecode, JPXDecode TODO: Implementation and usage of these filters: DCTDecode and JPXDecode. TODO: Should an error be returned instead of nil, nil when filters are not supported?

func (*ImageObject) AddResourceName

func (io *ImageObject) AddResourceName(resourceName string)

AddResourceName adds a resourceName to this imageObject's ResourceNames dict.

func (ImageObject) ResourceNamesString

func (io ImageObject) ResourceNamesString() string

ResourceNamesString returns a string representation of the ResourceNames for this image.

type Import

type Import struct {
	PageDim  *dim    // page dimensions in user units.
	PageSize string  // one of A0,A1,A2,A3,A4(=default),A5,A6,A7,A8,Letter,Legal,Ledger,Tabloid,Executive,ANSIC,ANSID,ANSIE.
	Pos      anchor  // position anchor, one of tl,tc,tr,l,c,r,bl,bc,br,full.
	Dx, Dy   int     // anchor offset.
	Scale    float64 // relative scale factor. 0 <= x <= 1
	ScaleAbs bool    // true for absolute scaling.
}

Import represents the command details for the command "ImportImage".

func DefaultImportConfig

func DefaultImportConfig() *Import

DefaultImportConfig returns the default configuration.

func ParseImportDetails

func ParseImportDetails(s string) (*Import, error)

ParseImportDetails parses a ImportImage command string into an internal structure.

func (Import) String

func (imp Import) String() string

type IndirectRef

type IndirectRef struct {
	ObjectNumber     Integer
	GenerationNumber Integer
}

IndirectRef represents a PDF indirect object.

func NewIndirectRef

func NewIndirectRef(objectNumber, generationNumber int) *IndirectRef

NewIndirectRef returns a new PDFIndirectRef object.

func NewNUpPageForImage

func NewNUpPageForImage(xRefTable *XRefTable, fileName string, parentIndRef *IndirectRef, nup *NUp) (*IndirectRef, error)

NewNUpPageForImage creates a new page dict in xRefTable for given image filename and n-up config.

func NewPageForImage

func NewPageForImage(xRefTable *XRefTable, fileName string, parentIndRef *IndirectRef, imp *Import) (*IndirectRef, error)

NewPageForImage creates a new page dict in xRefTable for given image filename.

func (IndirectRef) Equals

func (ir IndirectRef) Equals(indRef IndirectRef) bool

Equals returns true if two indirect References refer to the same object.

func (IndirectRef) PDFString

func (ir IndirectRef) PDFString() string

PDFString returns a string representation as found in and written to a PDF file.

func (IndirectRef) String

func (ir IndirectRef) String() string

type InheritedPageAttrs

type InheritedPageAttrs struct {
	// contains filtered or unexported fields
}

InheritedPageAttrs represents all inherited page attributes.

type IntSet

type IntSet map[int]bool

IntSet is a set of integers.

type Integer

type Integer int

Integer represents a PDF integer object.

func (Integer) PDFString

func (i Integer) PDFString() string

PDFString returns a string representation as found in and written to a PDF file.

func (Integer) String

func (i Integer) String() string

func (Integer) Value

func (i Integer) Value() int

Value returns an int value for this PDF object.

type NUp

type NUp struct {
	PageSize     string      // Paper size eg. A4L, A4P, A4(=default=A4P), see paperSize.go
	PageDim      *dim        // Page dimensions in user units.
	Orient       orientation // One of rd(=default),dr,ld,dl
	Grid         *dim        // Intra page grid dimensions eg (2,2)
	PageGrid     bool        // Create a mxn grid of pages for PDF inputfiles only (think "extra page n-Up").
	ImgInputFile bool        // Process image or PDF input files.
	Margin       int         // Cropbox for n-Up content.
	Border       bool        // Draw bounding box.
}

NUp represents the command details for the command "NUp".

func DefaultNUpConfig

func DefaultNUpConfig() *NUp

DefaultNUpConfig returns the default NUp configuration.

func (NUp) String

func (nup NUp) String() string

type Name

type Name string

Name represents a PDF name object.

func (Name) PDFString

func (nameObject Name) PDFString() string

PDFString returns a string representation as found in and written to a PDF file.

func (Name) String

func (nameObject Name) String() string

func (Name) Value

func (nameObject Name) Value() string

Value returns a string value for this PDF object.

type Node

type Node struct {
	Kids       []*Node // Mirror of the name tree's Kids array, an array of indirect references.
	Names      []entry // Mirror of the name tree's Names array.
	Kmin, Kmax string  // Mirror of the name tree's Limit array[Kmin,Kmax].
	D          *Dict   // Pointer to the PDF dict representing this name tree node.
}

Node is an opiniated implementation of the PDF name tree. pdfcpu caches all name trees found in the PDF catalog with this data structure. The PDF spec does not impose any rules regarding a strategy for the creation of nodes. A binary tree was chosen where each leaf node has a limited number of entries (maxEntries). Once maxEntries has been reached a leaf node turns into an intermediary node with two kids, which are leaf nodes each of them holding half of the sorted entries of the original leaf node.

func (*Node) Add

func (n *Node) Add(xRefTable *XRefTable, k string, v Object) error

Add adds an entry to a name tree.

func (*Node) AddToLeaf

func (n *Node) AddToLeaf(k string, v Object)

AddToLeaf adds an entry to a leaf.

func (Node) KeyList

func (n Node) KeyList() ([]string, error)

KeyList returns a sorted list of all keys.

func (Node) Process

func (n Node) Process(xRefTable *XRefTable, handler func(*XRefTable, string, Object) error) error

Process traverses the nametree applying a handler to each entry (key-value pair).

func (*Node) Remove

func (n *Node) Remove(xRefTable *XRefTable, k string) (empty, ok bool, err error)

Remove removes an entry from a name tree. empty returns true if this node is an empty leaf node after removal. ok returns true if removal was successful.

func (Node) String

func (n Node) String() string

func (Node) Value

func (n Node) Value(k string) (Object, bool)

Value returns the value given key

type Object

type Object interface {
	fmt.Stringer
	PDFString() string
}

Object defines an interface for all Objects.

func ParseObject

func ParseObject(ctx *Context, offset int64, objNr, genNr int) (Object, error)

ParseObject parses an object from file at given offset.

type ObjectStreamDict

type ObjectStreamDict struct {
	StreamDict
	Prolog         []byte
	ObjCount       int
	FirstObjOffset int
	ObjArray       Array
}

ObjectStreamDict represents a object stream dictionary.

func NewObjectStreamDict

func NewObjectStreamDict() *ObjectStreamDict

NewObjectStreamDict creates a new ObjectStreamDict object.

func (*ObjectStreamDict) AddObject

func (osd *ObjectStreamDict) AddObject(objNumber int, entry *XRefTableEntry) error

AddObject adds another object to this object stream. Relies on decoded content!

func (*ObjectStreamDict) Finalize

func (osd *ObjectStreamDict) Finalize()

Finalize prepares the final content of the objectstream.

func (*ObjectStreamDict) IndexedObject

func (osd *ObjectStreamDict) IndexedObject(index int) (Object, error)

IndexedObject returns the object at given index from a ObjectStreamDict.

type OptimizationContext

type OptimizationContext struct {

	// Font section
	PageFonts         []IntSet            // For each page a registry of font object numbers.
	FontObjects       map[int]*FontObject // FontObject lookup table by font object number.
	Fonts             map[string][]int    // All font object numbers registered for a font name.
	DuplicateFonts    map[int]Dict        // Registry of duplicate font dicts.
	DuplicateFontObjs IntSet              // The set of objects that represents the union of the object graphs of all duplicate font dicts.

	// Image section
	PageImages         []IntSet             // For each page a registry of image object numbers.
	ImageObjects       map[int]*ImageObject // ImageObject lookup table by image object number.
	DuplicateImages    map[int]*StreamDict  // Registry of duplicate image dicts.
	DuplicateImageObjs IntSet               // The set of objects that represents the union of the object graphs of all duplicate image dicts.

	DuplicateInfoObjects IntSet // Possible result of manual info dict modification.
	NonReferencedObjs    []int  // Objects that are not referenced.
}

OptimizationContext represents the context for the optimiziation of a PDF file.

func (*OptimizationContext) DuplicateFontObjectsString

func (oc *OptimizationContext) DuplicateFontObjectsString() (int, string)

DuplicateFontObjectsString returns a formatted string and the number of objs.

func (*OptimizationContext) DuplicateImageObjectsString

func (oc *OptimizationContext) DuplicateImageObjectsString() (int, string)

DuplicateImageObjectsString returns a formatted string and the number of objs.

func (*OptimizationContext) DuplicateInfoObjectsString

func (oc *OptimizationContext) DuplicateInfoObjectsString() (int, string)

DuplicateInfoObjectsString returns a formatted string and the number of objs.

func (*OptimizationContext) IsDuplicateFontObject

func (oc *OptimizationContext) IsDuplicateFontObject(i int) bool

IsDuplicateFontObject returns true if object #i is a duplicate font object.

func (*OptimizationContext) IsDuplicateImageObject

func (oc *OptimizationContext) IsDuplicateImageObject(i int) bool

IsDuplicateImageObject returns true if object #i is a duplicate image object.

func (*OptimizationContext) IsDuplicateInfoObject

func (oc *OptimizationContext) IsDuplicateInfoObject(i int) bool

IsDuplicateInfoObject returns true if object #i is a duplicate info object.

func (*OptimizationContext) NonReferencedObjsString

func (oc *OptimizationContext) NonReferencedObjsString() (int, string)

NonReferencedObjsString returns a formatted string and the number of objs.

type PDFFilter

type PDFFilter struct {
	Name        string
	DecodeParms Dict
}

PDFFilter represents a PDF stream filter object.

type PDFImage

type PDFImage struct {
	// contains filtered or unexported fields
}

PDFImage represents a XObject of subtype image.

type PDFStats

type PDFStats struct {
	// contains filtered or unexported fields
}

PDFStats is a container for stats.

func NewPDFStats

func NewPDFStats() PDFStats

NewPDFStats returns a new PDFStats object.

func (PDFStats) AddPageAttr

func (stats PDFStats) AddPageAttr(name int)

AddPageAttr adds the occurrence of a field with given name to the pageAttrs set.

func (PDFStats) AddRootAttr

func (stats PDFStats) AddRootAttr(name int)

AddRootAttr adds the occurrence of a field with given name to the rootAttrs set.

func (PDFStats) UsesPageAttr

func (stats PDFStats) UsesPageAttr(name int) bool

UsesPageAttr returns true if a field with given name is contained in the pageAttrs set.

func (PDFStats) UsesRootAttr

func (stats PDFStats) UsesRootAttr(name int) bool

UsesRootAttr returns true if a field with given name is contained in the rootAttrs set.

type Point

type Point struct {
	X, Y float64
}

Point represents a user space location.

type ReadContext

type ReadContext struct {
	FileName string // The input PDF-File.
	FileSize int64

	EolCount            int    // 1 or 2 characters used for eol.
	BinaryTotalSize     int64  // total stream data
	BinaryImageSize     int64  // total image stream data
	BinaryFontSize      int64  // total font stream data (fontfiles)
	BinaryImageDuplSize int64  // total obsolet image stream data after optimization
	BinaryFontDuplSize  int64  // total obsolet font stream data after optimization
	Linearized          bool   // File is linearized.
	Hybrid              bool   // File is a hybrid PDF file.
	UsingObjectStreams  bool   // File is using object streams.
	ObjectStreams       IntSet // All object numbers of any object streams found which need to be decoded.
	UsingXRefStreams    bool   // File is using xref streams.
	XRefStreams         IntSet // All object numbers of any xref streams found.
	// contains filtered or unexported fields
}

ReadContext represents the context for reading a PDF file.

func (*ReadContext) IsObjectStreamObject

func (rc *ReadContext) IsObjectStreamObject(i int) bool

IsObjectStreamObject returns true if object i is a an object stream. All compressed objects are object streams.

func (*ReadContext) IsXRefStreamObject

func (rc *ReadContext) IsXRefStreamObject(i int) bool

IsXRefStreamObject returns true if object #i is a an xref stream.

func (*ReadContext) LogStats

func (rc *ReadContext) LogStats(optimized bool)

LogStats logs stats for read file.

func (*ReadContext) ObjectStreamsString

func (rc *ReadContext) ObjectStreamsString() (int, string)

ObjectStreamsString returns a formatted string and the number of object stream objects.

func (*ReadContext) ReadFileSize

func (rc *ReadContext) ReadFileSize() int

ReadFileSize returns the size of the input file, if there is one.

func (*ReadContext) XRefStreamsString

func (rc *ReadContext) XRefStreamsString() (int, string)

XRefStreamsString returns a formatted string and the number of xref stream objects.

type ReadSeekerCloser

type ReadSeekerCloser interface {
	io.ReadSeeker
	io.Closer
}

ReadSeekerCloser is the interface that groups the ReadSeeker and Close interfaces.

type Rectangle

type Rectangle struct {
	*types.Rectangle
}

Rectangle represents a rectangular region in userspace.

func Rect

func Rect(llx, lly, urx, ury float64) *Rectangle

Rect returns a new rectangle for given lower left and upper right corners.

func RectForArray

func RectForArray(a Array) *Rectangle

RectForArray returns a new rectangle for given Array.

func RectForDim

func RectForDim(width, height int) *Rectangle

RectForDim returns a new rectangle for given dimensions.

func RectForFormat

func RectForFormat(f string) *Rectangle

RectForFormat returns a new rectangle for given format.

func (Rectangle) Array

func (r Rectangle) Array() Array

Array returns the PDF representation of a rectangle.

func (Rectangle) CroppedCopy

func (r Rectangle) CroppedCopy(margin float64) *Rectangle

CroppedCopy returns a copy of r with applied margin..

func (Rectangle) FitsWithin

func (r Rectangle) FitsWithin(r2 *Rectangle) bool

FitsWithin returns true if rectangle r fits within rectangle r2.

func (Rectangle) ScaledHeight

func (r Rectangle) ScaledHeight(w float64) float64

ScaledHeight returns the height for given width according to r's aspect ratio.

func (Rectangle) ScaledWidth

func (r Rectangle) ScaledWidth(h float64) float64

ScaledWidth returns the width for given height according to r's aspect ratio.

type SplitData

type SplitData struct {
	// contains filtered or unexported fields
}

SplitData represents the PDF context and two information that can be stripped from the

func ReadXRefTable added in v1.1.0

func ReadXRefTable(rs io.ReadSeeker, fileName string, fileSize int64, config *Configuration) (*SplitData, error)

ReadXRefTable takes a readSeeker and generates a Context only with the xRefTable created without optimization and objects reading

func SplitDocument

func SplitDocument(fileIn string) (*SplitData, error)

SplitDocument extracts fonts and images from one PDF file

func SplitDocumentStreaming

func SplitDocumentStreaming(rs io.ReadSeeker, fileIn string, fileSize int64) (*SplitData, error)

SplitDocumentStreaming extracts fonts and images from one PDF streaming of bytes

func (*SplitData) BufferLen

func (s *SplitData) BufferLen() (n int64)

BufferLen returns the length of the buffer to read all file without the assets

func (*SplitData) Close

func (s *SplitData) Close() error

func (*SplitData) DataLen

func (s *SplitData) DataLen() int

func (*SplitData) GetData

func (s *SplitData) GetData(i int) *StreamDict

func (*SplitData) GetRawData added in v1.1.1

func (s *SplitData) GetRawData(i int) ([]byte, error)

func (*SplitData) Read

func (s *SplitData) Read(p []byte) (int, error)

Read the pdf without the assets bytes directly in the buffer passed as argument

func (*SplitData) ReadAll deprecated

func (s *SplitData) ReadAll() ([]byte, error)

ReadAll read the file completely inside a buffer

Deprecated: this methods will not work for very large files

func (*SplitData) Reset added in v1.1.2

func (s *SplitData) Reset() error

type StreamDict

type StreamDict struct {
	Dict
	StreamOffset      int64
	StreamLength      *int64
	StreamLengthObjNr *int
	FilterPipeline    []PDFFilter
	Raw               []byte // Encoded
	Content           []byte // Decoded
	IsPageContent     bool
}

StreamDict represents a PDF stream dict object.

func ExtractFontFromDict added in v1.1.0

func ExtractFontFromDict(ctx *Context, dict Dict, objNr int) (*StreamDict, error)

func NewStreamDict

func NewStreamDict(d Dict, streamOffset int64, streamLength *int64, streamLengthObjNr *int, filterPipeline []PDFFilter) StreamDict

NewStreamDict creates a new PDFStreamDict for given PDFDict, stream offset and length.

func ReadJPEGFile

func ReadJPEGFile(xRefTable *XRefTable, fileName string) (*StreamDict, error)

ReadJPEGFile generates a PDF image object for a JPEG file and appends this object to the cross reference table.

func ReadPNGFile

func ReadPNGFile(xRefTable *XRefTable, fileName string) (*StreamDict, error)

ReadPNGFile generates a PDF image object for a PNG file and appends this object to the cross reference table.

func ReadTIFFFile

func ReadTIFFFile(xRefTable *XRefTable, fileName string) (*StreamDict, error)

ReadTIFFFile generates a PDF image object for a TIFF file and appends this object to the cross reference table.

func (StreamDict) HasSoleFilterNamed

func (sd StreamDict) HasSoleFilterNamed(filterName string) bool

HasSoleFilterNamed returns true if there is exactly one filter defined for a stream dict.

type StringLiteral

type StringLiteral string

StringLiteral represents a PDF string literal object.

func (StringLiteral) PDFString

func (stringliteral StringLiteral) PDFString() string

PDFString returns a string representation as found in and written to a PDF file.

func (StringLiteral) String

func (stringliteral StringLiteral) String() string

func (StringLiteral) Value

func (stringliteral StringLiteral) Value() string

Value returns a string value for this PDF object.

type StringSet

type StringSet map[string]bool

StringSet is a set of strings.

type Version

type Version int

Version is a type for the internal representation of PDF versions.

const (
	V10 Version = iota
	V11
	V12
	V13
	V14
	V15
	V16
	V17
)

Constants for all PDF versions up to v1.7

func PDFVersion

func PDFVersion(versionStr string) (Version, error)

PDFVersion returns the PDFVersion for a version string.

func (Version) String

func (v Version) String() string

String returns a string representation for a given PDFVersion.

type Watermark

type Watermark struct {
	// contains filtered or unexported fields
}

Watermark represents the basic structure and command details for the commands "Stamp" and "Watermark".

func ParseWatermarkDetails

func ParseWatermarkDetails(s string, onTop bool) (*Watermark, error)

ParseWatermarkDetails parses a Watermark/Stamp command string into an internal structure.

func (Watermark) OnTopString

func (wm Watermark) OnTopString() string

OnTopString returns "watermark" or "stamp" whichever applies.

func (Watermark) String

func (wm Watermark) String() string

type WriteContext

type WriteContext struct {

	// The PDF-File which gets generated.
	*bufio.Writer
	DirName             string
	FileName            string
	FileSize            int64
	SelectedPages       IntSet        // For split, trim and extract.
	BinaryTotalSize     int64         // total stream data, counts 100% all stream data written.
	BinaryImageSize     int64         // total image stream data written = Read.BinaryImageSize.
	BinaryFontSize      int64         // total font stream data (fontfiles) = copy of Read.BinaryFontSize.
	Table               map[int]int64 // object write offsets
	Offset              int64         // current write offset
	WriteToObjectStream bool          // if true start to embed objects into object streams and obey ObjectStreamMaxObjects.
	CurrentObjStream    *int          // if not nil, any new non-stream-object gets added to the object stream with this object number.
	Eol                 string        // end of line char sequence
}

WriteContext represents the context for writing a PDF file.

func NewWriteContext

func NewWriteContext(eol string) *WriteContext

NewWriteContext returns a new WriteContext.

func (*WriteContext) HasWriteOffset

func (wc *WriteContext) HasWriteOffset(objNumber int) bool

HasWriteOffset returns true if an object has already been written to PDFDestination.

func (*WriteContext) LogStats

func (wc *WriteContext) LogStats()

LogStats logs stats for written file.

func (*WriteContext) SetWriteOffset

func (wc *WriteContext) SetWriteOffset(objNumber int)

SetWriteOffset saves the current write offset to the PDFDestination.

func (*WriteContext) WriteEol

func (wc *WriteContext) WriteEol() error

WriteEol writes an end of line sequence.

type XRefStreamDict

type XRefStreamDict struct {
	StreamDict
	Size           int
	Objects        []int
	W              [3]int
	PreviousOffset *int64
}

XRefStreamDict represents a cross reference stream dictionary.

func NewXRefStreamDict

func NewXRefStreamDict(ctx *Context) *XRefStreamDict

NewXRefStreamDict creates a new PDFXRefStreamDict object.

type XRefTable

type XRefTable struct {
	Table               map[int]*XRefTableEntry
	Size                *int             // Object count from PDF trailer dict.
	PageCount           int              // Number of pages, set during validation.
	Root                *IndirectRef     // Pointer to catalog (reference to root object).
	RootDict            Dict             // Catalog
	Names               map[string]*Node // Cache for name trees as found in catalog.
	Encrypt             *IndirectRef     // Encrypt dict.
	E                   *Enc
	EncKey              []byte // Encrypt key.
	AES4Strings         bool
	AES4Streams         bool
	AES4EmbeddedStreams bool

	// PDF Version
	HeaderVersion *Version // The PDF version the source is claiming to us as per its header.
	RootVersion   *Version // Optional PDF version taking precedence over the header version.

	// Document information section
	Info     *IndirectRef // Infodict (reference to info dict object)
	ID       Array        // from trailer
	Author   string
	Creator  string
	Producer string

	// Linearization section (not yet supported)
	OffsetPrimaryHintTable  *int64
	OffsetOverflowHintTable *int64
	LinearizationObjs       IntSet

	// Offspec section
	AdditionalStreams *Array // array of IndirectRef - trailer :e.g., Oasis "Open Doc"

	// Statistics
	Stats PDFStats

	Tagged bool // File is using tags. This is important for ???

	// Validation
	Valid          bool // true means successful validated against ISO 32000.
	ValidationMode int  // see Configuration

	Optimized bool
}

XRefTable represents a PDF cross reference table plus stats for a PDF file.

func CreateAcroFormDemoXRef

func CreateAcroFormDemoXRef() (*XRefTable, error)

CreateAcroFormDemoXRef creates an xRefTable with an AcroForm example.

func CreateAnnotationDemoXRef

func CreateAnnotationDemoXRef() (*XRefTable, error)

CreateAnnotationDemoXRef creates a PDF file with examples of annotations and actions.

func CreateDemoXRef

func CreateDemoXRef() (*XRefTable, error)

CreateDemoXRef creates a minimal PDF file for demo purposes.

func (*XRefTable) BindNameTrees

func (xRefTable *XRefTable) BindNameTrees() error

BindNameTrees syncs up the internal name tree cache with the xreftable.

func (*XRefTable) Catalog

func (xRefTable *XRefTable) Catalog() (Dict, error)

Catalog returns a pointer to the root object / catalog.

func (*XRefTable) CatalogHasPieceInfo

func (xRefTable *XRefTable) CatalogHasPieceInfo() (bool, error)

CatalogHasPieceInfo returns true if the root has an entry for \"PieceInfo\".

func (*XRefTable) DeleteObject

func (xRefTable *XRefTable) DeleteObject(objNr int) error

DeleteObject marks an object as free and inserts it into the free list right after the head.

func (*XRefTable) DeleteObjectGraph

func (xRefTable *XRefTable) DeleteObjectGraph(o Object) error

DeleteObjectGraph deletes all objects reachable by indRef.

func (*XRefTable) Dereference

func (xRefTable *XRefTable) Dereference(o Object) (Object, error)

Dereference resolves an indirect object and returns the resulting PDF object.

func (*XRefTable) DereferenceArray

func (xRefTable *XRefTable) DereferenceArray(o Object) (Array, error)

DereferenceArray resolves and validates an array object, which may be an indirect reference.

func (*XRefTable) DereferenceBoolean

func (xRefTable *XRefTable) DereferenceBoolean(o Object, sinceVersion Version) (*Boolean, error)

DereferenceBoolean resolves and validates a boolean object, which may be an indirect reference.

func (*XRefTable) DereferenceDict

func (xRefTable *XRefTable) DereferenceDict(o Object) (Dict, error)

DereferenceDict resolves and validates a dictionary object, which may be an indirect reference.

func (*XRefTable) DereferenceDictEntry

func (xRefTable *XRefTable) DereferenceDictEntry(d Dict, entryName string) (Object, error)

DereferenceDictEntry returns a dereferenced dict entry.

func (*XRefTable) DereferenceInteger

func (xRefTable *XRefTable) DereferenceInteger(o Object) (*Integer, error)

DereferenceInteger resolves and validates an integer object, which may be an indirect reference.

func (*XRefTable) DereferenceName

func (xRefTable *XRefTable) DereferenceName(o Object, sinceVersion Version, validate func(string) bool) (n Name, err error)

DereferenceName resolves and validates a name object, which may be an indirect reference.

func (*XRefTable) DereferenceNumber

func (xRefTable *XRefTable) DereferenceNumber(o Object) (float64, error)

DereferenceNumber resolves a number object, which may be an indirect reference and returns a float64.

func (*XRefTable) DereferenceStreamDict

func (xRefTable *XRefTable) DereferenceStreamDict(o Object) (*StreamDict, error)

DereferenceStreamDict resolves and validates a stream dictionary object, which may be an indirect reference.

func (*XRefTable) DereferenceStringLiteral

func (xRefTable *XRefTable) DereferenceStringLiteral(o Object, sinceVersion Version, validate func(string) bool) (s StringLiteral, err error)

DereferenceStringLiteral resolves and validates a string literal object, which may be an indirect reference.

func (*XRefTable) DereferenceStringOrHexLiteral

func (xRefTable *XRefTable) DereferenceStringOrHexLiteral(obj Object, sinceVersion Version, validate func(string) bool) (o Object, err error)

DereferenceStringOrHexLiteral resolves and validates a string or hex literal object, which may be an indirect reference.

func (*XRefTable) DereferenceText

func (xRefTable *XRefTable) DereferenceText(o Object) (string, error)

DereferenceText resolves and validates a string or hex literal object to a string.

func (*XRefTable) EncryptDict

func (xRefTable *XRefTable) EncryptDict() (Dict, error)

EncryptDict returns a pointer to the root object / catalog.

func (*XRefTable) EnsureCollection

func (xRefTable *XRefTable) EnsureCollection() error

EnsureCollection makes sure there is a Collection entry in the catalog. Needed for portfolio / portable collections eg. for file attachments.

func (*XRefTable) EnsureValidFreeList

func (xRefTable *XRefTable) EnsureValidFreeList() error

EnsureValidFreeList ensures the integrity of the free list associated with the recorded free objects. See 7.5.4 Cross-Reference Table

func (*XRefTable) Exists

func (xRefTable *XRefTable) Exists(objNr int) bool

Exists returns true if xRefTable contains an entry for objNumber.

func (*XRefTable) Find

func (xRefTable *XRefTable) Find(objNr int) (*XRefTableEntry, bool)

Find returns the XRefTable entry for given object number.

func (*XRefTable) FindObject

func (xRefTable *XRefTable) FindObject(objNr int) (Object, error)

FindObject returns the object of the XRefTableEntry for a specific object number.

func (*XRefTable) FindTableEntry

func (xRefTable *XRefTable) FindTableEntry(objNr int, genNr int) (*XRefTableEntry, bool)

FindTableEntry returns the XRefTable entry for given object and generation numbers.

func (*XRefTable) FindTableEntryForIndRef

func (xRefTable *XRefTable) FindTableEntryForIndRef(ir *IndirectRef) (*XRefTableEntry, bool)

FindTableEntryForIndRef returns the XRefTable entry for given indirect reference.

func (*XRefTable) FindTableEntryLight

func (xRefTable *XRefTable) FindTableEntryLight(objNr int) (*XRefTableEntry, bool)

FindTableEntryLight returns the XRefTable entry for given object number.

func (*XRefTable) Free

func (xRefTable *XRefTable) Free(objNr int) (*XRefTableEntry, error)

Free returns the cross ref table entry for given number of a free object.

func (*XRefTable) IDFirstElement

func (xRefTable *XRefTable) IDFirstElement() (id []byte, err error)

IDFirstElement returns the first element of ID.

func (*XRefTable) IndRefForNewObject

func (xRefTable *XRefTable) IndRefForNewObject(obj Object) (*IndirectRef, error)

IndRefForNewObject inserts an object into the xRefTable and returns an indirect reference to it.

func (*XRefTable) InsertAndUseRecycled

func (xRefTable *XRefTable) InsertAndUseRecycled(xRefTableEntry XRefTableEntry) (objNr int, err error)

InsertAndUseRecycled adds given xRefTableEntry into the cross reference table utilizing the freelist.

func (*XRefTable) InsertNew

func (xRefTable *XRefTable) InsertNew(xRefTableEntry XRefTableEntry) (objNr int)

InsertNew adds given xRefTableEntry at next new objNumber into the cross reference table. Only to be called once an xRefTable has been generated completely and all trailer dicts have been processed. xRefTable.Size is the size entry of the first trailer dict processed. Called on creation of new object streams. Called by InsertAndUseRecycled.

func (*XRefTable) InsertObject

func (xRefTable *XRefTable) InsertObject(obj Object) (objNr int, err error)

InsertObject inserts an object into the xRefTable.

func (*XRefTable) InsertPages

func (xRefTable *XRefTable) InsertPages(pages IntSet) error

InsertPages inserts a blank page before each selected page.

func (*XRefTable) IsLinearizationObject

func (xRefTable *XRefTable) IsLinearizationObject(i int) bool

IsLinearizationObject returns true if object #i is a a linearization object.

func (*XRefTable) LinearizationObjsString

func (xRefTable *XRefTable) LinearizationObjsString() (int, string)

LinearizationObjsString returns a formatted string and the number of objs.

func (*XRefTable) LocateNameTree

func (xRefTable *XRefTable) LocateNameTree(nameTreeName string, ensure bool) error

LocateNameTree locates/ensures a specific name tree.

func (*XRefTable) MissingObjects

func (xRefTable *XRefTable) MissingObjects() (int, *string)

MissingObjects returns the number of objects that were not written plus the corresponding comma separated string representation.

func (*XRefTable) NamesDict

func (xRefTable *XRefTable) NamesDict() (Dict, error)

NamesDict returns the dict that contains all name trees.

func (*XRefTable) NewEmbeddedFileStreamDict

func (xRefTable *XRefTable) NewEmbeddedFileStreamDict(filename string) (*StreamDict, error)

NewEmbeddedFileStreamDict creates and returns an embeddedFileStreamDict containing the file "filename".

func (*XRefTable) NewFileSpecDict

func (xRefTable *XRefTable) NewFileSpecDict(filename string, indRefStreamDict IndirectRef) (Dict, error)

NewFileSpecDict creates and returns a new fileSpec dictionary.

func (*XRefTable) NewSoundStreamDict

func (xRefTable *XRefTable) NewSoundStreamDict(filename string, samplingRate int, fileSpecDict Dict) (*StreamDict, error)

NewSoundStreamDict returns a new sound stream dict.

func (*XRefTable) NewStreamDict

func (xRefTable *XRefTable) NewStreamDict(filename string) (*StreamDict, error)

NewStreamDict creates a streamDict for buf.

func (*XRefTable) NextForFree

func (xRefTable *XRefTable) NextForFree(objNr int) (int, error)

NextForFree returns the number of the object the free object with objNumber links to. This is the successor of this free object in the free list.

func (*XRefTable) PageDict

func (xRefTable *XRefTable) PageDict(page int) (Dict, *InheritedPageAttrs, error)

PageDict returns a specific page dict along with the resources, mediaBox and CropBox in effect.

func (*XRefTable) PageMediaBox

func (xRefTable *XRefTable) PageMediaBox(i int) (*Rectangle, error)

PageMediaBox returns the Mediabox in effect for page i.

func (*XRefTable) Pages

func (xRefTable *XRefTable) Pages() (*IndirectRef, error)

Pages returns the Pages reference contained in the catalog.

func (*XRefTable) ParseRootVersion

func (xRefTable *XRefTable) ParseRootVersion() (v *string, err error)

ParseRootVersion returns a string representation for an optional Version entry in the root object.

func (*XRefTable) RemoveCollection

func (xRefTable *XRefTable) RemoveCollection() error

RemoveCollection removes an existing Collection entry from the catalog.

func (*XRefTable) RemoveEmbeddedFilesNameTree

func (xRefTable *XRefTable) RemoveEmbeddedFilesNameTree() error

RemoveEmbeddedFilesNameTree removes both the embedded files name tree and the Collection dict.

func (*XRefTable) RemoveNameTree

func (xRefTable *XRefTable) RemoveNameTree(nameTreeName string) error

RemoveNameTree removes a specific name tree. Also removes a resulting empty names dict.

func (*XRefTable) UndeleteObject

func (xRefTable *XRefTable) UndeleteObject(objectNumber int) error

UndeleteObject ensures an object is not recorded in the free list. e.g. sometimes caused by indirect references to free objects in the original PDF file.

func (*XRefTable) ValidateVersion

func (xRefTable *XRefTable) ValidateVersion(element string, sinceVersion Version) error

ValidateVersion validates against the xRefTable's version.

func (*XRefTable) Version

func (xRefTable *XRefTable) Version() Version

Version returns the PDF version of the PDF writer that created this file. Before V1.4 this is the header version. Since V1.4 the catalog may contain a Version entry which takes precedence over the header version.

func (*XRefTable) VersionString

func (xRefTable *XRefTable) VersionString() string

VersionString return a string representation for this PDF files PDF version.

type XRefTableEntry

type XRefTableEntry struct {
	Free            bool
	Offset          *int64
	Generation      *int
	Object          Object
	Compressed      bool
	ObjectStream    *int
	ObjectStreamInd *int
}

XRefTableEntry represents an entry in the PDF cross reference table.

This may wrap a free object, a compressed object or any in use PDF object:

Dict, StreamDict, ObjectStreamDict, PDFXRefStreamDict, Array, Integer, Float, Name, StringLiteral, HexLiteral, Boolean

func NewFreeHeadXRefTableEntry

func NewFreeHeadXRefTableEntry() *XRefTableEntry

NewFreeHeadXRefTableEntry returns the xref table entry for object 0 which is per definition the head of the free list (list of free objects).

func NewXRefTableEntryGen0

func NewXRefTableEntryGen0(obj Object) *XRefTableEntry

NewXRefTableEntryGen0 returns a cross reference table entry for an object with generation 0.

Directories

Path Synopsis
fonts
metrics
Package metrics provides font metrics.
Package metrics provides font metrics.
metrics/standard
Package standard provides font metrics for Adobe standard fonts.
Package standard provides font metrics for Adobe standard fonts.
Package validate implements validation against PDF 32000-1:2008.
Package validate implements validation against PDF 32000-1:2008.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL