【问题标题】:Electron: loadURL from buffer电子:从缓冲区加载URL
【发布时间】:2018-10-25 01:21:12
【问题描述】:

在我的渲染器中,我可以发出一个事件来创建 PDF。但是,在写入磁盘之前,我想先在另一个窗口中打开新创建的 PDF。如何绕过写入文件系统并使用data 作为loadURL 的源?

到目前为止我的代码:

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)
})

【问题讨论】:

    标签: electron


    【解决方案1】:

    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 中寻找更好的解决方案。
    猜你喜欢
    • 2012-09-13
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 2013-01-10
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多