在新的浏览器全屏窗口中打开PDF

29

如何在新的浏览器窗口中打开PDF文档?

该窗口应该是全屏并且没有菜单。

只需要使用本地的Javascript或jQuery,在一个干净的全屏窗口中显示PDF文档。


10
我并没有像对待调皮的孩子那样对待他们,而是给了他们一些选项。这是一个文档管理应用程序,有几个图标可以以不同的方式打开 PDF 文档。其中一个图标将是全屏浏览器窗口,其他图标则用于下载、在对话框中查看、在侧面进行编辑的表单查看等等。那么,你为什么要评判我,并像对待调皮的孩子一样对待我呢? - mojeime
2
@Ed Guiness:你应该睁大眼睛。在我们的内部网络中,有些人每天查看数百个文档,他们不喜欢每次都选择在浏览器中打开它,在计算机上下载它或在应用程序中打开它等等。我们有很多用户,想象一下,他们有两个显示器,喜欢在一个显示器上查看文档,在另一个上编辑有关该文档的表格。这很奇怪吗? - mojeime
4个回答

65
<a href="#" onclick="window.open('MyPDF.pdf', '_blank', 'fullscreen=yes'); return false;">MyPDF</a>

以上链接将以全屏模式打开PDF,这是您可以实现的最佳效果。


8
你是唯一一个回答我的问题而不会因我要使用全屏PDF而对我进行评判的人。而且我知道...我知道我在做什么 :) 但既然这只是用户可以选择的视图之一,如果谷歌也这样做了...那我想我应该不会太错了吧。没错吧 :) 谢谢。 - mojeime
@moj 我很少评判别人,因为我知道通常都有好的原因,比如客户需要这个功能。很高兴我能帮到你! :) - Shadow The Spring Wizard
@ykaragol 不起作用是指根本没有打开任何东西,还是不全屏?看起来 Firefox 简单地不支持在全屏模式下打开任何东西。 - Shadow The Spring Wizard
仅全屏模式无法正常工作。我认为是Firefox不支持。 - ykaragol
1
@ykaragol true:"不要使用。在Mozilla中未实现。没有计划在Mozilla中实现此功能。" - Shadow The Spring Wizard
显示剩余2条评论

6
var pdf = MyPdf.pdf;
window.open(pdf);

这将在全屏窗口中打开pdf文档,使用JavaScript

打开窗口的函数应该像这样:

function openPDF(pdf){
  window.open(pdf);
  return false;
}

1
我要冒险地反对这种做法。我怀疑想要查看你的 PDF 文件的人已经设置好他们想要的阅读器,不会喜欢你夺走了他们的选择权 :-)
为什么不使用正确的内容说明符将内容流下来呢?
这样,新手将会得到任何他们浏览器开发者认为有用的默认值,而我们知道如何配置这些东西的人将会按照我们想要的方式查看它。

1
我有我的原因。这只是我文档管理应用程序中可能的一种视图之一。 - mojeime
没问题,@mojeime,既然你澄清了要求,我会将这个答案标记为CW,因为它并不像我最初想的那么有用 :-) 祝你找到解决方案。 - paxdiablo
谢谢。@Shadow Wizard的回答可以,但我想在接受答案之前听取更多意见。 - mojeime

1

要从Base64编码下载文件,您可以使用以下函数:

function base64ToArrayBuffer(data) {
  const bString = window.atob(data);
  const bLength = bString.length;
  const bytes = new Uint8Array(bLength);
  for (let i = 0; i < bLength; i++) {
      bytes[i] = bString.charCodeAt(i);
  }
  return bytes;
}
function base64toPDF(base64EncodedData, fileName = 'file') {
  const bufferArray = base64ToArrayBuffer(base64EncodedData);
  const blobStore = new Blob([bufferArray], { type: 'application/pdf' });
  if (window.navigator && window.navigator.msSaveOrOpenBlob) {
      window.navigator.msSaveOrOpenBlob(blobStore);
      return;
  }
  const data = window.URL.createObjectURL(blobStore);
  const link = document.createElement('a');
  document.body.appendChild(link);
  link.href = data;
  link.download = `${fileName}.pdf`;
  link.click();
  window.URL.revokeObjectURL(data);
  link.remove();
}

编辑:我误读了问题并创建了一个下载函数。由于它仍然可能有用,因此在此保留该函数。


link.download 会下载 PDF,而不是打开它。 - Ash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接