<;嵌入>;从PHP交付的PDF

<;嵌入>;从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));

我试图嵌入一个网站上的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));
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;