Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在新窗口中使用jspdf打开生成的pdf_Javascript_Jspdf - Fatal编程技术网

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

Javascript 如何在新窗口中使用jspdf打开生成的pdf,javascript,jspdf,Javascript,Jspdf,我正在使用jspdf生成pdf文件。一切正常。但如何打开生成 新选项卡或新窗口中的pdf 我正在使用 doc.output('datauri'); 在同一选项卡中打开pdf。使用javascript,您可以使用以下代码将生成的pdf发送到新窗口 var string = doc.output('datauristring'); var iframe = "<iframe width='100%' height='100%' src='" + string + "'></if

我正在使用jspdf生成pdf文件。一切正常。但如何打开生成 新选项卡或新窗口中的pdf

我正在使用

doc.output('datauri');

在同一选项卡中打开pdf。

使用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();
var string=doc.output('datauristring');
var iframe=“”
var x=window.open();
x、 document.open();
x、 文件编写(iframe);
x、 document.close();

根据源代码,您可以对输出()使用“dataurlnewwindow”参数:

github中的源代码:

所有可能的情况:

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

我必须使用这个直接加载PDF。使用
doc.output('dataurlnewwindow')为我生成了一个丑陋的iframe。Mac/Chrome

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

第一步:包括文件和插件

../jspdf.plugin.addimage.js
第二步:构建PDF内容 var doc=new jsPDF()

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

doc.output('dataurlnewwindow');
第四步:保存数据

var output = doc.output();
return btoa( output);
  • 在jspdf.js中搜索以下内容:

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

    if(type == 'datauriNew') {   
        window.open('data:application/pdf;base64,' + Base64.encode(buffer));
    }
    
  • 将此选项称为“datauriNew”Saludos;) 或者。。。 您可以使用Blob来实现这一点

    比如:


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

    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内的同一窗口中预览以及其他内容。

    此解决方案适合我

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

    我就是这样处理的

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

    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(
        URL.createObjectURL(doc.output("blob")),
        "_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);
    }
    

    步骤1
    关闭addblock

    步骤2

    或尝试

    doc.output('dataurlnewwindow')
    

    此代码将帮助您在新选项卡中以所需标题打开生成的pdf

     let pdf = new jsPDF();
     pdf.setProperties({
              title: "Report"
          });
          pdf.output('dataurlnewwindow');
    
    这对我有用

    指定窗口特征时,它将在新窗口中打开

    就像:

    window.open(url,"_blank","top=100,left=200,width=1000,height=500");
    
    一般来说,您可以:


    JsPdf也具有这方面的功能。您可以调用以下方法。文档输出('dataurlnewwindow');下载按钮似乎不适用于此方法。无需使用iframe,只需使用doc.output('dataurlnewwindow',{})@TheBackBencher
    doc.output('dataurlnewwindow',{})
    始终使浏览器(Firefox)崩溃。与'doc.output('dataurlnewwindow')相同;-四年后,浏览器(Firefox)@fulldelege崩溃,但现在它打开了一个空白页;我收到这个错误:未捕获引用错误:saveAs未定义jspdf.js:975,我使用的是chrome版本29.0.1547.66 m。@YaBasha您还需要FileSaver.js。
    doc.output('dataurlnewwindow')返回空白页。在调用它之前,我需要做些什么吗?在Chrome60中,
    doc.output('dataurlnewwindow')
    创建一个带有url的新选项卡,但必须按enter键才能加载pdf。使用@ilter中的blob选项效果更好。doc.output('dataurlnewwindow');返回一个空白页,在这个@devgirl(您有相同的解决方案)在iOS 8中不起作用之前,我是否需要调用任何其他方法。我从@atry here找到了一个解决方案:在最新版本中使用“dataurlnewwindow”。@Majestic12这会在地址栏中为我打开一个带有uri字符串的空白页。。。我必须按enter键。
    doc.output(“dataurlnewwindow”)打开,但不呈现PDF;但是,您可以保存并打印它!window.open(pdf.output('bloburl'),'u blank');在ChromeA的旧线程中对我有效,但如何在addHTML之外生成pdf文件?“blob”似乎是一个局部变量,因此警报(blob)显示“未定义”。有什么线索吗?@Gene9y它甚至更旧,但是你可以使用localStorage或indexeddb来存储blob。@NorCalKnockOut你是否打开了任何类型的广告或弹出窗口阻止程序?ublock源广告阻止程序在chrome上阻止请求,需要为页面禁用它。你必须禁用广告阻止程序才能正常工作
    
    window.open(doc.output('bloburl'), '_blank');
    
    doc.output('dataurlnewwindow')
    
     let pdf = new jsPDF();
     pdf.setProperties({
              title: "Report"
          });
          pdf.output('dataurlnewwindow');
    
    window.open(url,"_blank","top=100,left=200,width=1000,height=500");
    
    const pdfActions = {
        save: () => doc.save(filename),
        getBlob: () => {
          const blob = doc.output('datauristring');
          console.log(blob)
          return blob
        },
        show: () => doc.output('dataurlnewwindow')
      }