2017-02-04 38 views
8

Mam naprawdę długą stronę wewnątrz okna (trzeba przewijać, aby wyświetlić wszystkie), gdy próbuję uchwycić całe okno za pomocą poniższego kodu, otrzymuję ściśnięty obraz zamiast pełnego WebContent zrzut ekranu wewnątrz CurrentWindow.Jak przechwytywać całą zawartość WebContent wewnątrz 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()); 
      }); 

Próbowałem również następujący kod, ale wynik jest taki sam,

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

Pierwszy obiekt przekazany do capturePage metody powinny być związany, ale okazuje się rozmiar wyjściowego obrazu.

Sprawdziłem win_size, który jest prawidłowym rozmiarem WebContent w CurrentWindow.

enter image description here

enter image description here

Odpowiedz

2
win.getSize() 

Zwraca tablicę [width, height]. Przypisujesz zmienną win_width do wysokości okna i win_height do szerokości okna. Jeśli zmienisz te wartości, może to rozwiązać Twój problem.

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

Okazuje się, że jest to błąd, https://github.com/electron/electron/issues/8586#event-954437220 –

+0

Take granice inaczej, to strata będzie i tak. –