【问题标题】:Open PDF from FPDF in new tab在新选项卡中从 FPDF 打开 PDF
【发布时间】:2013-12-22 23:25:40
【问题描述】:

我有一个流程,如果客户希望在创建业务部门时生成和下载报告,请点击该流程。此报告将采用 pdf 格式。

目前我正在使用 Codeigniter,我使用 FPDF 生成 pdf 文件。

PDF 在请求时可以很好地打开。但是

问题: 1) PDF 在同一选项卡中打开。我希望 pdf 在新选项卡中打开,我有点想怎么做。 如果它是 pdf 链接,“_target”将帮助我在新选项卡中打开 pdf。但这里是服务器端生成的pdf。因此“_target”将不起作用,所以我正在寻找替代方案。

2) pdf生成后,不读取下一行代码。执行实际上在这里停止。我想知道即使在输出 pdf 文件后如何使该过程继续进行。

例子

$pdf->Output($exampleArray, 'D'); // exampleArray carries all data to PDF and helps output the pdf and D forces FPDF to download PDF rather than opening it. Instead of 'D' I can use 'I' but that will output the pdf in same tab.

$this->continueNextFunction(); // This function should run and open the views in it.

从上面的示例中,我希望看到下载的 PDF 或“在新选项卡中打开”,然后执行下一行,帮助页面重定向和打开所需的视图。

如果需要进一步解释,请告诉我。我尽力解释这里的情况。我曾在谷歌上看过这个,但我还没有真正找到任何解决方案。

对此的任何帮助将不胜感激。

【问题讨论】:

  • Deep - 要确认,您希望文档在新选项卡中打开,而不是提示他们正确下载?
  • @ChrisRasco 可以在新选项卡中打开或提示下载都可以,只要执行继续。
  • 好的。我大量使用 FPDF。让我看看我们是怎么做的。待机
  • 你能解释更多关于$this->continueNextFunction();的信息吗?因为据我所知,如果您使用 fpdf 创建 pdf 文件,$pdf->Output(); 将是最后执行的语法。如果您仍想使用视图界面,​​请确保拆分文件和函数以创建 pdf 和视图。要在新标签中打开,您可以使用语法 window.open('<?php echo site_url();?>/controller_file/function_create_pdf/'); 的 JavaScript

标签: php html codeigniter pdf fpdf


【解决方案1】:

您应该在运行FPDF 代码之前创建新选项卡。

或者,您可以将 pdf 保存为文件并打开具有正确标题的新选项卡。 看到这个问题:Show a PDF files in users browser via PHP/Perl

除非您将其保存到文件或字符串中,否则代码会根据设计以输出终止。

$pdf->Output($filename,'F');

如果你能详细说明输出后你想做什么,我可能会提供更多帮助。

【讨论】:

  • Chris Rasco 的答案包含所需的标题
【解决方案2】:

这是我们正在做的事情和一些想法:

  1. Output() 方法采用 2 个参数,名称和目标。您正在为 name 参数发送一个数组,可能不是您想要的。第二个,dest,将使用您指定的“D”。
  2. Output() 根据您为 dest 指定的值发送标头和数据。见下文。

这意味着如果您想继续执行代码,您可能需要将生成此 PDF 的逻辑分离到一个新页面中,像以前一样使用 target="_new" 在新选项卡中打开它思考,然后提示用户下载,或者在这种情况下,您可以使用“I”值并在浏览器中打开它。

来自 fpdf.php [第 999-1036 行] 的输出():

switch($dest)
    {
        case 'I':
            // Send to standard output
            $this->_checkoutput();
            if(PHP_SAPI!='cli')
            {
                // We send to a browser
                header('Content-Type: application/pdf');
                header('Content-Disposition: inline; filename="'.$name.'"');
                header('Cache-Control: private, max-age=0, must-revalidate');
                header('Pragma: public');
            }
            echo $this->buffer;
            break;
        case 'D':
            // Download file
            $this->_checkoutput();
            header('Content-Type: application/x-download');
            header('Content-Disposition: attachment; filename="'.$name.'"');
            header('Cache-Control: private, max-age=0, must-revalidate');
            header('Pragma: public');
            echo $this->buffer;
            break;
        case 'F':
            // Save to local file
            $f = fopen($name,'wb');
            if(!$f)
                $this->Error('Unable to create output file: '.$name);
            fwrite($f,$this->buffer,strlen($this->buffer));
            fclose($f);
            break;
        case 'S':
            // Return as a string
            return $this->buffer;
        default:
            $this->Error('Incorrect output destination: '.$dest);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2021-12-02
    • 2019-04-12
    • 2017-04-28
    • 2012-12-05
    • 2012-06-22
    • 2019-10-27
    相关资源
    最近更新 更多