Пример #1
0
static void
dict_free_val(char *key, void *val, void *x)
{
    extern void pdf_obj_delete(void *);
    pdf_obj_delete(val);
    if (val)
        pdf_free(val);
}
Пример #2
0
void free_array(pdf_obj *o)
{
      if (o && o->t == eArray)
      {
            int i;
            for (i = 0; i < o->value.a.len; i++)
            {
                  pdf_obj_delete(&o->value.a.items[i]);
            }
            if (o->value.a.len)
                  pdf_free(o->value.a.items);
	    //else if (o->value.a.items)
	    //	  pdf_free(o->value.a.items);
      }
}
Пример #3
0
int
pdf_obj_insert(int n, int gen, void *d)
{
      pdf_map *m = pdf_map_insert(n, gen);
      pdf_obj *o = NULL;
      if (o = pdf_obj_find(n, gen))
      {
	    char buf[128];
	    sprintf(buf, "Duplicated object (%d,%d) is found, old one is removed!\n", n, gen);
	    DMSG(buf);
	    pdf_obj_delete(o);
	    pdf_free(o);
      }
      bpt_insert(m->head, n, d);
      return 0;
}
Пример #4
0
static void
pdf_info_free(pdf_info *info)
{
    if (!info)
        return;
    if (info->title)
    {
        pdf_obj_delete(info->title);
        free(info->title);
    }
    if (info->author)
    {
        pdf_obj_delete(info->author);
        pdf_free(info->author);
    }
    if (info->subject)
    {
        pdf_obj_delete(info->subject);
        pdf_free(info->subject);
    }
    if (info->keywords)
    {
        pdf_obj_delete(info->keywords);
        pdf_free(info->keywords);
    }
    if (info->creator)
    {
        pdf_obj_delete(info->creator);
        pdf_free(info->creator);
    }
    if (info->producer)
    {
        pdf_obj_delete(info->producer);
        pdf_free(info->producer);
    }
    if (info->trapped)
    {
        pdf_obj_delete(info->trapped);
        pdf_free(info->trapped);
    }
    if (info->creationdate) pdf_free(info->creationdate);
    if (info->moddate)  pdf_free(info->moddate);
}
Пример #5
0
void  dict_free(dict* d)
{
    if (d)
    {
        if (d->dict)
        {
#ifdef TSTC
            tstc_call(d->dict, 0, dict_entry_free, 0);
            tstc_free(d->dict);
#elif defined (HASHMAP)
            extern void pdf_obj_delete(void *);
            hash_map_entry *e;
            hash_map_iterator *i = hash_map_front(d->dict);

            while (!hash_map_iterator_at_end(i))
            {
                e = hash_map_iterator_get(i);
                pdf_obj_delete(e->v);
                pdf_free(e->v);
                hash_map_iterator_next(i);
            }
            hash_map_iterator_free(i);
            hash_map_free(d->dict);
#else
            tst_print_reset(1);
            tst_traverse(d->dict, dict_free_val, NULL);
            tst_cleanup(d->dict);
            tst_print_reset(-1);
#endif
        }
	    if (d->stream)
	    {
            pdf_free(d->stream);
	    }
        pdf_free(d);
    }
    return;
}
Пример #6
0
pdf_obj *
pdf_info_create(pdf_info *i)
{
    pdf_obj *o = pdf_dict_new(0);
    dict *d;
    char buf[128];
    pdf_obj *date_obj;

    if (!o)
        return 0;

    d = o->value.d.dict;

    if (i && i->title)
    {
        pdf_dict_insert_obj(d, "Title", i->title);
    }
    if (i && i->author)
    {
        pdf_dict_insert_obj(d, "Author", i->author);
    }
    if (i && i->subject)
    {
        pdf_dict_insert_obj(d, "Subject", i->subject);
    }
    if (i && i->keywords)
    {
        pdf_dict_insert_obj(d, "Keywords", i->keywords);
    }

    if (!i || !i->producer)
    {
        pdf_dict_insert_string(d, "Producer", "PegDF", strlen("PegDF"));
    }
    else
    {
        pdf_dict_insert_obj(d, "Producer", i->producer);
    }
    if (!i || !i->creator)
    {
        pdf_dict_insert_string(d, "Creator", "PegDF", strlen("PegDF"));
    }
    else
    {
        pdf_dict_insert_obj(d, "Creator", i->creator);
    }

    date_obj = pdf_datestring_create();

    if (!i || !i->creationdate)
    {
        if (date_obj)
            pdf_dict_insert_obj(d, "CreationDate", date_obj);
    }
    else
    {
        pdf_dict_insert_string(d, "CreationDate", i->creationdate, strlen(i->creationdate));
    }

    if (date_obj)
    {
        pdf_dict_insert_obj(d, "ModDate", date_obj);
    }

    if (date_obj)
    {
        pdf_obj_delete(date_obj);
        pdf_free(date_obj);
    }

    if (i && i->trapped)
    {
        pdf_dict_insert_obj(d, "Trapped", i->trapped);
    }

    return o;

}