2014-09-09 3 views
1

Я нахожусь на машине с помощью стандартного инструмента командной строки и используя PhantomJS и модифицированный код rasterize.js. Проблема у меня, когда я передаю URL-адрес, http://time.com/3274245/e-cigarettes-debate/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+time/topstories+(TIME:+Top+Stories). Я перенаправил StandardOutput и StandardError, и вот что я получил с указанным выше URL-адресом.phantomjs rasterize имеет проблемы с параметрами url

StandardOutput

Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom] 
    paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter" 

StandardErrror

'utm_source' is not recognized as an internal or external command, 
operable program or batch file. 
'utm_medium' is not recognized as an internal or external command, 
operable program or batch file. 
'utm_campaign' is not recognized as an internal or external command, 
operable program or batch file. 

Таким образом, вопрос, есть ли способ решить проблему с параметрами в URL?

Пожалуйста, дайте мне знать, если есть какая-либо информация, которая отсутствует, или если что-то нуждается в разъяснении.

Я добавлю свои модифицированные rasterize.js ниже.

var page = require('webpage').create(), 
    system = require('system'), 
    address, output, size; 

page.settings.userAgent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:31.0) Gecko/20100101 Firefox/31.0'; 
if (system.args.length < 3 || system.args.length > 5) { 
    console.log('Usage: rasterize.js URL filename [paperwidth*paperheight|paperformat] [zoom]'); 
    console.log(' paper (pdf output) examples: "5in*7.5in", "10cm*20cm", "A4", "Letter"'); 
    phantom.exit(1); 
} else { 
    address = system.args[1]; 
    output = system.args[2]; 
    page.viewportSize = { width: 1200, height: 1200 }; 
    if (system.args.length > 3 && system.args[2].substr(-4) === ".pdf") { 
     size = system.args[3].split('*'); 
     page.paperSize = size.length === 2 ? { width: size[0], height: size[1], margin: '0px' } 
              : { format: system.args[3], orientation: 'portrait', margin: '1cm' }; 
    } 
    if (system.args.length > 4) { 
     page.zoomFactor = system.args[4]; 
    } 
    page.open(address, function (status) { 
     if (status !== 'success') { 
      console.log('Unable to load the address!'); 
      phantom.exit(); 
     } else { 
      window.setTimeout(function() { 
       page.render(output); 
       phantom.exit(); 
      }, 10000); 
     } 
    }); 
} 
+0

Что OS/оболочки вы? Различные оболочки нуждаются в различном цитировании параметров. –

+0

@ArtjomB. Я работаю на Windows-машине, используя стандартный инструмент командной строки. – shadonar

ответ

4

В Windows cmd вам нужно использовать кавычки вокруг параметров, которые могут иметь специальные символы. A = - хороший кандидат, когда что-то ломается.

phantomjs rasterize.js "http://time.com/..." time.png 

Для этой страницы конкретно вам может понадобиться отключить веб-безопасности:

phantomjs --web-security=false rasterize.js "http://time.com/..." time.png 
+1

Спасибо! Это заставило меня пройти мимо параметров. Теперь я вижу, что у меня есть еще одна проблема для решения, но, эй, еще один шаг к совершенству! :) – shadonar

Смежные вопросы