将html转换为pdf转换为空白pdf

问题描述:

我使用的代码建议在以下link。以下是我已经使用的pdf转换功能。将html转换为pdf转换为空白pdf

function pdfGenerator(){ 
    var doc = new jsPDF();  
    var elementHandler = { 
       '#ignorePDF': function (element, renderer) { 
       return true; 
       } 
      }; 
    var source = window.document.getElementsByTagName("body")[0]; 
    doc.fromHTML(
     source, 
     15, 
     15, 
     { 
      'width': 180,'elementHandlers': elementHandler 
     }); 

    doc.output("dataurlnewwindow"); 
} 

我已经下载在以下link提到的最新版本,并增加一条,作为外部JAR。 ü可以为所欲为建议如何包括

  • jspdf.js
  • jspdf.plugin.from_html.js
  • jspdf.plugin.split_text_to_size.js
  • jspdf.plugin.standard_fonts_metrics.js
在我的项目

脚本?我得到空白pdf作为输出。

+0

请提及您尝试更改以解决问题?任何小提琴? –

+0

尝试在你的'doc.output(“dataurlnewwindow')'语句中添加'timeout'函数,比如'setTimeout(function(){doc.output(”dataurlnewwindow“)},1000);' –

+0

我坚持添加插件脚本 –

您可以使用script标签的defer属性。

<script defer src="jspdf.js"></script> 
<script defer src="jspdf.plugin.from_html.js"></script> 
<script defer src="jspdf.plugin.split_text_to_size.js"></script> 
<script defer src="jspdf.plugin.standard_fonts_metrics.js"></script> 
<script defer src="/* YOUR SCRIPT HERE */"></script> 

这样所有的脚本都会一个接一个地同步加载。 More info @ MDN

+0

嘿!我已经添加了脚本,因为你已经建议并删除了删除了jspdf的zip文件,这是我在外部添加的。但是,现在没有生成pdf,我在Chrome控制台中出现以下错误:jspdf.plugin.from_html.js:424 Uncaught ReferenceError:$ is not definedGetCSS @ jspdf.plugin.from_html.js:424DrillForContent @ jspdf.plugin.from_html.js:492process @ jspdf.plugin.from_html。 js:550jsPDFAPI.fromHTML @ jspdf.plugin.from_html.js:591pdfGenerator @ prefilledform.js:37onclick @ DayCare.jsp:111 –

+0

看来这段代码在自己内部使用了** jquery **,所以只需简单地添加'' –

这是更好地使用.save函数而不是doc.output,使其作为一个可下载的PDF格式,请确保你已经把这个settimeout语句内为好。这是精炼的代码。

function pdfGenerator(){ 
    var doc = new jsPDF();  
    var elementHandler = { 
       '#ignorePDF': function (element, renderer) { 
       return true; 
       } 
      }; 
    var source = window.document.getElementsByTagName("body")[0]; 
    doc.fromHTML(
     source, 
     15, 
     15, 
     { 
      'width': 180,'elementHandlers': elementHandler 
     }); 

     setTimeout(function(){ 
      doc.save('test'); 
     },2000); 
} 

希望这会有所帮助!