<;嵌入>;从PHP交付的PDF
我试图嵌入一个网站上的PDF,但我希望通过PHP文件交付的PDF。我有pdf.php<;嵌入>;从PHP交付的PDF,php,pdf,embed,Php,Pdf,Embed,我试图嵌入一个网站上的PDF,但我希望通过PHP文件交付的PDF。我有pdf.php $file = '/path/to/foo.pdf'; $filename = 'bar.pdf'; header('Content-Type: application/pdf'); header('Content-Disposition: inline; filename="' . $filename . '"'); header('Content-Length: ' . filesize($file));
$file = '/path/to/foo.pdf';
$filename = 'bar.pdf';
header('Content-Type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Length: ' . filesize($file));
readfile($file);
在embedhere.php中,我尝试了
<embed type='application/pdf' src="pdf.php"/>
及
我用iframe和object标记尝试了同样的方法
当我直接导航到pdf.php时,我会得到一个全屏pdf,但在embeddehere.php中,我得到了embed(object,iframe)标记的空间,但它是空的。Firefox检查元素显示
<embed type="application/pdf" src="pdf.php">
#document
<html>
<head></head>
<body></body>
</html>
</html>
</embed>
#文件
第二个
不是打字错误
目标是嵌入特定于用户的PDF,最好是带有
或
,而不占用整个页面。为什么会出现空白?感谢fyrye指出换行问题。问题原来是NGINX配置问题。我不知道为什么Chrome能够显示PDF,但Firefox抱怨说,因为NGINX配置了
X-Frame-Origins DENY;
而不是
X-Frame-Origins SAMEORIGIN;
更改并重新启动NGINX解决了问题。如果头调用嵌入,则可能需要删除头调用;如果使用iframeI无法重现问题,则可以删除头调用。您使用的是什么PDF文件和浏览器?您是否在PDF生成器或其使用的include文件中的任何位置使用了结束php标记
?>
?通常情况下,脚本中的换行符会呈现为文本,因此最好省略结束php标记。对于我使用的
的上下文,请使用'if(file_exists($file)){/..readfile($file);}确保$file
存在,谢谢fyrye。它在Chrome中也能工作,但Firefox仍然无法显示。我在服务器上使用静态PDF文件进行测试。更多的挖掘让我认为这是一个NGINX配置问题。控制台弹出X-Frame-Options错误和严格的传输安全错误。我不知道Chrome是否没有这些错误,或者它只是忽略了这些错误而我找不到它们。
X-Frame-Origins SAMEORIGIN;