WkHtmlToPdf通过shell_exec()传递变量

时间:2013-08-19 13:30:54

标签: php pdf shell-exec

以下是我的脚本

的示例
$clientid = $_POST['clientid']; 
$from_day = $_POST['stat_from_day'];
$from_month = $_POST['stat_from_month'];
$from_year = $_POST['stat_from_year'];
$to_day = $_POST['stat_to_day'];
$to_month = $_POST['stat_to_month'];
$to_year = $_POST['stat_to_year'];

$from_date_string = $from_day . ' ' . $from_month . ' ' . $from_year ; 
$to_date_string = $to_day . ' ' . $to_month . ' ' . $to_year ; 

$baseurl = "http://www.test.com/";
$part1 = "?Search=" . $clientid . " from_day=" . $from_day . " from_month=" . $from_month . " from_year=" . $from_year ;
$part2 = " to_day=" . $to_day . " to_month=" . $to_month . " to_year=" . $to_year ;

$time = mktime();
$formatted_time = date("d_M_Y", $time);

$command = "xvfb-run -a /usr/bin/wkhtmltopdf --ignore-load-errors";
$url = $baseurl . $part1 . $part2 ;

$html = file_get_contents($url);

$output_dir = '/var/www/stats/pdf/';
$output = $clientid . '_Search_Export_' . $formatted_time . rand(10000, 99999) . '.pdf';

$generate = shell_exec($command . ' ' . $url . ' ' . $output_dir . $output) ;

我似乎遇到的问题是使用$命令,基本上当它运行wkHTMLtoPDF时它通过命令行运行它,并且& variable = bit导致脚本错误,如命令行&是另一个命令,我的问题是如何让变量正确传递,以便然后发送到的脚本能够使用我需要的$ _GET变量才能使脚本工作?

我已经做了一些查找,发现了一些使用$ argv 1的内容;

Replacing $_GET to make it work from command line

然而,我似乎找不到符合我需要的参考资料。

2 个答案:

答案 0 :(得分:1)

改变这个:

$url = $baseurl . $part1 . $part2 ;

对此:

$url = "\" . $baseurl . $part1 . $part2 . "\";

答案 1 :(得分:1)

实际上,wkhtmltopdf接受并将POST数据传递到正在打印/导出为pdf的服务器端页面。

您需要的只是--post fieldName value

xvfb-run -a /usr/bin/wkhtmltopdf --ignore-load-errors --post username blablabla --post bla2 answer2

您可以在命令中使用尽可能多的发布参数