我期望的帮助最后写成问题。如果您已经知道解决方案,请参考以便您可以跳过整个解释并节省时间。
我正在使用FPDF库。默认情况下,库允许我在浏览器中打开PDF。
我希望下载文件而不是在浏览器中打开,因此我按下了一个按钮,并为其提供了下载属性,如下所示。
<a download href="pdf_conversion/actionpdf.php?mypdf=<?php echo $mypdf ?>"><button>Download PDF</button></a>
现在,下载工作正常,正在保存的文件名为 doc.pdf ,如果我理解正确,则是以下库提供给它的默认名称输出功能。
function Output($name='', $dest='')
{
// Output PDF to some destination
if($this->state<3)
$this->Close();
$dest = strtoupper($dest);
if($dest=='')
{
if($name=='')
{
$name = 'doc.pdf';
$dest = 'I';
}
else
$dest = 'F';
}
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);
}
return '';
}
actionpdf.php 结束时调用输出功能
$pdf->Output();
现在,我需要文件名为 mypdf 的值,该值是使用GET方法从URL获取的。我相信我应该在 actionpdf.php 页面的输出功能中传递 $ mypdf 作为参数。我被迫相信我的整个逻辑非常错误,或者我传递变量的方式非常错误,因为将变量传递为 $ pdf-&gt;输出($ mypdf); 结果在保存文件弹出窗口中, actionpdf.htm 作为文件。
问题:如何使用GET方法从URL获取变量的值,并将该值作为正在下载的PDF文件的名称。我正在使用FPDF库。
答案 0 :(得分:1)
如果您只想使用GET在URL路径中获取参数,请执行以下操作:
$myparameter = $_GET["myparameter"];
在这里,$ myparameter将包含在URL中传递的值:http://url/myfile.php?myparameter=myvalue
现在你所要做的就是将它传递给Output方法:
$pdf->Output($myparameter);
只是为了记录,你最好测试你正在寻找的参数是否存在,假设你的默认PDF文件应该是“pdf.pdf”:
$mypdf = "pdf";
if(isset($_GET["filename"]) && is_string($_GET["filename"])) {
$mypdf = $_GET["filename"];
}
//add the following line, NOTICE THE DOT BEFORE THE EQUAL (.=)
$mypdf .= ".pdf";
$pdf->Output($mypdf);
答案 1 :(得分:-1)
我弄清楚问题是什么。我所要做的就是,像我一样传递参数,然后对输出函数进行一些小改动,如下所示。
if($dest=='')
{
if($name=='')
{
$name = 'doc.pdf';
$dest = 'I';
}
else
$dest = 'I';
}
原始代码在 else 条件中有 $ dest =&#39; F&#39; ,这导致了问题。