electronで作成したPDFにCSSが適用されない
electronのWebContents.printToPdfのAPIを使って、バックグラウンドで非表示中のページをレンダリング後にPDF化したいです。
Angular2を使ってページを整形しているため、ngAfterViewInitのlifeCycleの後にPDF化を行おうとしたのですが、
PDF化したところ、一部のテキストがレンダリングされない状態でPDFが出力されてしまいました。
(electronの標準イベントであるBrowserWindowのready-to-show
やWebContentsのdid-finish-load
のイベントではPDF化のタイミングが早すぎる)
CSSが完全に適用されたタイミングでPDF化を行う方法はありますでしょうか?
備考
システムのバージョン
"@angular/core": "^2.4.9",
"electron": "^1.6.16",
コード1
const newWindow = new BrowserWindow({
width,
height,
show: false,
});
newWindow.loadURL(reportURL);
コード2
win.webContents.printToPDF({marginsType:0, pageSize:'A4', printBackground:true}, (error: any, data: any) => {
if (error) throw error;
fs.writeFile(pdfPath, data, function(error: any) {
if (error) throw error;
win.destroy();
});
});
コード1を使ってバックグラウンドでBrowserWindowオブジェクトを作成し、PDFを作成するタイミングになったら、コード2を呼び出してPDF化を行なっております。