Пример #1
0
    function TexOutput($expression, $graphic=false) {
        global $CFG;
        $output = '';

        $latex = new latex();

        // first check if it is likely to work at all
        $output .= "<h3>Checking executables</h3>\n";
        $executables_exist = true;
        if (is_file($CFG->filter_tex_pathlatex)) {
            $output .= "latex executable ($CFG->filter_tex_pathlatex) is readable<br />\n";
        }
        else {
            $executables_exist = false;
            $output .= "<b>Error:</b> latex executable ($CFG->filter_tex_pathlatex) is not readable<br />\n";
        }
        if (is_file($CFG->filter_tex_pathdvips)) {
            $output .= "dvips executable ($CFG->filter_tex_pathdvips) is readable<br />\n";
        }
        else {
            $executables_exist = false;
            $output .= "<b>Error:</b> dvips executable ($CFG->filter_tex_pathdvips) is not readable<br />\n";
        }
        if (is_file($CFG->filter_tex_pathconvert)) {
            $output .= "convert executable ($CFG->filter_tex_pathconvert) is readable<br />\n";
        }
        else {
            $executables_exist = false;
            $output .= "<b>Error:</b> convert executable ($CFG->filter_tex_pathconvert) is not readable<br />\n";
        }

        // knowing that it might work..
        $md5 = md5($expression);
        $output .= "<p>base filename for expression is '$md5'</p>\n";

        // temporary paths
        $tex = "$latex->temp_dir/$md5.tex";
        $dvi = "$latex->temp_dir/$md5.dvi";
        $ps = "$latex->temp_dir/$md5.ps";
        $img = "$latex->temp_dir/$md5.{$CFG->filter_tex_convertformat}";

        // put the expression as a file into the temp area
        $expression = html_entity_decode($expression);
        $output .= "<p>Processing TeX expression:</p><pre>$expression</pre>\n";
        $doc = $latex->construct_latex_document($expression);
        $fh = fopen($tex, 'w');
        fputs($fh, $doc);
        fclose($fh);

        // cd to temp dir
        chdir($latex->temp_dir);

        // step 1: latex command
        $cmd = "$CFG->filter_tex_pathlatex --interaction=nonstopmode $tex";
        $output .= execute($cmd);

        // step 2: dvips command
        $cmd = "$CFG->filter_tex_pathdvips -E $dvi -o $ps";
        $output .= execute($cmd);

        // step 3: convert command
        $cmd = "$CFG->filter_tex_pathconvert -density 240 -trim $ps $img ";
        $output .= execute($cmd);

        if (!$graphic) {
            echo($output);
        } else {
            send_file($img, "$md5.{$CFG->filter_tex_convertformat}");
         }
    }
function TexOutput($expression, $graphic = false)
{
    global $CFG;
    $output = '';
    $latex = new latex();
    // first check if it is likely to work at all
    $output .= "<h3>Checking executables</h3>\n";
    $executables_exist = true;
    if (is_file($CFG->filter_tex_pathlatex)) {
        $output .= "latex executable ({$CFG->filter_tex_pathlatex}) is readable<br />\n";
    } else {
        $executables_exist = false;
        $output .= "<b>Error:</b> latex executable ({$CFG->filter_tex_pathlatex}) is not readable<br />\n";
    }
    if (is_file($CFG->filter_tex_pathdvips)) {
        $output .= "dvips executable ({$CFG->filter_tex_pathdvips}) is readable<br />\n";
    } else {
        $executables_exist = false;
        $output .= "<b>Error:</b> dvips executable ({$CFG->filter_tex_pathdvips}) is not readable<br />\n";
    }
    if (is_file($CFG->filter_tex_pathconvert)) {
        $output .= "convert executable ({$CFG->filter_tex_pathconvert}) is readable<br />\n";
    } else {
        $executables_exist = false;
        $output .= "<b>Error:</b> convert executable ({$CFG->filter_tex_pathconvert}) is not readable<br />\n";
    }
    // knowing that it might work..
    $md5 = md5($expression);
    $output .= "<p>base filename for expression is '{$md5}'</p>\n";
    // temporary paths
    $tex = "{$latex->temp_dir}/{$md5}.tex";
    $dvi = "{$latex->temp_dir}/{$md5}.dvi";
    $ps = "{$latex->temp_dir}/{$md5}.ps";
    $img = "{$latex->temp_dir}/{$md5}.{$CFG->filter_tex_convertformat}";
    // put the expression as a file into the temp area
    $expression = html_entity_decode($expression);
    $output .= "<p>Processing TeX expression:</p><pre>{$expression}</pre>\n";
    $doc = $latex->construct_latex_document($expression);
    $fh = fopen($tex, 'w');
    fputs($fh, $doc);
    fclose($fh);
    // cd to temp dir
    chdir($latex->temp_dir);
    // step 1: latex command
    $cmd = "{$CFG->filter_tex_pathlatex} --interaction=nonstopmode {$tex}";
    $output .= execute($cmd);
    // step 2: dvips command
    $cmd = "{$CFG->filter_tex_pathdvips} -E {$dvi} -o {$ps}";
    $output .= execute($cmd);
    // step 3: convert command
    $cmd = "{$CFG->filter_tex_pathconvert} -density 240 -trim {$ps} {$img} ";
    $output .= execute($cmd);
    if (!$graphic) {
        echo $output;
    } else {
        if (file_exists($img)) {
            send_file($img, "{$md5}.{$CFG->filter_tex_convertformat}");
        } else {
            echo "Error creating image, see command execution output for more details.";
        }
    }
}
Пример #3
0
function TexOutput($expression, $graphic = false)
{
    global $CFG;
    $output = '';
    $latex = new latex();
    // first check if it is likely to work at all
    $output .= "<h3>Checking executables</h3>\n";
    $executables_exist = true;
    if (is_file($CFG->filter_tex_pathlatex)) {
        $output .= "latex executable ({$CFG->filter_tex_pathlatex}) is readable<br />\n";
    } else {
        $executables_exist = false;
        $output .= "<b>Error:</b> latex executable ({$CFG->filter_tex_pathlatex}) is not readable<br />\n";
    }
    if (is_file($CFG->filter_tex_pathdvips)) {
        $output .= "dvips executable ({$CFG->filter_tex_pathdvips}) is readable<br />\n";
    } else {
        $executables_exist = false;
        $output .= "<b>Error:</b> dvips executable ({$CFG->filter_tex_pathdvips}) is not readable<br />\n";
    }
    if (is_file($CFG->filter_tex_pathconvert)) {
        $output .= "convert executable ({$CFG->filter_tex_pathconvert}) is readable<br />\n";
    } else {
        $executables_exist = false;
        $output .= "<b>Error:</b> convert executable ({$CFG->filter_tex_pathconvert}) is not readable<br />\n";
    }
    // knowing that it might work..
    $md5 = md5($expression);
    $output .= "<p>base filename for expression is '{$md5}'</p>\n";
    // temporary paths
    $tex = "{$latex->temp_dir}/{$md5}.tex";
    $dvi = "{$latex->temp_dir}/{$md5}.dvi";
    $ps = "{$latex->temp_dir}/{$md5}.ps";
    $gif = "{$latex->temp_dir}/{$md5}.gif";
    // put the expression as a file into the temp area
    $expression = stripslashes($expression);
    $expression = html_entity_decode($expression);
    $output .= "<p>Processing TeX expression:</p><pre>{$expression}</pre>\n";
    $doc = $latex->construct_latex_document($expression);
    $fh = fopen($tex, 'w');
    fputs($fh, $doc);
    fclose($fh);
    // cd to temp dir
    chdir($latex->temp_dir);
    // step 1: latex command
    $cmd = "{$CFG->filter_tex_pathlatex} --interaction=nonstopmode {$tex}";
    $output .= execute($cmd);
    // step 2: dvips command
    $cmd = "{$CFG->filter_tex_pathdvips} -E {$dvi} -o {$ps}";
    $output .= execute($cmd);
    // step 3: convert command
    $cmd = "{$CFG->filter_tex_pathconvert} -density 240 -trim {$ps} {$gif} ";
    $output .= execute($cmd);
    if (!$graphic) {
        echo $output;
    } else {
        $lastmodified = filemtime($gif);
        $lifetime = 86400;
        $filetype = 'image/gif';
        $image = "{$md5}.gif";
        header("Last-Modified: " . gmdate("D, d M Y H:i:s", $lastmodified) . " GMT");
        header("Expires: " . gmdate("D, d M Y H:i:s", time() + $lifetime) . " GMT");
        header("Cache-control: max_age = {$lifetime}");
        // a day
        header("Pragma: ");
        header("Content-disposition: inline; filename={$image}");
        header("Content-length: " . filesize($gif));
        header("Content-type: {$filetype}");
        readfile("{$gif}");
    }
}