2017-02-04 6 views
8

У меня есть очень длинная страница внутри окна (нужно прокрутить, чтобы просмотреть все), когда я пытаюсь захватить все окно с помощью кода ниже, я получаю сжатое изображение вместо полного WebContent снимок экрана внутри CurrentWindow.Как захватить весь WebContent внутри CurrentWindow

https://github.com/electron/electron/blob/master/docs/api/browser-window.md#wincapturepagerect-callback

 const remote = require('electron').remote; 
     const win = remote.getCurrentWindow(); 
     const win_size = win.getSize(); 
     const win_height = win_size[0]; 
     const win_width = win_size[1]; 

     win.capturePage({ 
       x: 0, 
       y: 0, 
       width: win_width, 
       height: win_height 
      }, 
      (img) => { 
       remote.require('fs') 
        .writeFile(TEMP_URL, img.toPng()); 
      }); 

Я также попытался следующий код, но результат тот же,

 const remote = require('electron').remote; 
     const webContents = remote.getCurrentWebContents(); 

     webContents.capturePage({ 
      x: 0, 
      y: 0, 
      width: 1000, 
      height: 2000 
     }, (img) => { 
      remote.require('fs') 
       .writeFile(TEMP_URL, img.toPng()); 
     }); 

Первый объект, переданный в в capturePage метод должен быть предел, но оказывается размер выходного изображения.

Я проверил win_size, который является правильным размером веб-компонента в CurrentWindow.

enter image description here

enter image description here

ответ

2
win.getSize() 

Возвращает массив с [width, height]. Вы назначаете переменную win_width в высоту окна и win_height по ширине окна. Если вы измените эти значения, это может решить вашу проблему.

const win_height = win_size[1]; 
const win_width = win_size[0]; 
+0

Оказывается, это ошибка, https://github.com/electron/electron/issues/8586#event-954437220 –

+0

Берут границы в противном случае она собирается отходы в любом случае. –