2012-09-02 36 views
1

在視圖頁面「ShowInformation.php」我的代碼是這樣的,包括省略CSS樣式代碼和其他的東西如何處理笨PDF生成

<?php foreach ($preUser as $value): ?> 

Citizen ID : <?php echo $value->cid;?></br> 
First Name : <?php echo $value->name;?></br> 
... 

<?php endforeach; ?> 

$ preUser是從一個變量傳遞控制器及其來自數據庫。

我需要在該頁面添加下載按鈕並使用完全相同的PHP/HTML/CSS生成PDF,以支持UTF-8。

有什麼建議嗎?

+0

您使用哪個庫生成PDF? –

+0

@Runicer:我使用html2pdf lib在我的網站上生成PDF,並確定。但mPDF似乎也沒關係。如果您需要精確的幫助,請儘量更精確;) – pit

+0

我使用了mPDF。它與PHP/HTML/CSS兼容,但不支持UTF-8編碼?我嘗試使用UTF-8選項實例化,但它不起作用 – Runicer

回答

0

我正在使用html2pdf,它與CI 2+的罰款。

它花了我一些時間爲我的案例找到正確的例子,但我終於成功了。

我是這樣做的:

1 INSTALL

獲取在HTML2PDFhttp://www.html2pdf.fr/en

複製HTML2PDF文件夾到你的CI /應用/ THIRD_PARTY/

*(你會得到類似於:application/third_party/html2pdf/html2pdf.class.php)*


2-控制器函數來處理PDF

<?php 
    class Somecontroller { 

     function dopdf($mydat){ 

      $this->CI->output->enable_profiler(false); 
      $this->CI->load->library('parser'); 
      require_once(APPPATH.'third_party/html2pdf/html2pdf.class.php'); 

      // set vars 
      $tpl_path = 'path/to/view_tpl.php'; 
      $thefullpath = '/path/to/file_pdf.pdf'; 
      $preview = false; 
      $previewpath = '/path/to/preview_pdf.pdf'; 


      // PDFs datas 
      $datas = array(
       'first_name' => $mydat->first_name, 
       'last_name' => $mydat->last_name, 
       'site_title' => config_item('site_title'), 
      ); 

      // Encode datas to utf8 
      $tpl_data = array_map('utf8_encode',$datas); 


      // 
      // GENERATE PDF AND SAVE FILE (OR OUTPUT) 
      // 

      $content = $this->CI->parser->parse($tpl_path, $tpl_data, TRUE); 
      $html2pdf = new HTML2PDF('P','A4','fr', true, 'UTF-8', array(7, 7, 10, 10)); 
      $html2pdf->pdf->SetAuthor($tpl_data['site_title']); 
      $html2pdf->pdf->SetTitle($tpl_data['site_title']); 
      $html2pdf->pdf->SetSubject($tpl_data['site_title']); 
      $html2pdf->pdf->SetKeywords($tpl_data['site_title']); 
      $html2pdf->pdf->SetProtection(array('print'), '');//allow only view/print 
      $html2pdf->WriteHTML($content); 
      if (!$preview) //save 
       $html2pdf->Output($thefullpath, 'F'); 
      else { //save and load 
       $html2pdf->Output($previewpath, 'D'); 
      } 

     } 
    } 

3-視圖文件

創建像在「應用/視圖/路徑文件的模板/ to/view_tpl.php「

使用佔位符{myvar}而不是<?php echo $myvar ?>

請記住!不包括:HTML,頭,身體標籤!

<!-- do not include: html,head, body tags --> 
<style type="text/css"> 
<!-- 
P {text-align:justify;font-size: 12pt;} 
li {text-align:justify;font-size: 12pt;} 
table.page_footer {width: 100%; border: none; border-top: solid 1px #000000; } 
--> 
</style> 

<page backtop="14mm" backbottom="14mm" backleft="10mm" backright="10mm" style="font-size: 12pt"> 
    <page_footer> 
     <table class="page_footer"> 
      <tr> 
       <td style="width: 100%; text-align: right"> 
        page [[page_cu]]/[[page_nb]] 
       </td> 
      </tr> 
     </table> 
    </page_footer> 
<div style="width:100%;border: 1px solid #000000;text-align:center"> 
    <h1><b>{site_title}</b></h1></div> 
    <p> 
    Firstname: {first_name}<br> 
    lastname: {last_name}<br> 
    </p> 
    <img src="<?php echo BASE_URL.'assets/img/test.png'; ?>" width="490" height="306"> 
</page> 

4. PDF文件目的地

PDF格式可以在任何地方保存。只要指定的控制器功能的目的地(見$thefullpath$previewpath


希望它可以幫助!

+0

你知道它是否適用於codeigniter 1.7? –

0

哇我工作 但我有我的懷疑這是最好的方式?

CI 2.1。3

public function mostrar() 
{  
    require_once(APPPATH.'third_party/html2pdf/html2pdf.class.php'); 

    //vista template pdf 
    $template_pdf = $this->load->view('pdf_mostrar', '', TRUE); 


    $html2pdf = new HTML2PDF('P','A4','fr'); 
    $html2pdf->WriteHTML($template_pdf); 
    $html2pdf->Output('exemple.pdf'); 
}