Electron:从缓冲区加载URL

Electron:从缓冲区加载URL,electron,Electron,在我的渲染器中,我可以发出一个事件来创建PDF。然而,在写入磁盘之前,我想先在另一个窗口中打开新粘贴的PDF。如何避免写入文件系统并使用数据作为加载URL的源代码 到目前为止,我的代码是: ipcMain.on('view-pdf', (event, url) => { let pdf mainWindow.webContents.printToPDF({}, (error, data) => { if (error) throw error pdf = da

在我的渲染器中,我可以发出一个事件来创建PDF。然而,在写入磁盘之前,我想先在另一个窗口中打开新粘贴的PDF。如何避免写入文件系统并使用
数据
作为
加载URL
的源代码

到目前为止,我的代码是:

ipcMain.on('view-pdf', (event, url) => {
  let pdf
  mainWindow.webContents.printToPDF({}, (error, data) => {
    if (error) throw error
    pdf = data
    // what's the magic here to make pdf work?
  })
  const pdfWindow = new BrowserWindow({
    width: 1024,
    height: 800,
    webPreferences: {
      plugins: true,
      webSecurity: false
    }
  })
  pdfWindow.loadURL(pdf)
})

Javascript的异步本质是一个野兽。这与预期的效果一样:

ipcMain.on('view-pdf', (event, url) => {
  mainWindow.webContents.printToPDF({}, (error, data) => {
    if (error) throw error
    const pdf = data.toString('base64')
    const pdfWindow = new BrowserWindow({
      width: 1024,
      height: 800,
      webPreferences: {
        plugins: true,
        webSecurity: false
      }
    })
  pdfWindow.loadURL('data:application/pdf;base64,' + pdf)
  })
})

代码并不完美,但它就是这样工作的。

而且速度非常慢。我认为他们正在研究plf插件iirc中更好的解决方案。