使用mpdf在codeginiter中的ajax调用上生成PDF

时间:2017-09-06 09:45:33

标签: jquery ajax codeigniter mpdf

这个问题可能是重复的,但我没有找到这种类型的错误的有效答案。我的代码在不使用ajax的情况下运行良好,但如果使用ajax则会出错。

    $this->load->library('m_pdf');
    $this->data['title']="Sales Report PDF";
    $this->data['description']="Sales report in PDF format";

    $data = $this->get_sales_report_for_pdf();
    $html=$this->load->view('dashboard/sales_report_pdf',$data, true);

    $pdfFilePath ="Salesreport-".time()."-download.pdf";
    $pdf = $this->m_pdf->load();
    $pdf->WriteHTML($html,2);
    $pdf->Output($pdfFilePath, "D");

任何人都可以知道如何处理这个问题吗?

2 个答案:

答案 0 :(得分:2)

  1. 使用" F" in $ pdf-> Output();
  2. 返回您保存的文件名,并在ajax中调用保存它的网址。
  3. $this->load->library('m_pdf');
    $this->data['title']="Sales Report PDF";
    $this->data['description']="Sales report in PDF format";
    
    $data = $this->get_sales_report_for_pdf();
    $html=$this->load->view('dashboard/sales_report_pdf',$data, true);
    
    $pdfFilePath ="Salesreport-".time()."-download.pdf";
    $pdf = $this->m_pdf->load();
    $pdf->WriteHTML($html,2);
    $pdf->Output(FCPATH.$pdfFilePath, "F");
    
    return $pdfFilePath;
    

    在Ajax响应中 location.href = YOURPATH。' filename.pdf';

答案 1 :(得分:0)

请替换

$pdf->Output($pdfFilePath, "D");

$pdf->Output($pdfFilePath, "F");

因为要下载D并且ajax不会为下载文件提供UI,所以请F保存 和Filepath应该有效

$pdfFilePath ="Salesreport-".time()."-download.pdf";

$pdfFilePath =FCPATH."upload/Salesreport-".time()."-download.pdf";

因此它将按名称保存到upload文件夹中。

注意:您无法通过ajax下载它会出错。