$this->h404("missing timeout");
}
- $xvfb = System::which('xvfb');
+ $xvfb = System::which('xvfb-run');
if (empty($xvfb)) {
$this->h404("missing xvfb");
}
unlink($outpr);
$out = $outpr .'.pdf';
- $cmd = "timeout 30s $xvfb --auto-servernum $webkitpdf " .
+ // can take 2-5 minutes...
+
+ $cmd = "timeout 300s $xvfb --auto-servernum $webkitpdf " .
" --url " . escapeshellarg($_REQUEST['url']) . ' ' .
" --pdf " . $out . ' ';
$res = `$cmd`;
- if (!file_exist($out)) {
+ if (!file_exists($out)) {
$this->h404("Failed to create file $cmd ==> $res");
}
+ header('Content-type: application/octet-stream');
+
+ header("Expires: ");
+ header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
+ header("Pragma: public");
+ header("Last-Modified: " . gmdate("D, d M Y H:i:s", time()) . " GMT");
+
+ //header('Content-length: '. filesize($out));
+ header('Content-Disposition: attachment; filename="' . htmlspecialchars(basename($out)). '"');
+ ini_set('display_errors', 0);
+
+ $fh = fopen($out, 'rb');
+ fpassthru($fh);
+
+ fclose($fh);
+
+
+ unlink($out);
+ exit;
}
+ function h404($msg)
+ {
+ header("HTTP/1.0 404 Not Found");
+ echo htmlspecialchars($msg);
+ exit;
+ }
+
}
\ No newline at end of file