2016-09-07 3 views
2

PhantomJS가 다른 뷰포트 너비에서 페이지의 스크린 샷을 만들려면 동적으로 조정하고 싶습니다. 하지만 이것은 작동하지 않습니다 phantomjs script.js로 실행하면PhantomJS에서 뷰포트 크기를 동적으로 변경하십시오.

var system = require('system'); 
var page = require('webpage').create(); 

page.viewportSize = { width: 800, height: 600 }; 

page.open('http://example.com', function (status) { 

    page.render('medium.png'); 

    page.viewportSize = { width: 630, height: 420 }; 

    page.render('small.png'); 

    phantom.exit(); 
}); 

이 800 픽셀 각각의 폭에 두 개의 동일한 PNG 파일 medium.pngsmall.png을 생산하고 있습니다. 예상되는 동작은 이처럼 medium.png이고 너비는 630px 인 small.png입니다. 어떻게이 일을 성취 할 수 있습니까?

PS : This answer 유사한 질문으로 인해 나를 오류가 발생합니다. 또한이 질문에 대한 the accepted answer은 제가 피하고 싶은 아주 추악한 해결 방법을 제시합니다.

+0

나는 당신의 문제를 재현 할 수 없습니다. PhantomJS 2.1.1이 설치된 Windows에서 크기가 변경되었습니다. –

+0

나는 PhantomJS 버전 1.9로 우분투에있다.?. 업그레이드를 시도 할 것입니다. 귀하의 의견을 보내 주셔서 감사합니다! – hielsnoppe

답변

3

나는 같은 페이지를 다시 뷰포트 크기를 설정하고 열 수 있어야한다고 생각합니다 :

var system = require('system'); 
var page = require('webpage').create(); 

page.viewportSize = { width: 800, height: 600 }; 

page.open('http://example.com', function (status) { 

    page.render('medium.png'); 


    page.viewportSize = { width: 630, height: 420 }; 

    page.open('http://example.com', function (status) { 

     page.render('small.png'); 

     phantom.exit(); 
    }); 
}); 
+0

첫 번째 콜백 내부에 두 번째 부분이 있거나'setTimeout'으로 감싸는 경우 작동합니다. 감사! – hielsnoppe

+0

나는 그것을 당신의 추천 된 방법으로 바 꾸었습니다. – Sven

관련 문제