【问题标题】:download created pdf by navigating to a location in codeigniter通过导航到 codeigniter 中的某个位置下载创建的 pdf
【发布时间】:2017-12-31 08:45:44
【问题描述】:

我使用DOMpdf 创建了一个页面的pdf文件,如下所示。

<?php

use Dompdf\Dompdf;
class Pdfgenerator {

  public function generate($html, $filename='', $stream=TRUE, $paper = 'A4', $orientation = "portrait")
  {
    $dompdf = new DOMPDF(array('enable_remote' => true));
    $dompdf->loadHtml($html);
    $dompdf->setPaper($paper, $orientation);
    $dompdf->render();
    if ($stream) {
        $dompdf->stream($filename.".pdf", array("Attachment" => 0));
    } else {
        return $dompdf->output();
    }
  }
}

点击查看页面上的Save As Pdf 按钮时,页面的pdf 将在控制器功能中使用DOMpdf 创建,并在浏览器的新选项卡中打开pdf,可以在设置的下载路径上下载它浏览器。

$html = $this->load->view('test/pdfview', $this->data, true);
$this->load->library('pdfgenerator');
$filename = 'testfile';
$this->pdfgenerator->generate($html, $filename, true, 'a4', '');

我真正想要的是在给定路径上下载文件,以便在创建 PDF 时会打开一个保存提示,该提示已经导航到给定位置。如果位置正确,我可以按保存,否则我可以导航到正确的保存位置。 这些是我已经问过的一些类似的问题,但我发现它们没有帮助。

【问题讨论】:

    标签: javascript html codeigniter pdf


    【解决方案1】:

    您可以在 php 中创建如下脚本,它将生成的 pdf 发送到浏览器

     <?php
    
    
    use Dompdf\Dompdf;
    class Pdfgenerator {
    
      public function downLoadPdf(){
            $name= "testfile.pdf";
    
            header('Content-Description: File Transfer');
            header('Content-Type: application/force-download');
            header("Content-Disposition: attachment; filename=\"" . basename($name) . "\";");
            header('Content-Transfer-Encoding: binary');
            header('Expires: 0');
            header('Cache-Control: must-revalidate');
            header('Pragma: public');
            header('Content-Length: ' . filesize($name));
            ob_clean();
            flush();
            readfile("your_file_path/".$name); //showing the path to the server where the file is to be download
    
        }
    }
        ?>
    

    只需在您的类中添加此函数并在单击保存按钮时使用 ajax 调用它(如果它存在于您的视图页面中)
    当您从浏览器中单击保存按钮调用此脚本时,浏览器将自动打开保存窗口,您可以将文件保存在您想要的位置

    【讨论】:

    • 这似乎不起作用。我在创建 pdf 后添加了此代码。即在$this-&gt;pdfgenerator-&gt;generate($html, $filename, true, 'a4', '')之后,问题是一样的,pdf在浏览器页面中打开,没有出现保存窗口。
    • 我已经编辑了答案。你应该创建一个新函数并从你的视图中调用保存按钮。
    • 感谢您的帮助,但我不明白如何使用您的 sn-p 生成 pdf,即在保存按钮调用时,调用将 html 转换为 pdf 的函数(即 $this-&gt;pdfgenerator-&gt;generate($html, $filename, true, 'a4', '')) ,如果我在保存时调用 downloadPdf,testfile.pdf 甚至不会被创建来下载??
    • 当您调用generate 函数时,您必须将pdf 保存在某处。我在答案中添加的 sn-p 不会生成 pdf,它会将保存的 pdf 从您的服务器位置发送到浏览器。您的功能只是生成 pdf 文件并将其显示在浏览器中。您必须将其保存在服务器中的某个位置以供下载。希望您明白我的意思
    猜你喜欢
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2018-02-13
    相关资源
    最近更新 更多