domains/remove_print_css.js
[app.webkitpdf] / webkitpdf.php
index e2f0f2c..4c470b5 100644 (file)
@@ -35,7 +35,7 @@ class WebkitPdf
             $this->h404("missing timeout");
         }
         
-        $xvfb = System::which('xvfb');
+        $xvfb = System::which('xvfb-run');
         if (empty($xvfb)) {
             $this->h404("missing xvfb");
         }
@@ -54,18 +54,46 @@ class WebkitPdf
         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