AnonSec Shell
Server IP : 198.244.165.102  /  Your IP : 216.73.216.218   [ Reverse IP ]
Web Server : nginx/1.24.0
System : Linux modovh-ub-01 6.8.0-138-generic #138-Ubuntu SMP PREEMPT_DYNAMIC Fri Jul 31 22:41:49 UTC 2026 x86_64
User : colleary ( 1011)
PHP Version : 8.3.23
Disable Function : NONE
Domains : 2 Domains
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/sfpcplanning/public_html/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     [ BACKUP SHELL ]     [ JUMPING ]     [ MASS DEFACE ]     [ SCAN ROOT ]     [ SYMLINK ]     

Current File : /var/www/sfpcplanning/public_html/lib/aprint.php
<?php

/**

* APrint.php

*

* Simple class for printing text

*

* $Header: d:\cvs/classistd/aprint/aprint.php,v 1.15 2005/02/13 20:29:29 Darvin Exp $

*

* @author Andrioli Darvin

* @version 1.4.0

*

* @copyright

* Copyright (C) 2003-2005 Andrioli Darvin <darvin@andrioli.com>

*

* This library is free software; you can redistribute it and/or

* modify it under the terms of the GNU Lesser General Public

* License as published by the Free Software Foundation; either

* version 2 of the License, or (at your option) any later version.

*

* This library is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

* Lesser General Public License for more details.

*

* You should have received a copy of the GNU Lesser General Public

* License along with this library; if not, write to the Free Software

* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*

*/



/**

* Print using courier new, with predefined size, weight 400 (normal)

* @const AP_NORMAL_FONT

* @access public

*/

define('AP_NORMAL_FONT',0); // print using NORMAL FONT

/**

* Print using courier new, with predefined size, weight 800 (bold)

* @const AP_BOLD_FONT

* @access public

*/

define('AP_BOLD_FONT',1); // print using bold font

/**

* Small font used to print the page's footer

* @const AP_FOOTER_FONT

* @access public

*/

define('AP_FOOTER_FONT',2);

/**

* left text align.

* @const AP_LEFT

* @access public

* @see text()

*/

define('AP_LEFT',0);

/**

* center text align.

* @const AP_CENTER

* @access public

* @see text()

*/

define('AP_CENTER',1);

/**

* right text align.

* @const AP_RIGHT

* @access public

* @see text()

*/

define('AP_RIGHT',2);



/**

* class APrint

*

*/

class APrint {



/**

* Selected printer (Windows name)

*

* @var string $PrinterName

*/

var $PrinterName;

/**

* I've already established a connection to the printer?

* (TRUE/FALSE)

* @var bool $ConnectionOpened

*/

var $ConnectionOpened;

/**

* printer handler

*

* @var resource

*/

var $hPrinter;



/**

* Current row

* @var integer

*/

var $row;



/**

* Orizontal resolution

* @var integer

*/

var $Res_X;

/**

* Vertical resolution

* @var integer

*/

var $Res_Y;



/**

* Value for the font height

* @var integer

*/

var $FontH;

/**

* Value for the font width

*

*/

var $FontW;

/**

* Page counter

*

*/

var $NPag;



/**

* handler of current selected font

*/

var $CurrentFont;

/**

* Paper hight

*

*/

var $PaperDimX;

/**

* Paper width

*

*/

var $PaperDimY;

/**

* Margins, size of the top margin

*/

var $MarginTop;

/**

* Margins, size of the bottom margin

*/

var $MarginBottom;

/**

* Margins, size of the left margin

*/

var $MarginLeft;

/**

* Margins, size of the right margin

*/

var $MarginRight;



/**

* array with all created font

* @var array $FontTable

* @see CreateFont()

*/

var $FontTable;



/**

* Job name

* @var string $JobTitle

* @see _OpenPrinter()

*/

var $JobTitle;



var $ScriptId;

/**

* Callbacks array. Ths index holdsall callback defined.

* Each index map to a particular function that supports the callback

* The supported call back are:

* 'newpage' -> Call the function each time just before execute the

* 'NewPage' function code

*

* @var array

* @see NewPage()

* @see SetCallBack();

* @see $CallBacksParm

*/

var $CallBacks;

/**

* Parameters for the callbacks functions

* @var array

* @see $CallBacks

*/

var $CallBacksParm;

/**

* Array holding the supported callbacks

* @var array

* @see SetCallBack()

*/

var $ValidCallbacks=array('newpage');

/**

* Should this module print its own page footer. If set to

* false, you may supply your custom footer using TextFooter

* and 'newpage' callback

* @var boolean

* @see NewPage()

* @see TextFooter()

* @see SetPrintFooter()

*/

var $PrintPageFooter=TRUE;

/**

* Array holding the supported unit of measure used by movement

* function.

* @var array

* @see MvRelativePos()

* @see MvAbsolutePos()

*/

var $ValidMeasure=array('row','mm','inch','twip');

/**

* Array containing texts to print as header into each page

* Also, into the array are stored the font id request to print the text

* You may set different font to each row.

* @var array

* @see SetNewPageHeader()

*/

var $NewPageHeader;

/**

* @var boolean

* @see SetAutoNewPage()

*/

var $AutoNewPage;

/**

* Initialize this class. It doesn not attempt to

* establish the connection to the printer

* This class will perform this job at the first time that you send any text

* @param string $TitleText document title

* @param string $ScriptId script identification

* @access public

*/

function APrint($TitleText="",$ScriptId="") {

$this->PrinterName="HP LaserJet 5100 PCL 6 (LPT3)"; // If no choice, use the default printer

$this->ConnectionOpened=false;

$this->row=10;

$this->NPag=0;

// Margins default settings

$this->MarginTop=400;

$this->MarginBottom=400;

$this->MarginLeft=40;

$this->MarginRight=40;

// Start with an empty array

$this->FontTable=array();

// Initial value for paper size. I'll set the correct value after I'll open the connection

// to the printer

$this->PaperDimX=-1;

$this->PaperDimY=-1;

$this->JobTitle=$TitleText;

$this->ScriptId=$ScriptId;

$this->CallBacks=array();

$this->CallBacksParm=array();

$this->NewPageHeader=array();

$this->SetAutoNewPage(TRUE);

}

/**

* inizialize all parameter about the page size

* Require a printer handler.

* Unit used: twip,

* 1 inch = 1440 twip

* 1 mm = 56.7 twip

* @access private

*/

function _DefinePageSize()

{

$PaperType=printer_get_option($this->hPrinter, PRINTER_PAPER_FORMAT);

switch($PaperType)

{

case PRINTER_FORMAT_CUSTOM:

// custom paper width in mm

$this->PaperDimX=printer_get_option($this->hPrinter, PRINTER_PAPER_WIDTH)*56.7;

$this->PaperDimY=printer_get_option($this->hPrinter, PRINTER_PAPER_LENGTH)*56.7;

break;

case PRINTER_FORMAT_LETTER:

$this->PaperDimX=8.5*1440;

$this->PaperDimY=11*1440;

break;

case PRINTER_FORMAT_LEGAL:

$this->PaperDimX=8.5*1440;

$this->PaperDimY=14*1440;

break;

case PRINTER_FORMAT_A3:

$this->PaperDimX=297*56.7;

$this->PaperDimY=420*56.7;

break;

case PRINTER_FORMAT_A4:

$this->PaperDimX=8*1440;

$this->PaperDimY=11.69*1440;

break;

case PRINTER_FORMAT_A5:

$this->PaperDimX=148*56.7;

$this->PaperDimY=210*56.7;

break;

case PRINTER_FORMAT_B4:

$this->PaperDimX=250*56.7;

$this->PaperDimY=354*56.7;

break;

case PRINTER_FORMAT_B5:

$this->PaperDimX=182*56.7;

$this->PaperDimY=257*56.7;

break;

case PRINTER_FORMAT_FOLIO:

$this->PaperDimX=8.5*1440;

$this->PaperDimY=13*1440;

break;



default:

$this->PaperDimX=8.27*1440;

$this->PaperDimY=11.69*1440;

break;

// trigger_error("Paper format type:".$PaperType." not supported",E_USER_ERROR);

}

// Now that I know the size of the page, I check tha value for margins

$this->_CheckMarginValue();

}



/**

* Check the value for the margin. They should be >0 and

* less then the page size

*

* @access private

*/

function _CheckMarginValue()

{

if($this->MarginTop<0)

trigger_error("Top margin is < 0. It should be greater or equal to 0",E_USER_ERROR);

if($this->PaperDimY>0 && $this->MarginTop>$this->PaperDimY)

trigger_error("Top margin bigger then paper size",E_USER_ERROR);

#

if($this->MarginBottom<0)

trigger_error("Bottom margin is < 0. It should be greater or equal to 0",E_USER_ERROR);

if($this->PaperDimY>0 && $this->MarginBottom>$this->PaperDimY)

trigger_error("Bottom margin bigger then paper size",E_USER_ERROR);

if($this->PaperDimY>0 && ($this->MarginBottom+$this->MarginTop)>$this->PaperDimY)

trigger_error("No rows to write left. Bottom margin + top margin bigger then paper size",E_USER_ERROR);



if($this->MarginLeft<0)

trigger_error("Left margin is < 0. It should be greater or equal to 0",E_USER_ERROR);

if($this->PaperDimX>0 && $this->MarginLeft>$this->PaperDimX)

trigger_error("Left margin bigger then paper width",E_USER_ERROR);



if($this->MarginRight<0)

trigger_error("Right margin is < 0. It should be greater or equal to 0",E_USER_ERROR);

if($this->PaperDimX>0 && $this->MarginRight>$this->PaperDimX)

trigger_error("Right margin bigger then paper width",E_USER_ERROR);

if($this->PaperDimX>0 && ($this->MarginLeft+$this->MarginRight)>$this->PaperDimX)

trigger_error("No columns to write left. Left margin + right margin bigger then paper width",E_USER_ERROR);



}



/**

* Set the callback function

* @param string $callback which callback apply the function

* @param mixed $func function name or array holding object and method

* (see call_uzer_func_array manual page for more detail)

* @param array $parm parameters to pass to the function

* @access public

* @see $ValidCallbacks

* @see $CallBacks

*/

function SetCallBack($callback,$func,$parm)

{

if(!in_array($callback,$this->ValidCallbacks))

trigger_error('Callback '. $callback. ' does not supported',E_USER_ERROR);

$this->CallBacks[$callback]=$func;

$this->CallBacksParm[$callback]=$parm;

}



/**

* Useful function to setup all margins with one function

* use -1 to skip the parameter

*

* @param integer $top top margin size

* @param integer $bottom bottom margin size

* @param integer $left left margiclass

* @param integer $right right margin size

* @access public

*/



function SetMargin($top,$bottom=-1,$left=-1,$right=-1)

{

if(!($top<0))

$this->MarginTop=$top;

if(!($bottom<0))

$this->MarginBottom=$bottom;

if(!($left<0))

$this->MarginLeft=$left;

if(!($right<0))

$this->MarginRight=$right;

$this->_CheckMarginValue();

}



/**

* Set the size for the top margin

* @param integer

* @access public

*/

function SetTopMargin($value)

{

$this->MarginTop=$value;

$this->_CheckMarginValue();

}

/**

* Set the size for the bottom margin

* @param integer

* @access public

*/

function SetBottomMargin($value)

{

$this->MarginBottom=$value;

$this->_CheckMarginValue();

}

/**

* Set the size for the left margin

* @param integer

* @access public

*/

function SetLeftMargin($value)

{

$this->MarginLeft=$value;

$this->_CheckMarginValue();

}



/**

* Set the size for the right margin

* @param integer

* @access public

*/

function SetRightMargin($value)

{

$this->MarginRight=$value;

$this->_CheckMarginValue();

}



/**

* Specifiy which printer I'll use. If you don't give any printer, the default printer

* will be used.

* @param string $Name printer name as defined in Window

* @access public

*/

function SetPrinter($Name)

{

if($this->ConnectionOpened)

trigger_error("Set the printer name before send any text (or title)",E_USER_ERROR);

$this->PrinterName=$Name;

}



/**

* Set if the module should print its own footer or not.

* @param bool $print TRUE=print its own page footer

* @access public

*/

function SetPrintFooter($print)

{

$this->PrintPageFooter=$print;

}



/**

* Setup the text to print on each page.

* The text, passed as array, allow you to pass many rows

* ( 1 row = 1 item).

* @var array text to print. Due to compatibility toward previous version

* text may be a string, in that case font will be ignored

* @var array font to use to print each row

* @var bool Should I print the header on the first page?

* @access public

*/

function SetPageHeader($Text,$fontArray=array(),$OnFirstPage=true)

{

$this->PageHeader=$Text;

// Each call will destroy the previous values

$this->NewPageHeader=array();

if(is_array($Text))

{

// new parameters version aprint >= 1.2

foreach($Text as $Key => $Value)

{

if(array_key_exists($Key,$fontArray))

$txtFont=$fontArray[$Key];

else

$txtFont="";

$this->NewPageHeader[]=array('Text'=>$Value,

'Font'=>$txtFont);

}

}

else

{

// 1.0 version, $Text only one string

$this->NewPageHeader[]=array('Text'=>$Text,

'Font'=>"");

}

if($OnFirstPage&&$this->NPag==1)

$this->PrintPageHeader();

}



/**

* Set the AutoNewPage flag. If set to true, the module call the functionNewPage

* automatically at the end of the page, if set to off, the user must call the

* NewPage function

* @param boolean

* @return boolean The function returns the old value

* @see NewPage()

*/

function SetAutoNewPage($bool)

{

$old=$this->AutoNewPage;

$this->AutoNewPage=$bool;

return($old);

}



/**

* Write an header at the top of the first page.

* @param string Text to print

* @param integer $hFont font handle returned by CreateFont

* @access public

* @see CreateFont();

*/

function HeaderText($TitleText,$hFont=-1)

{

if(!$this->ConnectionOpened) $this->_OpenPrinter();

$this->Text("----------------------------------------------------------",AP_NORMAL_FONT);

$font=($hFont==-1)?AP_BOLD_FONT:$hFont;

$this->Text($TitleText,$font);

$this->Text("----------------------------------------------------------",AP_NORMAL_FONT);

}



/**

* Skip a row, left a blank row.

* @access public

*

*/

function BlankRow()

{

if(!$this->ConnectionOpened) $this->_OpenPrinter();

$this->Text(" ");

}



/**

* printout the text

* @param string $text text to printout

* @param integer $hFont Handle to the font to use. Handle returned by CreateFont

* @param integer $align text alignment

* @param integer $col Orizontal position where start to print the text. This value

* will be added to the left margin.

* @access public

* @see CreateFont()

* @see TextFooter()

*/

function Text($text,$hFont=-1,$align=AP_LEFT,$col=0)

{

if(!$this->ConnectionOpened) $this->_OpenPrinter();

// Select new font?

if($hFont!=-1)

{

$this->_SetFont($hFont);

}

$this->FontH=$this->FontTable[$this->CurrentFont]['fontHeight'];

$width=$this->FontTable[$this->CurrentFont]['fontWidth'];

$textWidth=strlen($text)*$width;

$StartCol=$this->_BeginCol($align,$textWidth,$col);

printer_draw_text($this->hPrinter,$text,$this->ResConv_x($StartCol),$this->ResConv_y($this->row));

$this->row+=$this->FontH;

if($this->row>($this->PaperDimY-$this->MarginBottom-300-$this->FontH)&&$this->AutoNewPage)

{

$this->NewPage();

}

}



/**

* printout the text at the exact position requested

* @param integer orizontal position

* @param integer vertical position where print the text

* @param string $text text to printout

* @param integer $hFont Handle to the font to use. Handle returned by CreateFont

* @access public

* @see CreateFont()

* @see Text()

*/

function TextXY($Xpos,$Ypos,$text,$hFont=-1)

{

if(!$this->ConnectionOpened) $this->_OpenPrinter();

// Select new font?

if($hFont!=-1)

{

$this->_SetFont($hFont);

}

$this->FontH=$this->FontTable[$this->CurrentFont]['fontHeight'];

$width=$this->FontTable[$this->CurrentFont]['fontWidth'];

printer_draw_text($this->hPrinter,$text,$this->ResConv_x($Xpos),$this->ResConv_y($Ypos));

$this->row=$Ypos+$this->FontH;

if($this->row>($this->PaperDimY-$this->MarginBottom-300-$this->FontH)&&$this->AutoNewPage)

{

$this->NewPage();

}

}



/**

* Print the page header

* @access public

* @see Text()

*/

function PrintPageHeader()

{

if(!$this->ConnectionOpened) $this->_OpenPrinter();

$OriginalFont=-1;

// var_dump($this->NewPageHeader);

foreach($this->NewPageHeader as $Value)

{

#

$Text=$Value['Text'];

$hFont=$Value['Font'];

// Select new font?

// var_dump($hFont);

if($hFont!=-1 && $hFont!="")

{

$oldFont=$this->_SetFont($hFont);

}

if($OriginalFont<0) $OriginalFont=$oldFont;

$width=$this->FontTable[$this->CurrentFont]['fontWidth'];

$FontH=$this->FontTable[$this->CurrentFont]['fontHeight'];

$textWidth=strlen($Text)*$width;

$StartCol=$this->_BeginCol(AP_LEFT,$textWidth,0);

printer_draw_text($this->hPrinter,$Text,$this->ResConv_x($StartCol),

$this->ResConv_y($this->row));

$this->row+=$FontH;

} // Loop on each row



if($OriginalFont>-1)

$this->_SetFont($OriginalFont);

}





/**

* Print the given text as page footer

* @param string $text text to printout

* @param integer $hFont Handle to the font to use. Handle returned by CreateFont

* @param integer $align text alignment

* @param integer $col Orizontal position where start to print the text. This value

* will be added to the left margin.

* @access public

* @see CreateFont()

* @see Text()

*/

function TextFooter($text,$hFont=-1,$align=AP_LEFT,$col=0)

{

if(!$this->ConnectionOpened) $this->_OpenPrinter();

// Select new font?

if($hFont!=-1)

{

$oldFont=$this->_SetFont($hFont);

}

else

{

$oldFont=$this->_SetFont(AP_FOOTER_FONT);

}

$width=$this->FontTable[$this->CurrentFont]['fontWidth'];

$FontH=$this->FontTable[$this->CurrentFont]['fontHeight'];

$textWidth=strlen($text)*$width;

$StartCol=$this->_BeginCol($align,$textWidth,$col);

printer_draw_text($this->hPrinter,$text,$this->ResConv_x($StartCol),

$this->ResConv_y($this->PaperDimY-$this->MarginBottom-$FontH));

printer_end_page($this->hPrinter);

$this->_SetFont($oldFont);

}



/**

* This function compute the starting position given the

* text alignment, the left margin and the starting column

* @param integer $align text alignment

* @param integer $textWidth text width

* @param integer $col Orizontal position where start to print the text. This value

* will be added to the left margin.

* @access private

* @see TextFooter()

* @see Text()

*

*/

function _BeginCol($align,$textWidth,$col)

{

switch($align)

{

case AP_LEFT:

$StartCol=$this->MarginLeft+$col;

break;

case AP_CENTER:

if(($this->MarginLeft+$this->MarginRight+$textWidth+$col)>$this->PaperDimX)

$StartCol=$this->MarginLeft;

else

$StartCol=$this->MarginLeft+$col+floor(($this->PaperDimX-$this->MarginLeft-$this->MarginRight-$textWidth-$col)/2);

break;

case AP_RIGHT:

if(($this->MarginLeft+$this->MarginRight+$textWidth+$col)>$this->PaperDimX)

$StartCol=$this->MarginLeft;

else

$StartCol=$this->PaperDimX-$this->MarginRight-$textWidth;

break;

}

return($StartCol);

}

#

/**

* Draw a dash line.

* @access public

*/

function Line()

{

$this->Text("----------------------------------------------------------");

}



/**

* Close the output to the printer and start to print

* @access public

*/

function run()

{

$this->_FooterNote();

printer_end_doc($this->hPrinter);

printer_close($this->hPrinter);

}



/**

* Close the current page and start a new one.

*

* @access public

*/

function NewPage()

{

if(!$this->ConnectionOpened)

trigger_error("Open the connection to the printer before run the function NewPage",E_USER_ERROR);

// run the callback, if set

if(array_key_exists('newpage',$this->CallBacks))

call_user_func_array($this->CallBacks['newpage'],$this->CallBacksParm['newpage']);



if($this->NPag&&$this->PrintPageFooter) {

$this->_FooterNote();

}

if($this->NPag) {

printer_end_page($this->hPrinter);

}

$this->NPag++;

printer_start_page($this->hPrinter);

$this->row=$this->MarginTop;

$this->PrintPageHeader();

}



/**

* Printout page number and script name as footer

*

* @access private

*/

function _FooterNote()

{

$oldFont=$this->_SetFont(AP_FOOTER_FONT);

printer_draw_text($this->hPrinter,$this->ScriptId,

$this->ResConv_x($this->MarginLeft),

$this->ResConv_y($this->PaperDimY-$this->MarginBottom-$this->FontTable[AP_FOOTER_FONT]['fontHeight']));

printer_draw_text($this->hPrinter,$this->NPag,

$this->ResConv_x($this->PaperDimX-$this->MarginRight-4000),

$this->ResConv_y($this->PaperDimY-$this->MarginBottom-$this->FontTable[AP_FOOTER_FONT]['fontHeight']));

$this->_SetFont($oldFont);

}



/**

* Create a new font

*

* @param string $fName Font Name, default: Courier New

* @param integer $fHeight Font height, default: 336

* @param integer $fWidth Font width, default: 168

* @param integer $fWeight Font weight, default: 400. 0 -> thin, 800 -> bold

* @param boolean $fItalic Italic script? True/False

* @param boolean $fUnderline Text with underline? True/False

* @param boolean $fStrikeout True/False

* @param integer $fOrientation Should be always 3 digits, i.e 020. See printer_create_font in the note to the manual

* @see _SetFont()

* @see Text()

* @access public

*

*/

function CreateFont($fName="Courier new",$fHeight=336,$fWidth=168,$fWeight=400,$fItalic=false,$fUnderline=false,$fStrikeout=false,$fOrientaton=0)

{

if(!$this->ConnectionOpened)

trigger_error("Open the connection to the printer before define the font",E_USER_ERROR);

$LastFontId=count($this->FontTable);

$this->FontTable[$LastFontId]['fontName']=$fName;

$this->FontTable[$LastFontId]['fontHeight']=$fHeight;

$this->FontTable[$LastFontId]['fontWidth']=$fWidth;

$this->FontTable[$LastFontId]['fontWeight']=$fWeight;

$this->FontTable[$LastFontId]['fontItalic']=$fItalic;

$this->FontTable[$LastFontId]['fontUnderline']=$fUnderline;

$this->FontTable[$LastFontId]['fontStrikeout']=$fStrikeout;

$this->FontTable[$LastFontId]['fontOrientaton']=$fOrientaton;

// printer_create_font("Courier New",66,33,400,false,false,false,0);

$this->FontTable[$LastFontId]['fontHandler']=printer_create_font($fName,$this->ResConv_y($fHeight),$this->ResConv_x($fWidth),$fWeight,$fItalic,$fUnderline,$fStrikeout,$fOrientaton);

return($LastFontId);

}



/**

* Establish the connection to the printer

* @access private

*/

function _OpenPrinter()

{

if($this->PrinterName=="")

$this->hPrinter=printer_open();

else

$this->hPrinter=printer_open($this->PrinterName);



//

$this->ConnectionOpened=true;

$this->_DefinePageSize(); // inizialize all parameter relate the margins, and page size

if(!$this->Res_X)

$this->Res_X=printer_get_option($this->hPrinter, PRINTER_RESOLUTION_X);

if(!$this->Res_Y)

$this->Res_Y=printer_get_option($this->hPrinter, PRINTER_RESOLUTION_Y);

printer_start_doc($this->hPrinter, $this->JobTitle);

$this->_DefaultFont();

$this->_SetFont(AP_NORMAL_FONT);

$this->NewPage();

}





/**

* Start the connection to the printer. This is the public interface

* to _OpenPrinter.

* @param string Name of the printer to use. If not set use the system default

* @access public

* @see _OpenPrinter()

*/

function OpenPrinter($PrinterName="")

{

if($PrinterName!="") $this->SetPrinter($PrinterName);

$this->_OpenPrinter();

}



/**

* Define some dafault font

* @access private

*/

function _DefaultFont()

{

// create predefined font. Don't change the row order

$this->CreateFont("Courier New",336,168,400,false,false,false,0);

$this->CreateFont("Courier New",336,168,800,false,false,false,0);

// echo $this->CreateFont("arial",163,84,200,false,false,false,0);

$this->CreateFont("Courier new",163,50,200,false,false,false,0);

}



/**

* Convert the internal point size to the printer point size according to its resolution

* As internal unit I use the twip. 1 inch = 1440 twip, 1 mm = 56,7 twip

* @param integer

* @return integer

* @access private

* @see ResConv_y()

*/

function ResConv_x($value)

{

return(floor($value*$this->Res_X/1440));

}



/**

* @param integer

* @return integer

* @see ResConv_x()

*/

function ResConv_y($value)

{

return(floor($value*$this->Res_Y/1440));

}



/**

* Convert the printer point size into internal point size according to its resolution

* As internal unit I use the twip. 1 inch = 1440 twip, 1 mm = 56,7 twip

* @param integer

* @return integer

* @access private

* @see Conv2Twip_y()

* @see ResConv_x()

* @see ResConv_y()

*/

function Conv2Twip_x($value)

{

return(floor($value*1440/$this->Res_X));

}



/**

* @param integer

* @return integer

* @see Conv2Twip_x()

*/

function Conv2Twip_y($value)

{

return(floor($value*1440/$this->Res_Y));

}



/**

* Activate the specified font

*

* @param int $fnt font handle returned by CreateFont

* @access private

* @see CreateFont()

*/

function _SetFont($fnt=-1)

{

if($fnt==-1)

$fntHandler=$this->CurrentFont;

else

$fntHandler=$fnt;

assert('array_key_exists($fntHandler,$this->FontTable)');

printer_select_font($this->hPrinter,$this->FontTable[$fntHandler]['fontHandler']);

$oldFont=$this->CurrentFont;

$this->CurrentFont=$fntHandler;

return($oldFont);

}



/**

* Move the currentline up or down of nRow rows. It return TRUE on success,

* FALSE otherwise

* @parameter integer $nUnit Numebr of 'unit' may be less or greater then zero

* @parameter string $unit measurement used to set the movement

* @access public

* @return boolean

*/

function MvRelativePos($nUnit,$unit='row')

{

$move=$this->_CalculatePos($nUnit,$unit);

if($move<0&&abs($move)>$this->row)

return(FALSE);

if($move>0&&$this->row+$move>$this->PaperDimY)

return(FALSE);

$this->row+=$move;

return(TRUE);

}



/**

* Move the currentline to nRow. It return TRUE on success,

* FALSE otherwise

* @parameter integer $nUnit Numebr of 'unit' it must be greater then zero

* @parameter string $unit measurement used to set the movement

* @access public

* @return boolean

*/

function MvAbsolutePos($nUnit,$unit='row')

{

$move=$this->_CalculatePos($nUnit,$unit);

if($move<1||$move>$this->PaperDimY)

return(FALSE);

$this->row=$move;

return(TRUE);

}



/**

* Move to the first row after the top margin It return TRUE on success,

* FALSE otherwise

* @access public

* @return boolean

*/

function MvTop()

{

$this->row=$this->MarginTop;

return(TRUE);

}



/**

* Move to the last row before the bottom margin It return TRUE on success,

* FALSE otherwise.

* Notice: the bottom is calculated using as row hight the current font

* @parameter integer $nRow New current line number

* @access public

* @return boolean

*/

function MvBottom()

{

$this->PaperDimY-$this->MarginBottom-300-$this->FontH;

return(TRUE);

}



/**

* Internal function used to calculate the movement.

* @parameter integer $nUnit Numebr of 'unit' may be less or greater then zero

* @parameter string $unit measurement used to set the movement

* @access public

* @return boolean

*/

function _CalculatePos($nUnit,$unit)

{

if(!in_array($unit,$this->ValidMeasure))

trigger_error('Unit of measure '.$unit.' not supported',E_USER_ERROR);

switch($unit)

{

case 'row':

$move=$this->FontH*$nUnit;

break;

case 'inch':

$move=$nUnit*1440;

break;

case 'mm':

$move=$nUnit*56.7;

break;

case 'twip':

$move=$nUnit;

break;

}

return($move);

}



/**

* Retrieve the page size

*

* @return array (width,length)

* @access public

*/

function GetPageSize()

{

return(array($this->PaperDimX,$this->PaperDimY));

}



} // end class APrint



?>

Anon7 - 2022
AnonSec Team