我有一个流程,如果客户希望在创建业务单元时生成和下载报告,他可以单击该流程。本报告将采用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或"在新选项卡中打开",然后执行下一行,帮助页面重定向和打开所需的视图。
如果需要进一步解释,也请告诉我。我尽力解释了这里的情况。我在谷歌上看过这个,但我还没有找到任何解决方案。
如有任何帮助,我们将不胜感激。
您应该在运行FPDF
代码之前创建新选项卡。
或者,您可以将pdf保存为一个文件,并打开一个具有正确标题的新选项卡。请看这个问题:通过PHP/Perl 在用户浏览器中显示PDF文件
除非将代码保存到文件或字符串中,否则代码将以设计输出结束。
$pdf->Output($filename,'F');
如果你能详细说明输出后你想做什么,我可能会提供更多帮助。
以下是我们正在做的事情和一些想法:
- Output()方法接受两个参数,name和dest。您正在为name参数发送一个数组,可能不是您想要的。第二个dest将使用您指定的"D"
- 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);
}