1

PHP スクリプトでコマンド ラインから phantomjs を呼び出して、多数の html ファイルから複数の pdf を生成するようにします。したがって、html ファイルへのパスを含む連結文字列があり、次にexeccommandを呼び出します。

$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 スクリプトからこれを実行しようとすると、Apache の 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++;
}
4

1 に答える 1

1

引用符で囲んだ後に取得するファイルへのパスをラップしてみましたか?エラー自体は奇妙ですが、私には無効なパラメータのように見えます。

于 2012-06-05T21:49:39.933 に答える