2017-07-04 25 views
-2

npm html-pdfを使用してHTMLファイルをPDFに変換しようとしていますが、変換されたPDFはHTML形式ではありません。誰かが私に間違っていることを教えてもらえますか?npmを使用してHTMLをPDFに変換するhtml-pdf

var pdf = require('html-pdf'); 
var html = fs.readFileSync('./example.html', 'utf8'); 

    pdf.create(html, options).toFile(folderName + '/' + fileName, function (err, res) { // if the file doesnt exist it will be created 
    if (err) return console.log(err); 

    console.log(res); 
    }); 
+1

あなたの問題について具体的に説明し、_example.html_の関連部分を追加する必要があります。それで、私たちはあまり助けてはいけません。 – TGrif

+0

'html-pdf'コマンドラインを使って' example.html'からpdfを生成すると、スタイルの問題はまだ存在しますか? example.htmlの関連コンテンツを投稿できますか? – shaochuancs

+0

HTMLから生成されたPDFファイルがHTMLのように見えず、テキストが大きすぎて画像がありません。 –

答えて

0

私はこれを実装しましたが、これはhtmlからpdfに変換するアプローチとは少し異なります。下のコードでは、jade(現在はpugと呼ばれています)を使用して、構造的に変更がなければこのpdfを動的にすることができます。つまり、再利用可能なテンプレートです。また、私はこれを非同期的に行いました。これは、あなたが問題にぶつかっている潜在的な理由です。同期コードを書いている特定の理由はありますか?

コード内には、定義を表示していない2つの変数があるため、問題が存在するかどうかはわかりません。あなたのコードを含めると、もう少しお手伝いできるようになります。私のコードがあなたを助けてくれることを願っています。

let fs = require('fs'); 
let path = require('path'); 
let jade = require('jade'); 
let pdf = require('html-pdf'); 
let filepath = path.resolve(__dirname, '../views/example.jade'); 
let templateVariables = {}; // If you have any to pass in 
fs.readFile(filepath, 'utf8', function(err, data) { 
    if (err) throw err; 
    let fn = jade.compile(data); 
    let html = fn(templateVariables); 
    let options = { 
     pageSize: 'Letter', 
     marginTop: '0.5in', 
     marginLeft: '0.25in', 
     marginRight: '1.0in', 
     marginBottom: '0.5in' 
    }; 
    if (html) { 
     pdf.create(html, options).toFile('./example.pdf', function(err, res){ 
      if (err) { 
       console.log(err); 
       cb(err); 
      } 
      if (res) { 
       console.log('pdf res ', res); 
      } 
     }); 
    } 
}); 
+0

OPは 'fs.readFileSync'を使用しています。これは、' html-pdf'の公式の "コード例"文書では、 'fs.readFileSync'です... – shaochuancs

関連する問題