如何在新窗口中使用jspdf打开生成的pdf文件

时间:2013-07-19 06:54:44

标签: javascript jspdf

我正在使用 jspdf 生成pdf文件。一切都很好。但是如何打开生成 pdf在新标签页或新窗口中。

我正在使用

doc.output('datauri');

在同一个标​​签页面中打开pdf。

14 个答案:

答案 0 :(得分:91)

根据来源,你可以使用'dataurlnewwindow'参数输出():

doc.output('dataurlnewwindow');

github中的来源: https://github.com/MrRio/jsPDF/blob/master/jspdf.js#L914

所有可能的情况:

doc.output('save', 'filename.pdf'); //Try to save PDF as a file (not works on ie before 10, and some mobile devices)
doc.output('datauristring');        //returns the data uri string
doc.output('datauri');              //opens the data uri in current window
doc.output('dataurlnewwindow');     //opens the data uri in new window

答案 1 :(得分:16)

我必须使用它来直接加载PDF。使用doc.output('dataurlnewwindow');会为我生成一个丑陋的iframe。 MAC /铬。

  var string = doc.output('datauristring');
  var x = window.open();
  x.document.open();
  x.document.location=string;

答案 2 :(得分:8)

  1. 在jspdf.js中搜索:

    if(type == 'datauri') {
        document.location.href ='data:application/pdf;base64,' + Base64.encode(buffer);
    }
    
  2. 添加:

    if(type == 'datauriNew') {   
        window.open('data:application/pdf;base64,' + Base64.encode(buffer));
    }
    
  3. 拨打此选项' datauriNew' Saludos;)

答案 3 :(得分:8)

或... 您可以使用Blob来实现此目的。

像:

pdf.addHTML($('#content'), y, x, options, function () {
    var blob = pdf.output("blob");
    window.open(URL.createObjectURL(blob));
});

该代码允许您在浏览器中创建Blob对象并在新选项卡中显示它。

答案 4 :(得分:6)

此解决方案适合我

window.open(doc.output('bloburl'))

答案 5 :(得分:5)

使用javascript,您可以使用以下代码将生成的pdf发送到新窗口。

var string = doc.output('datauristring');

var iframe = "<iframe width='100%' height='100%' src='" + string + "'></iframe>"

var x = window.open();
x.document.open();
x.document.write(iframe);
x.document.close();

答案 6 :(得分:5)

这就是我处理它的方式。

window.open(doc.output('bloburl'), '_blank');

答案 7 :(得分:4)

此代码将帮助您在带有所需标题的新标签中打开生成的pdf

 let pdf = new jsPDF();
 pdf.setProperties({
          title: "Report"
      });
      pdf.output('dataurlnewwindow');

答案 8 :(得分:3)

这对我有用!

指定窗口功能时,它将在新窗口中打开

就像:

window.open(url,"_blank","top=100,left=200,width=1000,height=500");

答案 9 :(得分:1)

第一步:包含文件和插件

../jspdf.plugin.addimage.js

第二步:构建PDF内容 var doc = new jsPDF();

doc.setFontSize(12);
doc.text(35, 25, "Welcome to JsPDF");
doc.addImage(imgData, 'JPEG', 15, 40, 386, 386);

第三步:在新窗口中显示图像

doc.output('dataurlnewwindow');

Stepv IV:保存数据

var output = doc.output();
return btoa( output);

答案 10 :(得分:1)

通常您可以download it, show, or get a blob string

const pdfActions = {
    save: () => doc.save(filename),
    getBlob: () => {
      const blob = doc.output('datauristring');
      console.log(blob)
      return blob
    },
    show: () => doc.output('dataurlnewwindow')
  }

答案 11 :(得分:0)

Javascript代码:添加到结尾行

$("#pdf_preview").attr("src", pdf.output('datauristring'));

HTML代码:插入正文

<head>
</head>
<body>
<H1>Testing</h1>
<iframe id="pdf_preview" type="application/pdf" src="" width="800" height="400"></iframe>
</body>
</html>

在iframe内的同一窗口中预览以及其他内容。

答案 12 :(得分:0)

JavaScript代码

// IE doesn't allow using a blob object directly as link href
// instead it is necessary to use msSaveOrOpenBlob
if (window.navigator && window.navigator.msSaveOrOpenBlob) {
  window.navigator.msSaveOrOpenBlob(doc.output("blob"), "Name.pdf");
} else {

  // For other browsers:
  // Create a link pointing to the ObjectURL containing the blob.
  doc.autoPrint();
  window.open(
    doc.output("bloburl"),
    "_blank",
    "height=650,width=500,scrollbars=yes,location=yes"
  );

  // For Firefox it is necessary to delay revoking the ObjectURL
  setTimeout(() => {    
    window.URL.revokeObjectURL(doc.output("bloburl"));
  }, 100);
}

答案 13 :(得分:0)

STEP 1
关闭addblock

第2步
添加

window.open(doc.output('bloburl'), '_blank');

或尝试

doc.output('dataurlnewwindow')