在 Safari 的新标签页中打开 PDF

hkm*_*m93 5 javascript pdf safari jspdf

帮助我 我迫切需要帮助。现在到真正的问题。

我一直试图让我的 pdf 在 Safari 的新标签中打开,但直到现在我只面临失望。我正在使用 jsPDF 来生成我的 PDF,之前我使用过它

doc.save(pdfName+".pdf")
Run Code Online (Sandbox Code Playgroud)

执行相同操作的方法,就像在最新的 safari 版本“9.1.1(10601.6.17)”中一样,它坏了。我仍然可以使用 jsPDF 的内置选项生成 pdf:

pdf.output('dataurl');
Run Code Online (Sandbox Code Playgroud)

但是,它倾向于在同一个选项卡中打开 PDF,这种行为是非常不可取的。我尝试了网络上提供的各种解决方案来解决这个问题,但都没有奏效。我尝试过的一些解决方案是:

  1. 使用 window.open() 不起作用。
  2. 使用 location.href 不起作用。
  3. 使用 doc.output('save', 'filename.pdf'), doc.output('datauri'), doc.output('dataurlnewwindow'),没有任何效果。
  4. 还尝试通过创建锚标记并将其目标设置为“_blank”,然后使用 eventDispatcher 来刺激鼠标单击来进行假点击,但它也不起作用。像这样的事情:

    var a = window.document.createElement("a");
    a.target = '_blank';
    a.href = 'http://www.google.com';
    
    var e = window.document.createEvent("MouseEvents");
    e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
    a.dispatchEvent(e);
    
    Run Code Online (Sandbox Code Playgroud)

关于我应该做什么的任何建议?我希望我的 pdf 在一个新标签中打开,而不是与我的应用程序在同一个标​​签中打开。

PS:我在上面为 Safari 尝试的每个解决方案在 Chrome 和 Mozilla Firefox 中都可以完美运行,我只是不知道与 Safari 有什么关系。任何帮助,将不胜感激。

dem*_*isd -1

你可以试试blob输出。然后为此生成一个数据 URI,并在新窗口中打开它:

var blob = pdf.output("blob");
window.open(URL.createObjectURL(blob));
Run Code Online (Sandbox Code Playgroud)