【问题标题】:Download a PDF file instead of displaying it with CodeIgniter下载 PDF 文件而不是使用 CodeIgniter 显示它
【发布时间】:2015-08-17 09:20:08
【问题描述】:

我正在使用 CodeIgniter 和 R&OS pdf class 生成 PDF 文件。 但是现在的问题是pdf显示给浏览器。 相反,我希望它被下载。 这是我的代码:

$this->load->library('cezpdf');

        $data['users'] = $this->user->get_all_ayant_droits();

        foreach($data['users'] as $user) {
            $db_data[] = array('name' => $user->nom, 'department' => $user->Department, 'status' => $user->Status);
        }

        $col_names = array(
            'name' => 'Noms et Prenoms',
            'department' => 'Département',
            'status' => 'Status'
        );

        $this->cezpdf->ezTable($db_data, $col_names, 'Ayant droit Base Loisirs de Kribi', array('width'=>550));
        $this->cezpdf->ezStream();  

这个控制器缺少什么来发送文件下载?

【问题讨论】:

  • 我已经看过了@Craig,但从我读到的内容来看,我首先需要一个文件。就我而言,我没有文件路径或名称......
  • 您不需要文件,您可以创建一个。我不知道它是否会起作用,但试试这个; force_download('download.pdf', $this->cezpdf->ezStream());这是将您的数据下载为“download.pdf”
  • 它不起作用,它的行为就像我刚刚显示它一样。没有下载。
  • 试试这个。 $this->cezpdf->ezStream(array('download' => 1));我从文档pdf-php.sourceforge.net/api/classes/Cezpdf.html#method_ezStream 中得到了这个

标签: php codeigniter pdf download


【解决方案1】:

您可以使用下载助手https://ellislab.com/codeigniter/user-guide/helpers/download_helper.html

$this->load->helper('download');
$data = $this->cezpdf->ezStream(); 
force_download("PDF_filename.pdf", $data); 

您还可以通过设置适当的标头值来使用输出变量。

$this->output->set_header('Content-Disposition: attachment; filename="PDF_filename.pdf"');
$this->output->set_content_type('application/pdf')
             ->set_output($this->cezpdf->ezStream());

这里通过将内容类型设置为 appication/pdf 以便浏览器识别内容是 pdf 并且 Content-Disposition: attachment 强制下载文件。

希望这会有所帮助。抱歉英语不好。

【讨论】:

  • 第一个建议的行为就像没有下载,只是在浏览器上显示 pdf,第二个建议生成错误:消息:不推荐使用函数 set_magic_quotes_runtime() 和消息:分配新的返回值由参考已弃用
  • @pollux1er 感谢您的反馈。我会进一步调查并让你知道我是否会得到解决方案。
  • @pollux1er 请查看this
  • 感谢这个有用的链接。我测试了@Nadeshwaran,它正在工作。 IT 直接使用 R&OS pdf 类下载文件,它工作正常!感谢您的帮助
【解决方案2】:

您可以将参数传递给函数 ezStream

$this->cezpdf->ezStream(array $options);

$options 'compress' => 0/1 启用压缩。对于压缩级别,请在第一点使用$this->options['compression'] =。默认值:1 'download' => 0/1 显示内联(在浏览器中)或作为下载。默认值:0

【讨论】:

  • 你能写成一行吗?
  • $this->cezpdf->ezStream(array('download'=>1));
猜你喜欢
  • 2018-11-10
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 1970-01-01
  • 2019-12-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多