<?php
 
/*******************************************************************************************************************
 
 * Description of wrapper class Html2pcl                                                                           *
 
 * This class is used to produce .PCL and .PS file from HTML file                                                  *
 
 * @Author      : Nurul Ferdous                                                                                    *
 
 * Version      : 1.0.0                                                                                            *
 
 * Date         : 16 Dec 2008                                                                                      *
 
 * License      : Freeware                                                                                         *
 
 * Dependancy-1: html2ps package, you may get it from here: http://user.it.uu.se/~jan/html2ps.html                 *
 
 * you may install it from terminal by typing "sudo apt-get install html2ps" withpcl quote in kubuntu (in my case) *
 
 * html2ps uses perl                                                                                               *
 
 * Dependancy-2: Ghostscript, you may get it from here: http://pages.cs.wisc.edu/~ghost/                           *
 
 * Download it and run "make" command from terminal. you have to download and run exe installer if you use Windows *
 
 * The ps_output directory is used to store .ps files which are used to generate smaller sized pcl file            *
 
 * keep in your mind that you should have write permission in "pcl_output" directory                               *
 
 *******************************************************************************************************************/
 
class Html2pcl {
 
 
    public $device = 'laserjet'; //alternatively you may use 'epson' etc as printers
 
    public $paperSize = 'a4'; //alternative you may use 'letter' etc as papersize
 
 
    function __construct(){
 
        //checking whether the directory named "out" already exists or not
 
        if(!file_exists("pcl_output")){
 
            mkdir("./pcl_output", 0755);
 
        }
 
 
        //checking whether the directory named "ps_output" already exists or not
 
        if(!file_exists("ps_output")){
 
            mkdir("./ps_output", 0755);
 
        }
 
    }
 
 
    function __destruct(){
 
        //Clearing file status cache
 
        clearstatcache();
 
    }
 
 
    function isWinServer()
 
    {
 
        return !(strpos(strtoupper($_SERVER['SERVER_SOFTWARE']), 'WIN32') === false);
 
    }
 
 
    //please don't use $htmlFileName without "http://" rather use like this "http://www.google.com"
 
    //please use $pclFileName without the extension like "google"
 
    function makePCL($htmlFileName, $pclFileName){
 
        $file = './pcl_output/'.$pclFileName.'.pcl';
 
        if($this->isWinServer()){
 
            //checking whether the file name given as parameter is already exists or not
 
            if(!file_exists($file)){
 
                exec("perl html2ps $htmlFileName > ./ps_output/".$pclFileName.".ps");
 
                exec("gs -sDEVICE={$this->device} -sPAPERSIZE={$this->paperSize} -sOutputFile=./pcl_output/$pclFileName.pcl -dNOPAUSE -q ./ps_output/$pclFileName.ps -c quit");
 
            }
 
        }
 
        else{
 
            if(!file_exists($file)){
 
                exec("html2ps $htmlFileName > ./ps_output/".$pclFileName.".ps");
 
                exec("gs -sDEVICE={$this->device} -sPAPERSIZE={$this->paperSize} -sOutputFile=./pcl_output/$pclFileName.pcl -dNOPAUSE -q ./ps_output/$pclFileName.ps -c quit");
 
            }
 
        }
 
    }
 
}
 
?>
 
 
 |