Php 从文件中下载PDF的优雅方式

Php 从文件中下载PDF的优雅方式,php,fpdf,Php,Fpdf,我得到了一个文件,当给定一个?ordernummer=123456时,它会从DB获取必要的数据,并生成一个带有FPDF的PDF文件,强制下载PDF。很好。现在,我想从另一个页面调用此文件,以便在按下按钮或链接时下载PDF文件。现在我正在使用include(),它可以工作,但在我看来不是很优雅。我试过使用file_get_contents()但这也不起作用。有人有好的解决办法吗 $ordernummer = "204377"; $postdata = http_build_query(

我得到了一个文件,当给定一个
?ordernummer=123456
时,它会从DB获取必要的数据,并生成一个带有FPDF的PDF文件,强制下载PDF。很好。现在,我想从另一个页面调用此文件,以便在按下按钮或链接时下载PDF文件。现在我正在使用
include()
,它可以工作,但在我看来不是很优雅。我试过使用
file_get_contents()但这也不起作用。有人有好的解决办法吗

$ordernummer = "204377";

$postdata = http_build_query(
    array(
        'ordernummer' => $ordernummer
    )
);

$opts = array('http' =>
    array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => $postdata
    )
);

$context  = stream_context_create($opts);
$result = file_get_contents('http://url.nl/pdf/generate_pakbon.php', false, $context);

您正在寻找的是PHP中的“强制下载”。这是通过正确设置文件的标题,然后读取PHP文件中的文件来完成的

使用PHP强制下载:

对于PDF文件,您需要以下标题:

header("Content-disposition: attachment; filename=pakbon_".intval($_GET['ordernummer']).".pdf");
header("Content-type: application/pdf");
filename=
部分是您在下载时强制使用的文件名。所以不是现有的文件

设置标题后,可以使用以下命令读取文件:

readfile('http://ledisvet.nl/pdf/generate_pakbon.php?ordernummer='.intval($_GET['ordernummer']);
如果您将其全部添加到文档中并称之为“downloadpakbon.php”,您只需在页面内链接到
,即可强制下载。学分转到此处解释的示例:

FPDF唯一方法:

还有其他可用的方法。FPDF有一个名为“Output”的方法,您可能已经在使用它了。此方法中有4个可能的参数,其中一个是“D”,表示强制下载:

一种方法是添加一个额外的参数来生成_pakbon.php,如?download=true,然后根据此参数生成最终的输出方法:

if($_GET['download'] === true) {
  $pdf->Output('Order123.pdf', 'D');
} else {
  $pdf->Output('Order123.pdf', 'I');
}

您正在寻找的是PHP中的“强制下载”。这是通过正确设置文件的标题,然后读取PHP文件中的文件来完成的

使用PHP强制下载:

对于PDF文件,您需要以下标题:

header("Content-disposition: attachment; filename=pakbon_".intval($_GET['ordernummer']).".pdf");
header("Content-type: application/pdf");
filename=
部分是您在下载时强制使用的文件名。所以不是现有的文件

设置标题后,可以使用以下命令读取文件:

readfile('http://ledisvet.nl/pdf/generate_pakbon.php?ordernummer='.intval($_GET['ordernummer']);
如果您将其全部添加到文档中并称之为“downloadpakbon.php”,您只需在页面内链接到
,即可强制下载。学分转到此处解释的示例:

FPDF唯一方法:

还有其他可用的方法。FPDF有一个名为“Output”的方法,您可能已经在使用它了。此方法中有4个可能的参数,其中一个是“D”,表示强制下载:

一种方法是添加一个额外的参数来生成_pakbon.php,如?download=true,然后根据此参数生成最终的输出方法:

if($_GET['download'] === true) {
  $pdf->Output('Order123.pdf', 'D');
} else {
  $pdf->Output('Order123.pdf', 'I');
}
您的链接已在我的浏览器(Chrome)中下载。为确保这不是特定于浏览器的行为,请在generate_pakbon.php的开头添加以下行(注意:确保这在任何其他输出之前)

然后我会将你引用的代码移到这个php文件中。

你的链接确实在我的浏览器(Chrome)中下载了。为确保这不是特定于浏览器的行为,请在generate_pakbon.php的开头添加以下行(注意:确保这在任何其他输出之前)

然后我会将您引用的代码移到这个php文件中