Return to Snippet

Revision: 62190
at February 7, 2013 05:15 by ibob


Initial Code
<?php

//name the snippet as download_pdf, and then reference to it as [[!download_pdf]]
if(isset($_REQUEST["pid"])){
    ini_set('zlib.output_compression','0');
    function generate_name($resname){
        $rndname = chr(rand(65,90)).chr(rand(97,122)).chr(rand(48,57)).chr(rand(65,90)).chr(rand(97,122)).chr(rand(48,57));
        $pdffilename = "/home/berlinp/public_html/beta/html2pdf/pdftmp/".$resname.$rndname.".pdf";
        if(file_exists($pdffilename))
           return generate_name($resname);
        else
           return $pdffilename;
    }
    $resId = mysql_escape_string($_REQUEST["pid"]);
    $url = "http://".$_SERVER['HTTP_HOST']."/beta/html2pdf/".$modx->makeUrl($resId);
    $name = $modx->getObject('modResource', $resId)->get('alias');
    $pdffilename = generate_name($name);
    $cmd = "/home/berlinp/public_html/beta/cgi-bin/wkhtmltopdf -q --footer-center '[page]/[topage]' --page-size Letter $url $pdffilename";
    shell_exec($cmd);
    //WAIT UP TO 20 SEC IF FILE IS NOT CREATED
    for($i=1;$i<20;$i++){
        sleep(1); //wait to finish
         if(file_exists($pdffilename) && filesize($pdffilename)>10) break;
    }
    //WAIT UP TO 20 SEC IF FILE IS NOT CREATED
    if(!file_exists($pdffilename)) die("Sorry, an error ocours while downloading your pdf file. Please try again later.");
    header('Content-Type: application/pdf');
    header('Content-Disposition: inline; filename="'.$name.'.pdf"');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: '.filesize($pdffilename));
    ob_clean();
    flush();
    readfile($pdffilename);
    unlink($pdffilename);
    exit();
}

Initial URL


Initial Description


Initial Title
PDF Export Snippet Using WKHTMLTOPDF Binary "cgi-bin"

Initial Tags


Initial Language
Other