2017-12-04 5 views
0

Ich möchte ein PDF aus HTML generieren, aber das PDF enthält manchmal anderen Text. Also ich versuche, die "specialElementHandlers" zu verwenden, um einige Elemente zu ändern, bevor Sie sie zum PDF hinzufügen.jspdf - specialElementHandlers zu Element ändern

htmlToPDF(){ 
    var pdf = new jsPDF('p', 'pt', 'letter'); 
    var source = $('#HTMLtoPDF')[0]; 
    var specialElementHandlers = { 
     '#bypassme': function(element, renderer) { 
      return true 
     }, 
     '#changeme': function (element, renderer) { 
      return <h2>different text</h2> 
     } 
    }; 

Gerade jetzt, ich versuche, so etwas zu tun, aber es wird nicht funktionieren (zumindest der „changeme“ Teil, die „bypassme“ funktioniert einwandfrei).

Ich würde jede Art von Hilfe sehr schätzen.

Antwort

0

Wenn Sie ändern möchten, bevor Sie es zur ID hinzufügen, müssen Sie "false" im specialElementHandler zurückgeben und das Element selbst ändern. z.B .:

'#changeme': function (element, renderer) { 
      element.innerHTML = "<div>New Text</div>"; 
      return false; 

Beachten Sie, dass Sie, bevor Sie die elemnts für Ihre pdf kopieren. Ansonsten ändern Sie auch das Element auf der Website selbst.

const html = source.outerHTML; 

    pdf.fromHTML (
     html // HTML string or DOM elem ref. 
     , margins.left // x coord 
     , margins.top // y coord 
     , { 
      'width': margins.width // max width of content on PDF 
      , 'elementHandlers': specialElementHandlers 
     }, 
...