强制 PDF 显示内联,即使 Content-Disposition 另有说明?

Posted

技术标签:

【中文标题】强制 PDF 显示内联,即使 Content-Disposition 另有说明?【英文标题】:Force PDF to display inline, even when Content-Disposition says otherwise? 【发布时间】:2013-06-13 23:20:48 【问题描述】:

我正在将 PDF 嵌入来自服务器的 IFRAME,不幸的是,该服务器将它们作为 Content-Disposition:attachment; 提供服务。

是否有任何方法可以强制浏览器内嵌显示 PDF?不幸的是,我无法更改 iframe 中链接的 PDF 文件的标题。

【问题讨论】:

能否在自己的服务器端代码中下载,然后将客户端的 IFRAME SRC 指向自己的页面? 我可以,虽然这不太理想。不过可能是唯一的解决方案。 找到任何解决方案? ..有同样的问题 【参考方案1】:

您可以使用 pdf.js 库在 html 页面中呈现 pdf。 Mozilla Pdf.js

HTML 代码

<!DOCTYPE html>
<html>
 <head>
  <title>PDF.js Learning</title>
 </head>
 <body>
  <script type="text/javascript" src="pdf.js"></script>
  <canvas id="the-canvas"></canvas>

 </body>
</html>

JAVASCRIPT 代码

 var url = "www.pdf995.com/samples/pdf.pdf";

 PDFJS.getDocument(url)
  .then(function(pdf) 
   return pdf.getPage(1);
   )
 .then(function(page) 

 var scale = 1.5;


 var viewport = page.getViewport(scale);

 // Get canvas#the-canvas

 var canvas = document.getElementById('the-canvas');

 // Fetch canvas' 2d context

 var context = canvas.getContext('2d');

 // Set dimensions to Canvas

 canvas.height = viewport.height;
 canvas.width = viewport.width;

 // Prepare object needed by render method

  var renderContext = 
 canvasContext: context,
 viewport: viewport
 ;

 // Render PDF page

  page.render(renderContext);
 );

【讨论】:

这行得通吗?因为我们有一个可下载的附件,而不是一个 pdf 文件

以上是关于强制 PDF 显示内联,即使 Content-Disposition 另有说明?的主要内容,如果未能解决你的问题,请参考以下文章

Mpdf 不从内联 chrome 浏览器下载 pdf(但显示 pdf)

iframe内联元素展示PDF,不显示控件(禁止下载)

即使没有更新数据,如何强制 Kendo 网格更新

Laravel - 在存储中显示 PDF 文件而不强制下载?

Laravel - 在存储中显示 PDF 文件而不强制下载?

IE 的 Content-Disposition 内联文件名问题