【问题标题】:How to handle a codeigniter PDF generator如何处理 codeigniter PDF 生成器
【发布时间】:2012-08-27 11:31:35
【问题描述】:

在视图页面“ShowInformation.php”中,我有类似这样的代码,包括省略 css 样式代码和其他内容

<?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。

有什么建议吗?

【问题讨论】:

  • 您使用哪个库来生成 pdf?
  • @Runicer :我使用 html2pdf lib 在我的网站上生成 pdf 并且没问题。但是 mPDF 似乎也可以。如果您需要精确的帮助,请尝试更精确;)
  • 我使用了 mPDF。它与 PHP/HTML/CSS 兼容,但不支持 UTF-8 编码?我尝试使用 UTF-8 选项进行实例化,但它不起作用
  • @Runicer 我像这样实例化 mPDF:$mpdf=new mPDF('utf-8','A4','','',0,0,0,0,0,0);,这似乎适用于 UTF-8。也许它对它所写的案例很挑剔?

标签: php pdf codeigniter-2


【解决方案1】:

我正在使用 html2pdf,它可以使用 CI 2+。

我花了一些时间为我的案例找到合适的例子,但我终于成功了。

我是这样做的:

1- 安装

获取 html2pdfhttp://www.html2pdf.fr/en

将 html2pdf 文件夹复制到你的 CI/application/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- 视图文件

在“application/views/path/to/view_tpl.php”中创建一个类似文件的模板

使用 {myvar} 等占位符而不是 &lt;?php echo $myvar ?&gt;

记住!不包括:html、head、body 标签!

<!-- 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


希望对你有帮助!

【讨论】:

    【解决方案2】:

    哇,我工作了 但我怀疑这是最好的方法吗?

    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');   
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-29
      • 2013-12-19
      • 2016-10-14
      • 2013-09-01
      • 2019-06-12
      • 1970-01-01
      • 2010-12-21
      相关资源
      最近更新 更多