2012-06-05 2 views
1

Я хочу, чтобы мой php-скрипт вызывал phantomjs из командной строки, который будет генерировать многомерные PDF-файлы из многих html-файлов. Таким образом, у меня есть сцепленная строка с путями к моим HTML-файлам, а затем я призываю exec команду:Открытие нескольких html-файлов в PhantomJs с помощью PHP-синтаксической ошибки

$myFile1 = dirname(__FILE__)."/testFile0.html"; 
$myFile2 = dirname(__FILE__)."/testFile1.html"; 
$myFile3 = dirname(__FILE__)."/testFile2.html"; 

$files = array($myFile1, $myFile2, $myFile3); 

$command = 'phantomjs '.dirname(__FILE__).'/render.js '.implode('|', $files); 
exec($command, $phantomOut); 

echo print_r($phantomOut); 

Когда я звоню «phantomjs render.js„file1.html | file2.html“» все работает отлично , Но, при попытке сделать это из скрипта PHP Я получаю следующее сообщение об ошибке в апача error_log:

testFile1.html: line 1: syntax error near unexpected token `<' 
testFile1.html: line 1: `<!DOCTYPE HTML... 

HTML-файлы, я использую выглядеть хорошо, так что я из идеи о том, что может привести к это. Вывод при запуске этого скрипта в браузере: Array () 1 вместо текста, который я получаю в командной строке.

Ниже в PhantomJs рендеринга сценария:

var page = require('webpage').create(), 
    addresses = phantom.args[0], 
    outputPath = '/path_to_pdf/', 
    outputFilename, 
    filesArray, outputArray = [], 
    loadInProgress = false, 
    pageIndex = 0, 
    interval; 

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

if(addresses.indexOf('|') !== -1){ 
    filesArray = addresses.split('|'); 
} else{ 
    filesArray = [addresses]; 
} 

interval = setInterval(function() { 
    if (!loadInProgress && pageIndex < filesArray.length) { 
     page.open(filesArray[pageIndex]); 
    } 
    if (pageIndex === filesArray.length) { 
     console.log('OUTPUT: ', outputArray.join('|')); 
     phantom.exit(); 
    } 
}, 250); 

page.onLoadStarted = function() { 
    loadInProgress = true; 
}; 

page.onLoadFinished = function() { 
    loadInProgress = false; 
    outputFilename = 'print'+pageIndex+'.pdf'; 
    page.render(outputPath+outputFilename); 
    outputArray.push(outputFilename); 
    pageIndex++; 
} 

ответ

1

Вы пробовали оберточной пути к файлам, которые вы получите после того, как взрываются внутри цитаты? Это похоже на недопустимый параметр для меня, хотя сама ошибка странная.

+0

hmm действительно, когда вы вызываете консоль, я добавил их, я проверю, разрешает ли она проблему. Но как бы ошибка в error_log была актуальной в этом случае? –

+0

yay, это решило! –

+0

@mike_hornbeck Какую часть кода вы изменили, чтобы исправить? – sasikt