Electron 7.0.x で webContents.printToPDF() が promisification されたけどドキュメントの例が直っていない件


Electron 7.0.x がリリースされたということで早速、アップデートしてみました。いっそう、promisification が進んでいるようです。webContents.printToPDF() も promisification されて、Promise を Return するようになりました。

https://electronjs.org/docs/api/web-contents#contentsprinttopdfoptions に webContents.printToPDF() の説明がありますが、メソッドの説明そのものは更新されていますが、コーディング例が更新されていません。以下のように修正すべきかと思います。

const { BrowserWindow } = require('electron')
const fs = require('fs')

let win = new BrowserWindow({ width: 800, height: 600 })
win.loadURL('http://github.com')

win.webContents.on('did-finish-load', () => {
  // Use default printing options
  win.webContents.printToPDF({
  }).then(data => {
    fs.writeFile('/tmp/print.pdf', data, (error) => {
      if (error) throw error
      console.log('Write PDF successfully.')
    })
  }).catch(error => {
    throw error
  })
})

以下、差分。

--- a/docs/api/web-contents.md
+++ b/docs/api/web-contents.md
@@ -1329,12 +1329,14 @@ win.loadURL('http://github.com')

 win.webContents.on('did-finish-load', () => {
   // Use default printing options
-  win.webContents.printToPDF({}, (error, data) => {
-    if (error) throw error
+  win.webContents.printToPDF({
+  }).then(data => {
     fs.writeFile('/tmp/print.pdf', data, (error) => {
       if (error) throw error
       console.log('Write PDF successfully.')
     })
+  }).catch(error => {
+    throw error
   })
 })

Pull Request しようかと思いましたが、テンプレートが結構、面倒そうだったので尻すぼみしてます。

既に Electron の Contributor な方に取り込んでもらえたら、いいなあ。 < 他力本願

蛇足

dialog.showSaveDialog() も 7.0.x で Promise を返すようになっています。