2016-04-22 15 views
-1

Ich habe Anforderung, wo ich eine PDF aus HTML in Knoten erstellen muss. Darüber hinaus muss ich benutzerdefinierte Kopf- und Fußzeile hinzufügen können. Der Inhalt der Webseite sollte dann basierend auf den benutzerdefinierten Anforderungen in mehreren Seiten enthalten sein. Das heißt, wir müssen entscheiden können, welcher Inhalt welche Seite sein soll. Nach der Suche fand ich einige Lösungen wie Phantom, aber es gibt keine richtige Dokumentation, die mir helfen könnte. Ich brauche einen Weg, dies zu tun. Gefunden eine Lösung here, aber Erklärung ist nicht gut genug.PDF-Generierung in Nodejs

+0

Bitte geben Sie an, was Sie bisher versucht haben, bitte geben Sie den Code, den Sie ausprobiert haben, und den Fehler, den Sie haben. dann können nur Leute eine Lösung finden –

+0

Versuchte pdfkit. aber es scheint keine HTML-Eingabe zu akzeptieren. –

+0

Versuchen Sie https://www.npmjs.com/package/html-pdf – Molda

Antwort

0

Ich habe mit https://github.com/baudehlo/node-phantom-simple Modul mit webshot

Schritt I wie folgt vor: -

  • HTML Erstellen Sie den Knoten-phantom-einfache
  • Nach dem Erstellen der HTML-Anwendung verwenden, die HTML es passieren in Webshot

var driver = require('node-phantom-simple'); 
 
var webshot = require('webshot'); 
 

 

 

 
driver.create({path: require('phantomjs').path, 'parameters': {'disk-cache': 'yes'}}, function (err, browser) { 
 
     return browser.createPage(function (err, page) { 
 
      return page.open(url, function (err, status) { 
 
       console.log("opened site? ", status,page.content); 
 
       return page.evaluate(File.cleanHtml, function (err, html) { 
 

 
         var options = { 
 
         streamType: 'pdf', 
 
         screenSize: { 
 
          width: 1200, 
 
          height: 300 
 
         }, 
 
         shotSize: { 
 
          width: 1200, 
 
          height: 300 
 
         }, 
 
         siteType:'html',// include this to generate PDF from html 
 
         phantomConfig: {'ssl-protocol':'any','ignore-ssl-errors': 'true'} 
 
         } 
 

 
         var pdfname = 'test_' + Date.now() + '.pdf'; 
 

 
         webshot(html,pdfname,options, function(err) { 
 
         console.log("err in webshot",err); 
 
         }) 
 
        }); 
 
       // }); 
 
      }); 
 
     }); 
 
    });

Hier File.cleanHtml ist eine Funktion, die ich geschaffen habe, die verwendet wird, zusätzliche Inhalte zu entfernen, von HTML.you direkt gleiche HTML zurückkehren kann daraus so etwas wie dieses function.may :)

cleanHtml: function() { 
 
     var data = $("html"); 
 
     return "<html>" + data.html() + "</html>"; 
 
    }

+0

Danke für die Antwort, ich werde diese Lösung versuchen. –

+0

Ich habe nicht verstanden, wo wir den HTML-Inhalt in den Code füttern und wie trennen wir HTML-Inhalte auf jeder Seite basierend auf unserer Bedingung? –

+0

Auch ich muss in der Lage sein zu entscheiden, welcher Inhalt welche Seite sein soll, wenn es einen Absatz gibt und ich einen Seitenumbruch nach diesem Absatz möchte. Ich sollte das können. –