【php】PDFlibで総ページ数表示
問題
PDFLibを利用しているが、総ページ数を各ページに書き込みたい(何ページ中何ページ目)。
ただ、総ページ数はPDF作成処理が終わってみないと分からない。
できるのか?
答え
PDFLibの pdf_suspend_page関数 と pdf_resume_page関数 を使う方法がある。
ページをbeginして、内容を追加した後で、endするのではなく、susbendして途中の状態で置いといて、次のページの処理に入ることができる。全ページの処理が終わってから、suspendしていたページをresume(再開)して、総ページ数を書き込んでからendできる。
example
<?php $p = PDF_new(); PDF_begin_document($p, "", ""); $pagecount = 0; $font = PDF_load_font($p, "Helvetica-Bold", "winansi", ""); //PDF 1ページ目 ++$pagecount; PDF_begin_page_ext($p, 595, 842, ""); PDF_setfont($p, $font, 24.0); PDF_set_text_pos($p, 50, 700); PDF_show($p, "PDF PDF PDF PDF"); PDF_continue_text($p, "page count test"); PDF_set_text_pos($p, 400, 100); PDF_show($p, "page " . $pagecount); PDF_suspend_page($p, ''); //PDF 2ページ目 ++$pagecount; PDF_begin_page_ext($p, 595, 842, ""); PDF_setfont($p, $font, 24.0); PDF_set_text_pos($p, 50, 700); PDF_show($p, "PDF PDF PDF PDF"); PDF_continue_text($p, "page count test"); PDF_set_text_pos($p, 400, 100); PDF_show($p, "page " . $pagecount); PDF_suspend_page($p, ''); //PDF 3ページ目 ++$pagecount; PDF_begin_page_ext($p, 595, 842, ""); PDF_setfont($p, $font, 24.0); PDF_set_text_pos($p, 50, 700); PDF_show($p, "PDF PDF PDF PDF"); PDF_continue_text($p, "page count test"); PDF_set_text_pos($p, 400, 100); PDF_show($p, "page " . $pagecount); PDF_suspend_page($p, ''); //PDFの総ページ数が分かった後で //PDF 1ページ目再開 PDF_resume_page($p, 'pagenumber=1'); PDF_show($p, " of " . $pagecount); PDF_end_page_ext($p, ""); //PDF 2ページ目再開 PDF_resume_page($p, 'pagenumber=2'); PDF_show($p, " of " . $pagecount); PDF_end_page_ext($p, ""); //PDF 3ページ目再開 PDF_resume_page($p, 'pagenumber=3'); PDF_show($p, " of " . $pagecount); PDF_end_page_ext($p, ""); PDF_end_document($p, ""); //PDFの内容取得 $buf = PDF_get_buffer($p); //PDF出力 header("Content-type: application/pdf"); header("Content-Length: " . strlen($buf)); header("Content-Disposition: inline; filename=hello.pdf"); print $buf; //おしまい PDF_delete($p);
匿名 2012年10月17日 01:12
PDFLib って有料ですよね?
yoshimura 2012年10月17日 01:30
そうですね。
ライセンスを購入しないでも、インストールして使ってみるところまではいけます。
ライセンスを購入しないと、生成したPDFにロゴが入ったりしたと思います。