c html模板加页码,在libharu中动态添加页面C

看看type definition HPDF_Page。

HPDF_Page p;

p是指针

HPDF_Page *p;

* P现在是双指针

malloc的内存分配:

HPDF_Page *page; //this is double pointer!!!!

page = malloc(number_of_pages * sizeof(HPDF_Page*)); // memory allocation for array of pointers

if(page)

{

for(i = 0; i < number_of_pages; i++)

{

page[i] = malloc(sizeof(HPDF_Page)); // allocation for each page pointer

page[i] = HPDF_AddPage (pdf);

}

}

realloc的内存分配:

number_of_pages++;

page = realloc(page, number_of_pages * sizeof(HPDF_Page*));

if(page)

{

page[number_of_pages-1] = malloc(sizeof(HPDF_Page));

page[number_of_pages-1] = HPDF_AddPage (pdf);

}

Malloc将工作。但realloc将无法正常工作,程序将失败!我不知道为什么。工作方法是使用链表:

struct my_ch

{

struct my_ch *n;

struct my_ch *p;

HPDF_Page page;

int page_number;

}*f_item = NULL, *l_item = NULL;

void add_item()

{

struct my_ch *pom;

pom = f_item;

if(pom)

{

struct my_ch *prev;

while(pom->n)

{

pom = pom->n;

}

prev = pom;

pom->n = malloc(sizeof(struct my_ch));

pom = pom->n;

pom->p = prev;

pom->n = NULL;

pom->page = malloc(sizeof(HPDF_Page));

pom->page_number = pom->prev->page_number + 1;

}

else

{

pom = malloc(sizeof(struct my_ch));

pom->p = NULL;

pom->n = NULL;

pom->page = malloc(sizeof(HPDF_Page));

pom->page_number = 1;

}

l_item = pom;

}

void add_my_new_page()

{

add_item();

l_item->page = HPDF_AddPage(pdf);

//paste some nice graphic, text...

}

bool modify_page(int number_of_page)

{

struct my_ch *p;

p = f_item;

while(p)

{

if(p->page_number == number_of_page)

{

// let`s do some modifycation on p->page

HPDF_Page_Rectangle(p->page, ..., ...);

HPDF_Page_Stroke(p->page);

return true;

}

p = p->n;

}

return false;

}

我在程序中使用此代码,它工作得很好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值