2011-09-23 4 views
10

Windows에서 Phantom JS를 사용하기 시작했지만 기능에 대한 문서 (아마도 내 문제의 근원)를 찾는 데 어려움이 있습니다. 나는 다음을 수행하고자하는 팬텀 JS를 사용Phantom JS를 사용하여 폴더의 모든 HTML 파일을 PNG로 변환

:

  1. 이 그것을 로컬 컴퓨터의 폴더 위치를 부여,
  2. , 그것은 해당 위치로 이동하여 HTML 파일의 목록을 찾아 보게한다
  3. 번 이 목록은 HTML 파일 목록의 루프를 확인하고 모두 PNG로 변환합니다 (rasterize.js 예제의 작동 방식과 유사). 여기서 파일 이름은 "HTML"과 "PNG"입니다.

나는이 아마 수 있습니다 확신 해요,하지만 난에 대한 팬텀 JS 함수 호출 찾을 수 없습니다 : 폴더에있는 파일의 목록과

  • 형식을 받고

    1. 을 Phantom JS의 gsub 및 grep에 대해.
  • 답변

    18
    var page = require('webpage').create(), loadInProgress = false, fs = require('fs'); 
    var htmlFiles = new Array(); 
    console.log(fs.workingDirectory); 
    var curdir = fs.list(fs.workingDirectory); 
    
    // loop through files and folders 
    for(var i = 0; i< curdir.length; i++) 
    { 
        var fullpath = fs.workingDirectory + fs.separator + curdir[i]; 
        // check if item is a file 
        if(fs.isFile(fullpath)) 
        { 
         // check that file is html 
         if(fullpath.indexOf('.html') != -1) 
         { 
          // show full path of file 
          console.log('File path: ' + fullpath); 
          htmlFiles.push(fullpath); 
         } 
        } 
    } 
    
    console.log('Number of Html Files: ' + htmlFiles.length); 
    
    // output pages as PNG 
    var pageindex = 0; 
    
    var interval = setInterval(function() { 
        if (!loadInProgress && pageindex < htmlFiles.length) { 
         console.log("image " + (pageindex + 1)); 
         page.open(htmlFiles[pageindex]); 
        } 
        if (pageindex == htmlFiles.length) { 
         console.log("image render complete!"); 
         phantom.exit(); 
        } 
    }, 250); 
    
    page.onLoadStarted = function() { 
        loadInProgress = true; 
        console.log('page ' + (pageindex + 1) + ' load started'); 
    }; 
    
    page.onLoadFinished = function() { 
        loadInProgress = false; 
        page.render("images/output" + (pageindex + 1) + ".png"); 
        console.log('page ' + (pageindex + 1) + ' load finished'); 
        pageindex++; 
    } 
    

    희망이 helps. FileSystem 호출에 대한 자세한 내용은 다음 페이지를 확인하십시오. http://phantomjs.org/api/fs/

    또한 FileSystem 함수는 PhantomJS 1.3 이상에서만 사용 가능하다고 생각합니다. latest 버전을 실행하십시오. 필자는 Windows 용 PyPhantomJS를 사용했지만, 다른 시스템에서도 문제없이 작동 할 것이라고 확신합니다.

    +0

    아무 래도 나는 스크립트로 빈'PNG' 만 얻는다. 'page.onLoadFinished'에'console.log (page.content);를 추가하면''진짜 HTML 내용이 무엇이든 관계없이 ... 제안 사항이 있습니까? Phantomjs v1.9.2 – AvL

    +0

    스냅 샷을 만들기 전에 페이지가 완전히로드되고 있습니까? –

    +0

    'status '도 확인했습니다. 내 질문보기 : http://stackoverflow.com/questions/19939046/phantomjs-fails-to-open-local-file – AvL

    관련 문제