电子:从缓冲区加载URL

Posted

技术标签:

【中文标题】电子:从缓冲区加载URL【英文标题】:Electron: loadURL from buffer 【发布时间】: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)
)

【问题讨论】:

【参考方案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 中寻找更好的解决方案。

以上是关于电子:从缓冲区加载URL的主要内容,如果未能解决你的问题,请参考以下文章

QT 无法从缓冲区加载图像

libpng 从内存缓冲区加载文件

OpenGL 图片从文件渲染到屏幕的过程

使用 ATL CImage 从内存缓冲区加载图像

填写我自己的网络音频缓冲区不起作用

提交数据加载中缓冲提示