MuPDF X.Y.Z

pdf/object.h

Index

typedef

struct

enum

macro

function

Object

typedef pdf_document

typedef struct pdf_document pdf_document

typedef pdf_crypt

typedef struct pdf_crypt pdf_crypt

typedef pdf_journal

typedef struct pdf_journal pdf_journal

typedef pdf_resource_stack

typedef struct pdf_resource_stack pdf_resource_stack

macro PDF_MAX_OBJECT_NUMBER

#define PDF_MAX_OBJECT_NUMBER 8388607

Defined in PDF 1.7 according to Acrobat limit.

macro PDF_MAX_GEN_NUMBER

#define PDF_MAX_GEN_NUMBER 65535

typedef pdf_obj

typedef struct pdf_obj pdf_obj

Dynamic objects. The same type of objects as found in PDF and PostScript. Used by the filters and the mupdf parser.

function pdf_new_int

pdf_obj *
pdf_new_int (
        fz_context *ctx,
        int64_t i
)

function pdf_new_real

pdf_obj *
pdf_new_real (
        fz_context *ctx,
        float f
)

function pdf_new_name

pdf_obj *
pdf_new_name (
        fz_context *ctx,
        const char *str
)

function pdf_new_string

pdf_obj *
pdf_new_string (
        fz_context *ctx,
        const char *str,
        size_t len
)

function pdf_new_text_string

pdf_obj *
pdf_new_text_string (
        fz_context *ctx,
        const char *s
)

Create a PDF ‘text string’ by encoding input string as either ASCII or UTF-16BE. In theory, we could also use PDFDocEncoding.

function pdf_new_indirect

pdf_obj *
pdf_new_indirect (
        fz_context *ctx,
        pdf_document *doc,
        int64_t num,
        int gen
)

function pdf_new_array

pdf_obj *
pdf_new_array (
        fz_context *ctx,
        pdf_document *doc,
        int initialcap
)

function pdf_new_dict

pdf_obj *
pdf_new_dict (
        fz_context *ctx,
        pdf_document *doc,
        int initialcap
)

function pdf_new_point

pdf_obj *
pdf_new_point (
        fz_context *ctx,
        pdf_document *doc,
        fz_point point
)

function pdf_new_rect

pdf_obj *
pdf_new_rect (
        fz_context *ctx,
        pdf_document *doc,
        fz_rect rect
)

function pdf_new_matrix

pdf_obj *
pdf_new_matrix (
        fz_context *ctx,
        pdf_document *doc,
        fz_matrix mtx
)

function pdf_new_date

pdf_obj *
pdf_new_date (
        fz_context *ctx,
        pdf_document *doc,
        int64_t time
)

function pdf_copy_array

pdf_obj *
pdf_copy_array (
        fz_context *ctx,
        pdf_obj *array
)

function pdf_copy_dict

pdf_obj *
pdf_copy_dict (
        fz_context *ctx,
        pdf_obj *dict
)

function pdf_deep_copy_obj

pdf_obj *
pdf_deep_copy_obj (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_keep_obj

pdf_obj *
pdf_keep_obj (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_drop_obj

void
pdf_drop_obj (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_drop_singleton_obj

pdf_obj *
pdf_drop_singleton_obj (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_obj_is_singleton

int
pdf_obj_is_singleton (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_null

int
pdf_is_null (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_bool

int
pdf_is_bool (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_int

int
pdf_is_int (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_real

int
pdf_is_real (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_number

int
pdf_is_number (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_name

int
pdf_is_name (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_string

int
pdf_is_string (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_array

int
pdf_is_array (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_dict

int
pdf_is_dict (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_indirect

int
pdf_is_indirect (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_ensure_indirect

pdf_obj *
pdf_ensure_indirect (
        fz_context *ctx,
        pdf_obj *obj
)

If obj is an indirect object, return it. If not, throw an error.

function pdf_obj_num_is_stream

int
pdf_obj_num_is_stream (
        fz_context *ctx,
        pdf_document *doc,
        int num
)

Check if an object is a stream or not.

function pdf_is_stream

int
pdf_is_stream (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_is_stream_external

int
pdf_is_stream_external (
        fz_context *ctx,
        pdf_obj *obj
)

Check if an object, known to be a stream, is an external one.

function pdf_objcmp

int
pdf_objcmp (
        fz_context *ctx,
        pdf_obj *a,
        pdf_obj *b
)

Compare 2 objects. Returns 0 on match, non-zero on mismatch. Streams always mismatch.

function pdf_objcmp_resolve

int
pdf_objcmp_resolve (
        fz_context *ctx,
        pdf_obj *a,
        pdf_obj *b
)

function pdf_objcmp_deep

int
pdf_objcmp_deep (
        fz_context *ctx,
        pdf_obj *a,
        pdf_obj *b
)

Compare 2 objects. Returns 0 on match, non-zero on mismatch. Stream contents are explicitly checked.

function pdf_name_eq

int
pdf_name_eq (
        fz_context *ctx,
        pdf_obj *a,
        pdf_obj *b
)

function pdf_obj_marked

int
pdf_obj_marked (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_mark_obj

int
pdf_mark_obj (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_unmark_obj

void
pdf_unmark_obj (
        fz_context *ctx,
        pdf_obj *obj
)

struct pdf_cycle_list

struct pdf_cycle_list {
        pdf_cycle_list *up;
        int num;
}

function pdf_cycle

int
pdf_cycle (
        fz_context *ctx,
        pdf_cycle_list *here,
        pdf_cycle_list *prev,
        pdf_obj *obj
)

Check for a cycle (or stack overflow) in PDF structures.

Returns 1 if a cycle found. Returns -1 if we pass some arbitrary depth (currently 256). Otherwise returns 0.

struct pdf_mark_bits

struct pdf_mark_bits
{
        int len;
        unsigned char bits[FZ_FLEXIBLE_ARRAY];
}

function pdf_new_mark_bits

pdf_mark_bits *
pdf_new_mark_bits (
        fz_context *ctx,
        pdf_document *doc
)

function pdf_drop_mark_bits

void
pdf_drop_mark_bits (
        fz_context *ctx,
        pdf_mark_bits *marks
)

function pdf_mark_bits_reset

void
pdf_mark_bits_reset (
        fz_context *ctx,
        pdf_mark_bits *marks
)

function pdf_mark_bits_set

int
pdf_mark_bits_set (
        fz_context *ctx,
        pdf_mark_bits *marks,
        pdf_obj *obj
)

struct pdf_mark_list

struct pdf_mark_list
{
        int len;
        int max;
        int *list;
        int local_list[8];
}

function pdf_mark_list_push

int
pdf_mark_list_push (
        fz_context *ctx,
        pdf_mark_list *list,
        pdf_obj *obj
)

function pdf_mark_list_pop

void
pdf_mark_list_pop (
        fz_context *ctx,
        pdf_mark_list *list
)

function pdf_mark_list_check

int
pdf_mark_list_check (
        fz_context *ctx,
        pdf_mark_list *list,
        pdf_obj *obj
)

function pdf_mark_list_init

void
pdf_mark_list_init (
        fz_context *ctx,
        pdf_mark_list *list
)

function pdf_mark_list_free

void
pdf_mark_list_free (
        fz_context *ctx,
        pdf_mark_list *list
)

function pdf_set_obj_memo

void
pdf_set_obj_memo (
        fz_context *ctx,
        pdf_obj *obj,
        int bit,
        int memo
)

function pdf_obj_memo

int
pdf_obj_memo (
        fz_context *ctx,
        pdf_obj *obj,
        int bit,
        int *memo
)

function pdf_obj_is_dirty

int
pdf_obj_is_dirty (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_dirty_obj

void
pdf_dirty_obj (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_clean_obj

void
pdf_clean_obj (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_bool

int
pdf_to_bool (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_int

int
pdf_to_int (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_int64

int64_t
pdf_to_int64 (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_real

float
pdf_to_real (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_name

const char *
pdf_to_name (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_text_string

const char *
pdf_to_text_string (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_string

const char *
pdf_to_string (
        fz_context *ctx,
        pdf_obj *obj,
        size_t *sizep
)

function pdf_to_str_buf

char *
pdf_to_str_buf (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_str_len

size_t
pdf_to_str_len (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_num

int
pdf_to_num (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_gen

int
pdf_to_gen (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_to_bool_default

int
pdf_to_bool_default (
        fz_context *ctx,
        pdf_obj *obj,
        int def
)

function pdf_to_int_default

int
pdf_to_int_default (
        fz_context *ctx,
        pdf_obj *obj,
        int def
)

function pdf_to_real_default

float
pdf_to_real_default (
        fz_context *ctx,
        pdf_obj *obj,
        float def
)

function pdf_array_len

int
pdf_array_len (
        fz_context *ctx,
        pdf_obj *array
)

function pdf_array_get

pdf_obj *
pdf_array_get (
        fz_context *ctx,
        pdf_obj *array,
        int i
)

function pdf_array_put

void
pdf_array_put (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        pdf_obj *obj
)

function pdf_array_put_drop

void
pdf_array_put_drop (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        pdf_obj *obj
)

function pdf_array_push

void
pdf_array_push (
        fz_context *ctx,
        pdf_obj *array,
        pdf_obj *obj
)

function pdf_array_push_drop

void
pdf_array_push_drop (
        fz_context *ctx,
        pdf_obj *array,
        pdf_obj *obj
)

function pdf_array_insert

void
pdf_array_insert (
        fz_context *ctx,
        pdf_obj *array,
        pdf_obj *obj,
        int index
)

function pdf_array_insert_drop

void
pdf_array_insert_drop (
        fz_context *ctx,
        pdf_obj *array,
        pdf_obj *obj,
        int index
)

function pdf_array_delete

void
pdf_array_delete (
        fz_context *ctx,
        pdf_obj *array,
        int index
)

function pdf_array_find

int
pdf_array_find (
        fz_context *ctx,
        pdf_obj *array,
        pdf_obj *obj
)

function pdf_array_contains

int
pdf_array_contains (
        fz_context *ctx,
        pdf_obj *array,
        pdf_obj *obj
)

function pdf_dict_len

int
pdf_dict_len (
        fz_context *ctx,
        pdf_obj *dict
)

function pdf_dict_get_key

pdf_obj *
pdf_dict_get_key (
        fz_context *ctx,
        pdf_obj *dict,
        int idx
)

function pdf_dict_get_val

pdf_obj *
pdf_dict_get_val (
        fz_context *ctx,
        pdf_obj *dict,
        int idx
)

function pdf_dict_put_val_null

void
pdf_dict_put_val_null (
        fz_context *ctx,
        pdf_obj *obj,
        int idx
)

function pdf_dict_get

pdf_obj *
pdf_dict_get (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_getp

pdf_obj *
pdf_dict_getp (
        fz_context *ctx,
        pdf_obj *dict,
        const char *path
)

function pdf_dict_getl

pdf_obj *
pdf_dict_getl (
        fz_context *ctx,
        pdf_obj *dict,
        ...
)

function pdf_dict_geta

pdf_obj *
pdf_dict_geta (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        pdf_obj *abbrev
)

function pdf_dict_gets

pdf_obj *
pdf_dict_gets (
        fz_context *ctx,
        pdf_obj *dict,
        const char *key
)

function pdf_dict_getsa

pdf_obj *
pdf_dict_getsa (
        fz_context *ctx,
        pdf_obj *dict,
        const char *key,
        const char *abbrev
)

function pdf_dict_get_inheritable

pdf_obj *
pdf_dict_get_inheritable (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_getp_inheritable

pdf_obj *
pdf_dict_getp_inheritable (
        fz_context *ctx,
        pdf_obj *dict,
        const char *path
)

function pdf_dict_gets_inheritable

pdf_obj *
pdf_dict_gets_inheritable (
        fz_context *ctx,
        pdf_obj *dict,
        const char *key
)

function pdf_dict_put

void
pdf_dict_put (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        pdf_obj *val
)

function pdf_dict_put_drop

void
pdf_dict_put_drop (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        pdf_obj *val
)

function pdf_dict_get_put_drop

void
pdf_dict_get_put_drop (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        pdf_obj *val,
        pdf_obj **old_val
)

function pdf_dict_puts

void
pdf_dict_puts (
        fz_context *ctx,
        pdf_obj *dict,
        const char *key,
        pdf_obj *val
)

function pdf_dict_puts_drop

void
pdf_dict_puts_drop (
        fz_context *ctx,
        pdf_obj *dict,
        const char *key,
        pdf_obj *val
)

function pdf_dict_putp

void
pdf_dict_putp (
        fz_context *ctx,
        pdf_obj *dict,
        const char *path,
        pdf_obj *val
)

function pdf_dict_putp_drop

void
pdf_dict_putp_drop (
        fz_context *ctx,
        pdf_obj *dict,
        const char *path,
        pdf_obj *val
)

function pdf_dict_putl

void
pdf_dict_putl (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *val,
        ...
)

function pdf_dict_putl_drop

void
pdf_dict_putl_drop (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *val,
        ...
)

function pdf_dict_del

void
pdf_dict_del (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_dels

void
pdf_dict_dels (
        fz_context *ctx,
        pdf_obj *dict,
        const char *key
)

function pdf_sort_dict

void
pdf_sort_dict (
        fz_context *ctx,
        pdf_obj *dict
)

function pdf_dict_put_bool

void
pdf_dict_put_bool (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        int x
)

function pdf_dict_put_int

void
pdf_dict_put_int (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        int64_t x
)

function pdf_dict_put_real

void
pdf_dict_put_real (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        double x
)

function pdf_dict_put_name

void
pdf_dict_put_name (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        const char *x
)

function pdf_dict_put_string

void
pdf_dict_put_string (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        const char *x,
        size_t n
)

function pdf_dict_put_text_string

void
pdf_dict_put_text_string (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        const char *x
)

function pdf_dict_put_indirect

void
pdf_dict_put_indirect (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        int num
)

function pdf_dict_put_point

void
pdf_dict_put_point (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        fz_point x
)

function pdf_dict_put_rect

void
pdf_dict_put_rect (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        fz_rect x
)

function pdf_dict_put_matrix

void
pdf_dict_put_matrix (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        fz_matrix x
)

function pdf_dict_put_date

void
pdf_dict_put_date (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        int64_t time
)

function pdf_dict_put_array

pdf_obj *
pdf_dict_put_array (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        int initial
)

function pdf_dict_put_dict

pdf_obj *
pdf_dict_put_dict (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        int initial
)

function pdf_dict_puts_dict

pdf_obj *
pdf_dict_puts_dict (
        fz_context *ctx,
        pdf_obj *dict,
        const char *key,
        int initial
)

function pdf_dict_get_bool

int
pdf_dict_get_bool (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_int

int
pdf_dict_get_int (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_int64

int64_t
pdf_dict_get_int64 (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_real

float
pdf_dict_get_real (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_name

const char *
pdf_dict_get_name (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_string

const char *
pdf_dict_get_string (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        size_t *sizep
)

function pdf_dict_get_text_string

const char *
pdf_dict_get_text_string (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_text_string_opt

const char *
pdf_dict_get_text_string_opt (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_point

fz_point
pdf_dict_get_point (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_rect

fz_rect
pdf_dict_get_rect (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_matrix

fz_matrix
pdf_dict_get_matrix (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_date

int64_t
pdf_dict_get_date (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_bool_default

int
pdf_dict_get_bool_default (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        int def
)

function pdf_dict_get_int_default

int
pdf_dict_get_int_default (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        int def
)

function pdf_dict_get_real_default

float
pdf_dict_get_real_default (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        float def
)

function pdf_dict_get_inheritable_bool

int
pdf_dict_get_inheritable_bool (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_inheritable_int

int
pdf_dict_get_inheritable_int (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_inheritable_int64

int64_t
pdf_dict_get_inheritable_int64 (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_inheritable_real

float
pdf_dict_get_inheritable_real (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_inheritable_name

const char *
pdf_dict_get_inheritable_name (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_inheritable_string

const char *
pdf_dict_get_inheritable_string (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key,
        size_t *sizep
)

function pdf_dict_get_inheritable_text_string

const char *
pdf_dict_get_inheritable_text_string (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_inheritable_rect

fz_rect
pdf_dict_get_inheritable_rect (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_inheritable_matrix

fz_matrix
pdf_dict_get_inheritable_matrix (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_dict_get_inheritable_date

int64_t
pdf_dict_get_inheritable_date (
        fz_context *ctx,
        pdf_obj *dict,
        pdf_obj *key
)

function pdf_array_push_bool

void
pdf_array_push_bool (
        fz_context *ctx,
        pdf_obj *array,
        int x
)

function pdf_array_push_int

void
pdf_array_push_int (
        fz_context *ctx,
        pdf_obj *array,
        int64_t x
)

function pdf_array_push_real

void
pdf_array_push_real (
        fz_context *ctx,
        pdf_obj *array,
        double x
)

function pdf_array_push_name

void
pdf_array_push_name (
        fz_context *ctx,
        pdf_obj *array,
        const char *x
)

function pdf_array_push_string

void
pdf_array_push_string (
        fz_context *ctx,
        pdf_obj *array,
        const char *x,
        size_t n
)

function pdf_array_push_text_string

void
pdf_array_push_text_string (
        fz_context *ctx,
        pdf_obj *array,
        const char *x
)

function pdf_array_push_array

pdf_obj *
pdf_array_push_array (
        fz_context *ctx,
        pdf_obj *array,
        int initial
)

function pdf_array_push_dict

pdf_obj *
pdf_array_push_dict (
        fz_context *ctx,
        pdf_obj *array,
        int initial
)

function pdf_array_put_bool

void
pdf_array_put_bool (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        int x
)

function pdf_array_put_int

void
pdf_array_put_int (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        int64_t x
)

function pdf_array_put_real

void
pdf_array_put_real (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        double x
)

function pdf_array_put_name

void
pdf_array_put_name (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        const char *x
)

function pdf_array_put_string

void
pdf_array_put_string (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        const char *x,
        size_t n
)

function pdf_array_put_text_string

void
pdf_array_put_text_string (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        const char *x
)

function pdf_array_put_array

pdf_obj *
pdf_array_put_array (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        int initial
)

function pdf_array_put_dict

pdf_obj *
pdf_array_put_dict (
        fz_context *ctx,
        pdf_obj *array,
        int i,
        int initial
)

function pdf_array_get_bool

int
pdf_array_get_bool (
        fz_context *ctx,
        pdf_obj *array,
        int index
)

function pdf_array_get_int

int
pdf_array_get_int (
        fz_context *ctx,
        pdf_obj *array,
        int index
)

function pdf_array_get_real

float
pdf_array_get_real (
        fz_context *ctx,
        pdf_obj *array,
        int index
)

function pdf_array_get_name

const char *
pdf_array_get_name (
        fz_context *ctx,
        pdf_obj *array,
        int index
)

function pdf_array_get_string

const char *
pdf_array_get_string (
        fz_context *ctx,
        pdf_obj *array,
        int index,
        size_t *sizep
)

function pdf_array_get_text_string

const char *
pdf_array_get_text_string (
        fz_context *ctx,
        pdf_obj *array,
        int index
)

function pdf_array_get_rect

fz_rect
pdf_array_get_rect (
        fz_context *ctx,
        pdf_obj *array,
        int index
)

function pdf_array_get_matrix

fz_matrix
pdf_array_get_matrix (
        fz_context *ctx,
        pdf_obj *array,
        int index
)

function pdf_set_obj_parent

void
pdf_set_obj_parent (
        fz_context *ctx,
        pdf_obj *obj,
        int num
)

function pdf_obj_refs

int
pdf_obj_refs (
        fz_context *ctx,
        pdf_obj *ref
)

function pdf_obj_parent_num

int
pdf_obj_parent_num (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_sprint_obj

char *
pdf_sprint_obj (
        fz_context *ctx,
        char *buf,
        size_t cap,
        size_t *len,
        pdf_obj *obj,
        int tight,
        int ascii
)

function pdf_print_obj

void
pdf_print_obj (
        fz_context *ctx,
        fz_output *out,
        pdf_obj *obj,
        int tight,
        int ascii
)

function pdf_print_encrypted_obj

void
pdf_print_encrypted_obj (
        fz_context *ctx,
        fz_output *out,
        pdf_obj *obj,
        int tight,
        int ascii,
        pdf_crypt *crypt,
        int num,
        int gen,
        int *sep
)

function pdf_debug_obj

void
pdf_debug_obj (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_debug_ref

void
pdf_debug_ref (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_new_utf8_from_pdf_string

char *
pdf_new_utf8_from_pdf_string (
        fz_context *ctx,
        const char *srcptr,
        size_t srclen
)

Convert Unicode/PdfDocEncoding string into utf-8.

The returned string must be freed by the caller.

function pdf_new_utf8_from_pdf_string_obj

char *
pdf_new_utf8_from_pdf_string_obj (
        fz_context *ctx,
        pdf_obj *src
)

Convert text string object to UTF-8.

The returned string must be freed by the caller.

function pdf_new_utf8_from_pdf_stream_obj

char *
pdf_new_utf8_from_pdf_stream_obj (
        fz_context *ctx,
        pdf_obj *src
)

Load text stream and convert to UTF-8.

The returned string must be freed by the caller.

function pdf_load_stream_or_string_as_utf8

char *
pdf_load_stream_or_string_as_utf8 (
        fz_context *ctx,
        pdf_obj *src
)

Load text stream or text string and convert to UTF-8.

The returned string must be freed by the caller.

function pdf_to_quad

fz_quad
pdf_to_quad (
        fz_context *ctx,
        pdf_obj *array,
        int offset
)

function pdf_to_point

fz_point
pdf_to_point (
        fz_context *ctx,
        pdf_obj *array,
        int offset
)

function pdf_to_rect

fz_rect
pdf_to_rect (
        fz_context *ctx,
        pdf_obj *array
)

function pdf_to_matrix

fz_matrix
pdf_to_matrix (
        fz_context *ctx,
        pdf_obj *array
)

function pdf_to_date

int64_t
pdf_to_date (
        fz_context *ctx,
        pdf_obj *time
)

function pdf_get_indirect_document

pdf_document *
pdf_get_indirect_document (
        fz_context *ctx,
        pdf_obj *obj
)

pdf_get_indirect_document and pdf_get_bound_document are now deprecated. Please do not use them in future. They will be removed.

Please use pdf_pin_document instead.

function pdf_get_bound_document

pdf_document *
pdf_get_bound_document (
        fz_context *ctx,
        pdf_obj *obj
)

function pdf_pin_document

pdf_document *
pdf_pin_document (
        fz_context *ctx,
        pdf_obj *obj
)

pdf_pin_document returns a new reference to the document to which obj is bound. The caller is responsible for dropping this reference once they have finished with it.

This is a replacement for pdf_get_indirect_document and pdf_get_bound_document that are now deprecated. Those returned a borrowed reference that did not need to be dropped.

Note that this can validly return NULL in various cases: 1) When the object is of a simple type (such as a number or a string), it contains no reference to the enclosing document. 2) When the object has yet to be inserted into a PDF document (such as during parsing). 3) And (in future versions) when the document has been destroyed but the object reference remains.

It is the caller’s responsibility to deal with a NULL return here.

function pdf_set_int

void
pdf_set_int (
        fz_context *ctx,
        pdf_obj *obj,
        int64_t i
)

macro PDF_NAME

#define PDF_NAME(X)

Voodoo to create PDF_NAME(Foo) macros from name-table.h

macro PDF_MAKE_NAME

#define PDF_MAKE_NAME(STRING,NAME)

enum pdf_obj_enum

enum pdf_obj_enum {
        PDF_ENUM_NULL,
        PDF_ENUM_TRUE,
        PDF_ENUM_FALSE,
#include "mupdf/pdf/name-table.h"
        PDF_ENUM_LIMIT,
}

macro PDF_NULL

#define PDF_NULL ((pdf_obj*)(intptr_t)PDF_ENUM_NULL)

macro PDF_TRUE

#define PDF_TRUE ((pdf_obj*)(intptr_t)PDF_ENUM_TRUE)

macro PDF_FALSE

#define PDF_FALSE ((pdf_obj*)(intptr_t)PDF_ENUM_FALSE)

macro PDF_LIMIT

#define PDF_LIMIT ((pdf_obj*)(intptr_t)PDF_ENUM_LIMIT)

Implementation details: subject to change.

function pdf_set_str_len

void
pdf_set_str_len (
        fz_context *ctx,
        pdf_obj *obj,
        size_t newlen
)

for use by pdf_crypt_obj_imp to decrypt AES string in place

Journalling

function pdf_enable_journal

void
pdf_enable_journal (
        fz_context *ctx,
        pdf_document *doc
)

Call this to enable journalling on a given document.

function pdf_begin_operation

void
pdf_begin_operation (
        fz_context *ctx,
        pdf_document *doc,
        const char *operation
)

Call this to start an operation. Undo/redo works at ‘operation’ granularity. Nested operations are all counted within the outermost operation. Any modification performed on a journalled PDF without an operation having been started will throw an error.

function pdf_begin_implicit_operation

void
pdf_begin_implicit_operation (
        fz_context *ctx,
        pdf_document *doc
)

Call this to start an implicit operation. Implicit operations are operations that happen as a consequence of things like updating an annotation. They get rolled into the previous operation, because they generally happen as a result of them.

function pdf_end_operation

void
pdf_end_operation (
        fz_context *ctx,
        pdf_document *doc
)

Call this to end an operation.

function pdf_abandon_operation

void
pdf_abandon_operation (
        fz_context *ctx,
        pdf_document *doc
)

Call this to abandon an operation. Revert to the state when you began.

function pdf_undoredo_state

int
pdf_undoredo_state (
        fz_context *ctx,
        pdf_document *doc,
        int *steps
)

Call this to find out how many undo/redo steps there are, and the current position we are within those. 0 = original document, *steps = final edited version.

function pdf_undoredo_step

const char *
pdf_undoredo_step (
        fz_context *ctx,
        pdf_document *doc,
        int step
)

Call this to find the title of the operation within the undo state.

function pdf_can_undo

int
pdf_can_undo (
        fz_context *ctx,
        pdf_document *doc
)

Helper functions to identify if we are in a state to be able to undo or redo.

function pdf_can_redo

int
pdf_can_redo (
        fz_context *ctx,
        pdf_document *doc
)

function pdf_undo

void
pdf_undo (
        fz_context *ctx,
        pdf_document *doc
)

Move backwards in the undo history. Throws an error if we are at the start. Any edits to the document at this point will discard all subsequent history.

function pdf_redo

void
pdf_redo (
        fz_context *ctx,
        pdf_document *doc
)

Move forwards in the undo history. Throws an error if we are at the end.

function pdf_discard_journal

void
pdf_discard_journal (
        fz_context *ctx,
        pdf_journal *journal
)

Called to reset the entire history. This is called implicitly when a non-undoable change occurs (such as a pdf repair).

function pdf_drop_journal

void
pdf_drop_journal (
        fz_context *ctx,
        pdf_journal *journal
)

Internal destructor.

function pdf_serialise_journal

void
pdf_serialise_journal (
        fz_context *ctx,
        pdf_document *doc,
        fz_output *out
)

Internal call as part of saving a snapshot of a PDF document.

function pdf_deserialise_journal

void
pdf_deserialise_journal (
        fz_context *ctx,
        pdf_document *doc,
        fz_stream *stm
)

Internal call as part of loading a snapshot of a PDF document.

function pdf_add_journal_fragment

void
pdf_add_journal_fragment (
        fz_context *ctx,
        pdf_document *doc,
        int parent,
        pdf_obj *copy,
        fz_buffer *copy_stream,
        int newobj
)

Internal call as part of creating objects.

function pdf_format_date

char *
pdf_format_date (
        fz_context *ctx,
        int64_t time,
        char *s,
        size_t n
)

function pdf_parse_date

int64_t
pdf_parse_date (
        fz_context *ctx,
        const char *s
)

function pdf_is_image_stream

int
pdf_is_image_stream (
        fz_context *ctx,
        pdf_obj *obj
)