【问题标题】:generate and save multiple pdf files using mPDF使用 mPDF 生成并保存多个 pdf 文件
【发布时间】:2016-12-12 19:50:03
【问题描述】:

我有一个使用 mPDF 库生成单个 PDF 文件的代码。但是当我尝试一次生成 2 个 pdf 并尝试下载这些文件时,它不会生成第二个文件。

代码如下:

function download($id)
    {
        $this->load->library('m_pdf');

        // download annexC form
        $this->annexc($id);

        // download resident form
        $this->resident($id);
    }

function annexc($id)
    {
        $data1['udata'] = $this->general_model->getUserDetail($id);
        // mprd($data);
        $name1 = str_replace(' ', "-", strtolower($data1['name']));
        $time1 = time();
        $file_name1 = $name1.$time1.$id.'-Annexc-Form';
        $html1 = $this->load->view('annexc/form_download', $data1, true);
        $pdfFilePath1 = SAVE_PDF_ANNEXC.$file_name1.".pdf";
        $this->m_pdf->pdf->SetDisplayMode('fullpage');
        $this->m_pdf->pdf->WriteHTML($html1);
        $this->m_pdf->pdf->Output(SAVE_PDF_ANNEXC.$file_name1.".pdf", "F");
    }

    function resident($id)
    {
        $data['udata'] = $this->general_model->getUserDetail($id);
        $name = str_replace(' ', "-", strtolower($data['name']));
        $time = time();
        $file_name = $name.$time.$id.'-Residential-Form';
        $html = $this->load->view('resident/form_download', $data, true);
        $file_name = trim($file_name);
        $pdfFilePath = SAVE_PDF_RESIDENT.$file_name.".pdf";
        $this->m_pdf->pdf->SetDisplayMode('fullpage');
        $this->m_pdf->pdf->defaultfooterfontstyle='';
        $this->m_pdf->pdf->defaultfooterfontsize=12;
        $this->m_pdf->pdf->defaultfooterline=0;
        $this->m_pdf->pdf->setFooter('{PAGENO}');
        $this->m_pdf->pdf->WriteHTML($html);
        $this->m_pdf->pdf->Output($pdfFilePath, "F");
    }

当我调用 download() 时,它将成功创建附件 c pdf,但对于第二个 resident(),它将创建数据与附件表单相同的 pdf。为什么这样?我应该进行哪些更改?

【问题讨论】:

    标签: php codeigniter pdf codeigniter-3 mpdf


    【解决方案1】:

    以下是谷歌搜索后的答案:

    取消设置旧的 HTML 和 mpdf 对象并创建新对象。

    function download($id)
        {
            $data['udata'] = $this->general_model->getUserDetail($id);
            $time = time();
            ini_set('memory_limit','256M');
            $file_name_res = $time.$id.'-resident-form';
            $html = $this->load->view('resident/form_download', $data, true);
            $pdfFilePathRes = PDF_FILES.$file_name_res.".pdf";
            $this->load->library('m_pdf');
            $mpdf = new mPDF();
            $mpdf->SetDisplayMode('fullpage');
            $mpdf->defaultfooterfontstyle='';
            $mpdf->defaultfooterfontsize=12;
            $mpdf->defaultfooterline=0;
            $mpdf->setFooter('{PAGENO}');
    
            $mpdf->WriteHTML($html);
            $mpdf->Output($pdfFilePathRes, "F");
    
            unset($mpdf); // this is the magic
            unset($html); // this is the magic
    
            ini_set('memory_limit','256M');
            $file_name = $time.$id.'-annexc-form';
            $html = $this->load->view('annexc/form_download', $data, true);
            $pdfFilePath = PDF_FILES.$file_name.".pdf";
            $this->load->library('m_pdf');
            $mpdf = new mPDF();
            $mpdf->SetDisplayMode('fullpage');
            $mpdf->WriteHTML($html);
            $mpdf->Output($pdfFilePath, "F");        
        }
    

    【讨论】:

    • 完美解决方案!很棒
    【解决方案2】:

    你调用的是同一个模型函数

    $data['udata'] = $this->general_model->getUserDetail($id);
    

    然后回显相同的结果,但名称不同

    $html1 = $this->load->view('annexc/form_download', $data1, true);
    $html = $this->load->view('resident/form_download', $data, true);
    

    即使视图的样式不同,您也会得到相同的结果。

    【讨论】:

    • 那么有什么解决办法呢?我应该调用一次吗?
    猜你喜欢
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    相关资源
    最近更新 更多