193 lines
4.0 KiB
PHP
193 lines
4.0 KiB
PHP
<?php
|
|
/**
|
|
* EasyPack Manifest PDF
|
|
*
|
|
* @author WPDesk
|
|
* @category Admin
|
|
* @package EasyPack/Admin
|
|
* @version 2.1.0
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // Exit if accessed directly
|
|
}
|
|
|
|
if ( ! class_exists( 'EasyPack_Manifest_PDF' ) ) :
|
|
|
|
/**
|
|
* EasyPack_Manifest_PDF
|
|
*/
|
|
class EasyPack_Manifest_PDF extends PDF_Code128 {
|
|
|
|
function Footer() {
|
|
$this->SetY( -10 );
|
|
$this->SetFont( 'Arial', '', 8 );
|
|
$this->Cell( 0, 10, __( 'Page ', EasyPack::$text_domain ) . $this->PageNo() . ' / {nb}', 0, 0, 'R' );
|
|
$this->SetY( -10 );
|
|
}
|
|
|
|
/**
|
|
* Draws text within a box defined by width = w, height = h, and aligns
|
|
* the text vertically within the box ($valign = M/B/T for middle, bottom, or top)
|
|
* Also, aligns the text horizontally ($align = L/C/R/J for left, centered, right or justified)
|
|
* drawTextBox uses drawRows
|
|
*
|
|
* This function is provided by TUFaT.com
|
|
*/
|
|
function drawTextBox($strText, $w, $h, $align='L', $valign='T', $border=true)
|
|
{
|
|
$xi=$this->GetX();
|
|
$yi=$this->GetY();
|
|
|
|
$hrow=$this->FontSize;
|
|
$textrows=$this->drawRows($w,$hrow,$strText,0,$align,0,0,0);
|
|
$maxrows=floor($h/$this->FontSize);
|
|
$rows=min($textrows,$maxrows);
|
|
|
|
$dy=0;
|
|
if (strtoupper($valign)=='M')
|
|
$dy=($h-$rows*$this->FontSize)/2;
|
|
if (strtoupper($valign)=='B')
|
|
$dy=$h-$rows*$this->FontSize;
|
|
|
|
$this->SetY($yi+$dy);
|
|
$this->SetX($xi);
|
|
|
|
$this->drawRows($w,$hrow,$strText,0,$align,false,$rows,1);
|
|
|
|
if ($border)
|
|
$this->Rect($xi,$yi,$w,$h);
|
|
}
|
|
|
|
function drawRows($w, $h, $txt, $border=0, $align='J', $fill=false, $maxline=0, $prn=0) {
|
|
$cw=&$this->CurrentFont['cw'];
|
|
if($w==0)
|
|
$w=$this->w-$this->rMargin-$this->x;
|
|
$wmax=($w-2*$this->cMargin)*1000/$this->FontSize;
|
|
$s=str_replace("\r",'',$txt);
|
|
$nb=strlen($s);
|
|
if($nb>0 && $s[$nb-1]=="\n")
|
|
$nb--;
|
|
$b=0;
|
|
if($border)
|
|
{
|
|
if($border==1)
|
|
{
|
|
$border='LTRB';
|
|
$b='LRT';
|
|
$b2='LR';
|
|
}
|
|
else
|
|
{
|
|
$b2='';
|
|
if(is_int(strpos($border,'L')))
|
|
$b2.='L';
|
|
if(is_int(strpos($border,'R')))
|
|
$b2.='R';
|
|
$b=is_int(strpos($border,'T')) ? $b2.'T' : $b2;
|
|
}
|
|
}
|
|
$sep=-1;
|
|
$i=0;
|
|
$j=0;
|
|
$l=0;
|
|
$ns=0;
|
|
$nl=1;
|
|
while($i<$nb)
|
|
{
|
|
//Get next character
|
|
$c=$s[$i];
|
|
if($c=="\n")
|
|
{
|
|
//Explicit line break
|
|
if($this->ws>0)
|
|
{
|
|
$this->ws=0;
|
|
if ($prn==1) $this->_out('0 Tw');
|
|
}
|
|
if ($prn==1) {
|
|
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
|
|
}
|
|
$i++;
|
|
$sep=-1;
|
|
$j=$i;
|
|
$l=0;
|
|
$ns=0;
|
|
$nl++;
|
|
if($border && $nl==2)
|
|
$b=$b2;
|
|
if ( $maxline && $nl > $maxline )
|
|
return substr($s,$i);
|
|
continue;
|
|
}
|
|
if($c==' ')
|
|
{
|
|
$sep=$i;
|
|
$ls=$l;
|
|
$ns++;
|
|
}
|
|
$l+=$cw[$c];
|
|
if($l>$wmax)
|
|
{
|
|
//Automatic line break
|
|
if($sep==-1)
|
|
{
|
|
if($i==$j)
|
|
$i++;
|
|
if($this->ws>0)
|
|
{
|
|
$this->ws=0;
|
|
if ($prn==1) $this->_out('0 Tw');
|
|
}
|
|
if ($prn==1) {
|
|
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if($align=='J')
|
|
{
|
|
$this->ws=($ns>1) ? ($wmax-$ls)/1000*$this->FontSize/($ns-1) : 0;
|
|
if ($prn==1) $this->_out(sprintf('%.3F Tw',$this->ws*$this->k));
|
|
}
|
|
if ($prn==1){
|
|
$this->Cell($w,$h,substr($s,$j,$sep-$j),$b,2,$align,$fill);
|
|
}
|
|
$i=$sep+1;
|
|
}
|
|
$sep=-1;
|
|
$j=$i;
|
|
$l=0;
|
|
$ns=0;
|
|
$nl++;
|
|
if($border && $nl==2)
|
|
$b=$b2;
|
|
if ( $maxline && $nl > $maxline )
|
|
return substr($s,$i);
|
|
}
|
|
else
|
|
$i++;
|
|
}
|
|
//Last chunk
|
|
if($this->ws>0)
|
|
{
|
|
$this->ws=0;
|
|
if ($prn==1) $this->_out('0 Tw');
|
|
}
|
|
if($border && is_int(strpos($border,'B')))
|
|
$b.='B';
|
|
if ($prn==1) {
|
|
$this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill);
|
|
}
|
|
$this->x=$this->lMargin;
|
|
return $nl;
|
|
}
|
|
|
|
function iconv( $text ) {
|
|
return iconv( 'utf-8', 'iso-8859-2', $text );
|
|
}
|
|
|
|
}
|
|
|
|
endif;
|