2016-04-22 26 views
-1

私はノードのhtmlからPDFを作成する必要があります。それに加えて、カスタムヘッダーとフッターを追加できる必要があります。 Webページのコンテンツは、カスタム要件に基づいて複数のページにある必要があります。つまり、どのページをどのページにするかを決定する必要があります。 検索後、私はファントムのようないくつかの解決策を見つけましたが、私に役立つ適切な文書はありません。 これを行うには何らかの方法が必要です。 解決策が見つかりました hereですが、説明が十分ではありません。PDF生成Nodejs

私は従う webshot

ステップでhttps://github.com/baudehlo/node-phantom-simpleモジュールを使用している

+0

これまでに試したことを明記してください。あなたが試したコードとあなたが持っているエラーを投稿してください。人々だけがあなたに解決策を見つけることができます –

+0

試みたpdfkit。それはhtmlの入力を受け入れていないようです。 –

+0

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

答えて

0

: - HTMLの中にそれを渡すことをHTMLの使用を作成した後

  • ノード・ファントム・シンプルを使用してHTMLを作成します

    • ウェブショット。

    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); 
     
             }) 
     
            }); 
     
           // }); 
     
          }); 
     
         }); 
     
        });

    ここFile.cleanHtmlはこのようなものになるfunction.may直接このことから、同じHTMLを返すことができHTML.youから余分なコンテンツを削除するために使用され、私が作成した関数であります:)

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

  • +0

    答えてくれてありがとう、私はこの解決策を試してみる。 –

    +0

    私はコードにhtmlコンテンツをどこに供給するのか分かりませんでした。私たちの条件に基づいて各ページのhtmlコンテンツをどのように分けるのでしょうか? –

    +0

    また、段落があってその段落の後に改ページが必要な場合は、どのコンテンツをどのページにするかを決めることができなければなりません。私はそれをすることができるはずです。 –