html-pdf ドキュメントの作成に問題があります。問題は、pdf ドキュメントの作成プロセスを完了するためにコードが高速に実行されることが多いことです。プロセスは、Html ファイル内のプレースホルダーを置き換えて HTML 文字列を構築することから構成されます。以下に、その後のコードを示します。
Object.keys(setter).forEach(function(element, key, _array) {
var regex = new RegExp(element, "g");
data = data.replace(regex, setter[element])
})
var result = data;
fs.writeFile(mergeFileRes, result, 'utf8', function (err) {
if(err) {
console.log(err);
return;
} else {
let html2 = fs.readFileSync(mergeFileRes, 'utf8');
let options = {
format: 'a4' ,
"directory" : "/tmp",
};
if(html2){
pdf.create(html2, options).toStream(function(err, stream2){
if(err) console.log(err);
stream2.pipe(res);
stream2.on('end', function () {
try{
fs.unlink(mergeFileRes)
console.log(3090, "deleted file");
}
catch (err){
console.log(3090, "Did not delete file");
}
});
});
} else {
}
}
});
私の問題は、多くの場合、pdf.create プロセスが開始される前に html2 変数がまだ作成されていないことです。これはおそらく、readFileSync の完了に時間がかかりすぎるためです。
どうすればこれを修正できるのでしょうか。readFileSync が終了し、html2 変数が入力されるまで pdf.create を待機させるにはどうすればよいですか。