Я хочу, чтобы мой 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++;
}
hmm действительно, когда вы вызываете консоль, я добавил их, я проверю, разрешает ли она проблему. Но как бы ошибка в error_log была актуальной в этом случае? –
yay, это решило! –
@mike_hornbeck Какую часть кода вы изменили, чтобы исправить? – sasikt