eaiovnaovbqoebvqoeavibavo PKZ҇*KK license.txtnu[Permission is hereby granted, free of charge, to any person obtaining a copy of this software to use, copy, modify, distribute, sublicense, and/or sell copies of the software, and to permit persons to whom the software is furnished to do so. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.PKZEP`$`$ changelog.htmnu[ Changelog

Changelog

v1.82 (2019-12-07)
- Removed a deprecation notice under PHP 7.4.
v1.81 (2015-12-20)
- Added GetPageWidth() and GetPageHeight().
- Fixed a bug in SetXY().
v1.8 (2015-11-29)
- PHP 5.1.0 or higher is now required.
- The MakeFont utility now subsets fonts, which can greatly reduce font sizes.
- Added ToUnicode CMaps to improve text extraction.
- Added a parameter to AddPage() to rotate the page.
- Added a parameter to SetY() to indicate whether the x position should be reset or not.
- Added a parameter to Output() to specify the encoding of the name, and special characters are now properly encoded. Additionally the order of the first two parameters was reversed to be more logical (however the old order is still supported for compatibility).
- The Error() method now throws an exception.
- Adding contents before the first AddPage() or after Close() now raises an error.
- Outputting text with no font selected now raises an error.
v1.7 (2011-06-18)
- The MakeFont utility has been completely rewritten and doesn't depend on ttf2pt1 anymore.
- Alpha channel is now supported for PNGs.
- When inserting an image, it's now possible to specify its resolution.
- Default resolution for images was increased from 72 to 96 dpi.
- When inserting a GIF image, no temporary file is used anymore if the PHP version is 5.1 or higher.
- When output buffering is enabled and the PDF is about to be sent, the buffer is now cleared if it contains only a UTF-8 BOM and/or whitespace (instead of throwing an error).
- Symbol and ZapfDingbats fonts now support underline style.
- Custom page sizes are now checked to ensure that width is smaller than height.
- Standard font files were changed to use the same format as user fonts.
- A bug in the embedding of Type1 fonts was fixed.
- A bug related to SetDisplayMode() and the current locale was fixed.
- A display issue occurring with the Adobe Reader X plug-in was fixed.
- An issue related to transparency with some versions of Adobe Reader was fixed.
- The Content-Length header was removed because it caused an issue when the HTTP server applies compression.
v1.6 (2008-08-03)
- PHP 4.3.10 or higher is now required.
- GIF image support.
- Images can now trigger page breaks.
- Possibility to have different page formats in a single document.
- Document properties (author, creator, keywords, subject and title) can now be specified in UTF-8.
- Fixed a bug: when a PNG was inserted through a URL, an error sometimes occurred.
- An automatic page break in Header() doesn't cause an infinite loop any more.
- Removed some warning messages appearing with recent PHP versions.
- Added HTTP headers to reduce problems with IE.
v1.53 (2004-12-31)
- When the font subdirectory is in the same directory as fpdf.php, it's no longer necessary to define the FPDF_FONTPATH constant.
- The array $HTTP_SERVER_VARS is no longer used. It could cause trouble on PHP5-based configurations with the register_long_arrays option disabled.
- Fixed a problem related to Type1 font embedding which caused trouble to some PDF processors.
- The file name sent to the browser could not contain a space character.
- The Cell() method could not print the number 0 (you had to pass the string '0').
v1.52 (2003-12-30)
- Image() now displays the image at 72 dpi if no dimension is given.
- Output() takes a string as second parameter to indicate destination.
- Open() is now called automatically by AddPage().
- Inserting remote JPEG images doesn't generate an error any longer.
- Decimal separator is forced to dot in the constructor.
- Added several encodings (Turkish, Thai, Hebrew, Ukrainian and Vietnamese).
- The last line of a right-aligned MultiCell() was not correctly aligned if it was terminated by a carriage return.
- No more error message about already sent headers when outputting the PDF to the standard output from the command line.
- The underlining was going too far for text containing characters \, ( or ).
- $HTTP_ENV_VARS has been replaced by $HTTP_SERVER_VARS.
v1.51 (2002-08-03)
- Type1 font support.
- Added Baltic encoding.
- The class now works internally in points with the origin at the bottom in order to avoid two bugs occurring with Acrobat 5:
  * The line thickness was too large when printed under Windows 98 SE and ME.
  * TrueType fonts didn't appear immediately inside the plug-in (a substitution font was used), one had to cause a window refresh to make them show up.
- It's no longer necessary to set the decimal separator as dot to produce valid documents.
- The clickable area in a cell was always on the left independently from the text alignment.
- JPEG images in CMYK mode appeared in inverted colors.
- Transparent PNG images in grayscale or true color mode were incorrectly handled.
- Adding new fonts now works correctly even with the magic_quotes_runtime option set to on.
v1.5 (2002-05-28)
- TrueType font (AddFont()) and encoding support (Western and Eastern Europe, Cyrillic and Greek).
- Added Write() method.
- Added underlined style.
- Internal and external link support (AddLink(), SetLink(), Link()).
- Added right margin management and methods SetRightMargin(), SetTopMargin().
- Modification of SetDisplayMode() to select page layout.
- The border parameter of MultiCell() now lets choose borders to draw as Cell().
- When a document contains no page, Close() now calls AddPage() instead of causing a fatal error.
v1.41 (2002-03-13)
- Fixed SetDisplayMode() which no longer worked (the PDF viewer used its default display).
v1.4 (2002-03-02)
- PHP3 is no longer supported.
- Page compression (SetCompression()).
- Choice of page format and possibility to change orientation inside document.
- Added AcceptPageBreak() method.
- Ability to print the total number of pages (AliasNbPages()).
- Choice of cell borders to draw.
- New mode for Cell(): the current position can now move under the cell.
- Ability to include an image by specifying height only (width is calculated automatically).
- Fixed a bug: when a justified line triggered a page break, the footer inherited the corresponding word spacing.
v1.31 (2002-01-12)
- Fixed a bug in drawing frame with MultiCell(): the last line always started from the left margin.
- Removed Expires HTTP header (gives trouble in some situations).
- Added Content-disposition HTTP header (seems to help in some situations).
v1.3 (2001-12-03)
- Line break and text justification support (MultiCell()).
- Color support (SetDrawColor(), SetFillColor(), SetTextColor()). Possibility to draw filled rectangles and paint cell background.
- A cell whose width is declared null extends up to the right margin of the page.
- Line width is now retained from page to page and defaults to 0.2 mm.
- Added SetXY() method.
- Fixed a passing by reference done in a deprecated manner for PHP4.
v1.2 (2001-11-11)
- Added font metric files and GetStringWidth() method.
- Centering and right-aligning text in cells.
- Display mode control (SetDisplayMode()).
- Added methods to set document properties (SetAuthor(), SetCreator(), SetKeywords(), SetSubject(), SetTitle()).
- Possibility to force PDF download by browser.
- Added SetX() and GetX() methods.
- During automatic page break, current abscissa is now retained.
v1.11 (2001-10-20)
- PNG support doesn't require PHP4/zlib any more. Data are now put directly into PDF without any decompression/recompression stage.
- Image insertion now works correctly even with magic_quotes_runtime option set to on.
v1.1 (2001-10-07)
- JPEG and PNG image support.
v1.01 (2001-10-03)
- Fixed a bug involving page break: in case when Header() doesn't specify a font, the one from previous page was not restored and produced an incorrect document.
v1.0 (2001-09-17)
- First version.
PKZaJ|GTGTcuadros_imprimir2.phpnu[AddExtGState(array('ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if(!empty($this->extgstates) && $this->PDFVersion<'1.4') $this->PDFVersion='1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach($this->extgstates as $k=>$extgstate) $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction='R') { if ($direction=='R') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',1,0,0,1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='L') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',-1,0,0,-1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='U') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,1,-1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='D') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,-1,1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); else $s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0) { $font_angle+=90+$txt_angle; $txt_angle*=M_PI/180; $font_angle*=M_PI/180; $txt_dx=cos($txt_angle); $txt_dy=sin($txt_angle); $font_dx=cos($font_angle); $font_dy=sin($font_angle); $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',$txt_dx,$txt_dy,$font_dx,$font_dy,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } //**************************************************************************** */ // Tabla coloreada function GenerarCuadro($id_grado, $bimestre, $id_curso, $nombre_curso, $nombreDocente) { //FONDO $this->Image('assets/img/logo_ceg_redondo2.png','185','10','17','17','PNG'); //datos encabezado $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(20,10); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20,15); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("Registro de Resultados de Evaluación Bimestral")); $this->setXY(20,20); $this->SetFont('Arial','B',9);$this->Cell(40,10,"del Rendimiento Escolar - Ciclo Escolar 2025"); $this->setXY(160,25); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Bimestre: ".$bimestre); $this->setXY(160,31); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Maestro: ". utf8_decode($nombreDocente)); $this->setXY(160,37); date_default_timezone_set('America/Guatemala'); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Hora: ". date('d-m-Y h:i:s a', time())); $this->setXY(30,55); //datos $consultas=new Imprimir2(); $Grado=$consultas->BuscarNG($id_grado); foreach($Grado as $grados){ $this->SetFont('Arial','B',12);$this->Cell(40,10,$grados['nombre_corto']); } $this->setXY(20,75); $this->Cell(55,15,'',1,0,'C',false); $this->setXY(20,78); $this->SetFont('Arial','B',6); $this->Cell(40,10,utf8_decode($nombre_curso)); //Empieza la cabecera //Buscamos las actiidades $Actividades=$consultas->buscarActividades($id_curso, $bimestre); if($Actividades){ $cantAct=sizeof($Actividades); }else{ $cantAct=0; } $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial','I',6); $this->setXY(78,45); $espaciosEnc=0; if($Actividades){ foreach($Actividades as $fActividades){ $textoA=$this->TextWithDirection(82+$espaciosEnc,88,utf8_decode($fActividades['nombre']).'('.$fActividades['valor'].' pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $espaciosEnc=$espaciosEnc+6; } } $textoA=$this->TextWithDirection(82+$espaciosEnc,88,'Responsabilidad (5 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(88+$espaciosEnc,88,utf8_decode('Desempeño en clase (5 pts)'),'U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(94+$espaciosEnc,88,'Total zona y afectivo (70 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(100+$espaciosEnc,88,'Primer Parcial (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(106+$espaciosEnc,88,'Segundo Parcial (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(112+$espaciosEnc,88,'Mejoramiento (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(118+$espaciosEnc,88,utf8_decode('Total exámenes (30 pts)'),'U'); $this->Cell(6,45,$textoA,1,0,'C',false); $this->SetFont('Arial','',7); $this->setXY(78,90); $this->Cell($espaciosEnc,5,'Procedimental',1,0,'C',true); $this->Cell(12,5,'Afectivo',1,0,'C',true); $this->Cell(6,10,'',1,0,'C',true); $this->Cell(24,5,'Cognositivo',1,0,'C',true); $this->SetFont('Arial','',7); $this->setXY(17,95); $this->Cell(5,5,'No',1,0,'C',true); $this->Cell(8,5,'Carnet',1,0,'C',true); $this->Cell(48,5,'Apellidos y nombres del alumno',1,0,'C',true); for($i=0; $i<$cantAct; $i++){ $this->Cell(6,5,$i+1,1,0,'C',true); } $this->Cell(6,5,'1',1,0,'C',true); $this->Cell(6,5,'2',1,0,'C',true); $this->Cell(6,5,'T',1,0,'C',true); $this->Cell(6,5,'1',1,0,'C',true); $this->Cell(6,5,'2',1,0,'C',true); $this->Cell(6,5,'3',1,0,'C',true); $this->Cell(6,5,'T',1,0,'C',true); $this->Cell(6,5,'F',1,0,'C',true); $this->Ln(); //Buscar los datos $datosNotas=$consultas->buscarRegistroNotas($id_curso, $bimestre); if($datosNotas){ $contadorRojo=0; $contadorAmarillo=0; $contadorVerde=0; $notaMayor=0; $notaMenor=100; $totalAlumnos=0; $promedio=0; $totalNotaTodos=0; $contador=1; $carnetValidar=""; $auxGeneral=0; $contadorSalto=0; $totalZona=0; $posicionY=95.5; $punteoAux=0; foreach($datosNotas as $fila){ if($carnetValidar!=$fila['carnet']){ $totalZona=0; $this->SetFont('Arial','I',6); $this->setX(17); $this->Cell(5,5,$contador,1,0,'C',false); $this->Cell(8,5,$fila['carnet'],1,0,'C',false); $this->SetFont('Arial','I',7); $this->Cell(48,5,utf8_decode($fila['apellidos'].', '.$fila['nombres']),1,0,'L',false); if($fila['punteo']=="" || $fila['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila['punteo']); $contador++; $contadorSalto++; if($contadorSalto==($cantAct+6)){ $this->Ln(); $contadorSalto=0; } }else{ if($fila['punteo']=="" || $fila['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila['punteo']); $contadorSalto++; if(isset($datosNotas[$auxGeneral+1])){ if($datosNotas[$auxGeneral]['carnet']!=$datosNotas[$auxGeneral+1]['carnet']){ $notaSecundaria=$consultas->buscarNS($fila['carnet'], $id_curso, $bimestre); if($notaSecundaria){ $contadorTotal=0; $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; $notaFinal=0; foreach($notaSecundaria as $fila2){ if($contadorTotal==2){ $this->Cell(6,5,$totalZona,1,0,'C',true); } if($contadorTotal==2){ $primerP=intval($fila2['punteo']); } if($contadorTotal==3){ $segundoP=intval($fila2['punteo']); } if($contadorTotal==4){ $mejoramiento=intval($fila2['punteo']); } if($contadorTotal==5){ if($primerP>$segundoP){ if($segundoP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$mejoramiento; }else{ $totalEval=$primerP+$mejoramiento; } } }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($segundoP>$mejoramiento){ $totalEval=$segundoP+$mejoramiento; }else{ $totalEval=$segundoP+$mejoramiento; } } } $this->Cell(6,5,$totalEval,1,0,'C',true); $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; } if($fila2['punteo']=="" || $fila2['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila2['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila2['punteo']); $contadorSalto++; $contadorTotal++; $notaFinal=$fila2['punteo']; } $posicionX=128+$espaciosEnc; $posicionY+=5; if ($notaFinal<60){ $this->Image('assets/img/incorrecto.png',$posicionX,$posicionY,'4','4','PNG'); $contadorRojo++; }elseif($notaFinal<70){ $this->Image('assets/img/advertencia.png',$posicionX,$posicionY,'4','4','PNG'); $contadorAmarillo++; }else{ $this->Image('assets/img/check.png',$posicionX,$posicionY,'4','4','PNG'); $contadorVerde++; } if($notaFinal>$notaMayor){ $notaMayor=$notaFinal; } if($notaFinal<$notaMenor){ $notaMenor=$notaFinal; } $totalAlumnos++; $totalNotaTodos+=$notaFinal; $this->Ln(); } } }else{ $notaSecundaria=$consultas->buscarNS($fila['carnet'], $id_curso, $bimestre); if($notaSecundaria){ $contadorTotal=0; $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; $notaFinal=0; foreach($notaSecundaria as $fila2){ if($contadorTotal==2){ $this->Cell(6,5,$totalZona,1,0,'C',true); } if($contadorTotal==2){ $primerP=intval($fila2['punteo']); } if($contadorTotal==3){ $segundoP=intval($fila2['punteo']); } if($contadorTotal==4){ $mejoramiento=intval($fila2['punteo']); } if($contadorTotal==5){ if($primerP>$segundoP){ if($segundoP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$mejoramiento; }else{ $totalEval=$primerP+$mejoramiento; } } }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($segundoP>$mejoramiento){ $totalEval=$segundoP+$mejoramiento; }else{ $totalEval=$segundoP+$mejoramiento; } } } $this->Cell(6,5,$totalEval,1,0,'C',true); $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; } if($fila2['punteo']=="" || $fila2['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila2['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila2['punteo']); $contadorSalto++; $contadorTotal++; $notaFinal=$fila2['punteo']; } $posicionX=128+$espaciosEnc; $posicionY+=5; if ($notaFinal<60){ $this->Image('assets/img/incorrecto.png',$posicionX,$posicionY,'4','4','PNG'); $contadorRojo++; }elseif($notaFinal<70){ $this->Image('assets/img/advertencia.png',$posicionX,$posicionY,'4','4','PNG'); $contadorAmarillo++; }else{ $this->Image('assets/img/check.png',$posicionX,$posicionY,'4','4','PNG'); $contadorVerde++; } if($notaFinal>$notaMayor){ $notaMayor=$notaFinal; } if($notaFinal<$notaMenor){ $notaMenor=$notaFinal; } $totalAlumnos++; $totalNotaTodos+=$notaFinal; $this->Ln(); } } } $carnetValidar=$fila['carnet']; $auxGeneral++; } $this->setXY(20,295); $this->Cell(40,3,"Total Alumnos evaluados: ".$totalAlumnos,1,0,'C',false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "Criterio",1,0,"L",true); $this->Cell(15,3, "No.",1,0,"L",true); $this->Cell(15,3, "%.",1,0,"L",true);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 0 a 59",1,0,"L",false); $this->Cell(15,3, $contadorRojo,1,0,"L",false); $this->Cell(15,3, round(($contadorRojo*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 60 a 69",1,0,"L",false); $this->Cell(15,3, $contadorAmarillo,1,0,"L",false); $this->Cell(15,3, round(($contadorAmarillo*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 70 a 100",1,0,"L",false); $this->Cell(15,3, $contadorVerde,1,0,"L",false); $this->Cell(15,3, round(($contadorVerde*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, utf8_decode("Nota Máxima"),1,0,"L",false); $this->Cell(15,3, $notaMayor,1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, utf8_decode("Nota Mínima"),1,0,"L",false); $this->Cell(15,3, $notaMenor,1,0,"L",false);$this->Ln(); $this->setX(20); //calcular el promedio $promedio=round($totalNotaTodos/$totalAlumnos,0); $this->Cell(40,3, "Nota Promedio",1,0,"L",false); $this->Cell(15,3, $promedio,1,0,"L",false); } } } ?>PKZ;y*y*makefont/makefont.phpnu[$severity: "; echo "$txt
"; } } function Notice($txt) { Message($txt, 'Notice'); } function Warning($txt) { Message($txt, 'Warning'); } function Error($txt) { Message($txt, 'Error'); exit; } function LoadMap($enc) { $file = dirname(__FILE__).'/'.strtolower($enc).'.map'; $a = file($file); if(empty($a)) Error('Encoding not found: '.$enc); $map = array_fill(0, 256, array('uv'=>-1, 'name'=>'.notdef')); foreach($a as $line) { $e = explode(' ', rtrim($line)); $c = hexdec(substr($e[0],1)); $uv = hexdec(substr($e[1],2)); $name = $e[2]; $map[$c] = array('uv'=>$uv, 'name'=>$name); } return $map; } function GetInfoFromTrueType($file, $embed, $subset, $map) { // Return information from a TrueType font try { $ttf = new TTFParser($file); $ttf->Parse(); } catch(Exception $e) { Error($e->getMessage()); } if($embed) { if(!$ttf->embeddable) Error('Font license does not allow embedding'); if($subset) { $chars = array(); foreach($map as $v) { if($v['name']!='.notdef') $chars[] = $v['uv']; } $ttf->Subset($chars); $info['Data'] = $ttf->Build(); } else $info['Data'] = file_get_contents($file); $info['OriginalSize'] = strlen($info['Data']); } $k = 1000/$ttf->unitsPerEm; $info['FontName'] = $ttf->postScriptName; $info['Bold'] = $ttf->bold; $info['ItalicAngle'] = $ttf->italicAngle; $info['IsFixedPitch'] = $ttf->isFixedPitch; $info['Ascender'] = round($k*$ttf->typoAscender); $info['Descender'] = round($k*$ttf->typoDescender); $info['UnderlineThickness'] = round($k*$ttf->underlineThickness); $info['UnderlinePosition'] = round($k*$ttf->underlinePosition); $info['FontBBox'] = array(round($k*$ttf->xMin), round($k*$ttf->yMin), round($k*$ttf->xMax), round($k*$ttf->yMax)); $info['CapHeight'] = round($k*$ttf->capHeight); $info['MissingWidth'] = round($k*$ttf->glyphs[0]['w']); $widths = array_fill(0, 256, $info['MissingWidth']); foreach($map as $c=>$v) { if($v['name']!='.notdef') { if(isset($ttf->chars[$v['uv']])) { $id = $ttf->chars[$v['uv']]; $w = $ttf->glyphs[$id]['w']; $widths[$c] = round($k*$w); } else Warning('Character '.$v['name'].' is missing'); } } $info['Widths'] = $widths; return $info; } function GetInfoFromType1($file, $embed, $map) { // Return information from a Type1 font if($embed) { $f = fopen($file, 'rb'); if(!$f) Error('Can\'t open font file'); // Read first segment $a = unpack('Cmarker/Ctype/Vsize', fread($f,6)); if($a['marker']!=128) Error('Font file is not a valid binary Type1'); $size1 = $a['size']; $data = fread($f, $size1); // Read second segment $a = unpack('Cmarker/Ctype/Vsize', fread($f,6)); if($a['marker']!=128) Error('Font file is not a valid binary Type1'); $size2 = $a['size']; $data .= fread($f, $size2); fclose($f); $info['Data'] = $data; $info['Size1'] = $size1; $info['Size2'] = $size2; } $afm = substr($file, 0, -3).'afm'; if(!file_exists($afm)) Error('AFM font file not found: '.$afm); $a = file($afm); if(empty($a)) Error('AFM file empty or not readable'); foreach($a as $line) { $e = explode(' ', rtrim($line)); if(count($e)<2) continue; $entry = $e[0]; if($entry=='C') { $w = $e[4]; $name = $e[7]; $cw[$name] = $w; } elseif($entry=='FontName') $info['FontName'] = $e[1]; elseif($entry=='Weight') $info['Weight'] = $e[1]; elseif($entry=='ItalicAngle') $info['ItalicAngle'] = (int)$e[1]; elseif($entry=='Ascender') $info['Ascender'] = (int)$e[1]; elseif($entry=='Descender') $info['Descender'] = (int)$e[1]; elseif($entry=='UnderlineThickness') $info['UnderlineThickness'] = (int)$e[1]; elseif($entry=='UnderlinePosition') $info['UnderlinePosition'] = (int)$e[1]; elseif($entry=='IsFixedPitch') $info['IsFixedPitch'] = ($e[1]=='true'); elseif($entry=='FontBBox') $info['FontBBox'] = array((int)$e[1], (int)$e[2], (int)$e[3], (int)$e[4]); elseif($entry=='CapHeight') $info['CapHeight'] = (int)$e[1]; elseif($entry=='StdVW') $info['StdVW'] = (int)$e[1]; } if(!isset($info['FontName'])) Error('FontName missing in AFM file'); if(!isset($info['Ascender'])) $info['Ascender'] = $info['FontBBox'][3]; if(!isset($info['Descender'])) $info['Descender'] = $info['FontBBox'][1]; $info['Bold'] = isset($info['Weight']) && preg_match('/bold|black/i', $info['Weight']); if(isset($cw['.notdef'])) $info['MissingWidth'] = $cw['.notdef']; else $info['MissingWidth'] = 0; $widths = array_fill(0, 256, $info['MissingWidth']); foreach($map as $c=>$v) { if($v['name']!='.notdef') { if(isset($cw[$v['name']])) $widths[$c] = $cw[$v['name']]; else Warning('Character '.$v['name'].' is missing'); } } $info['Widths'] = $widths; return $info; } function MakeFontDescriptor($info) { // Ascent $fd = "array('Ascent'=>".$info['Ascender']; // Descent $fd .= ",'Descent'=>".$info['Descender']; // CapHeight if(!empty($info['CapHeight'])) $fd .= ",'CapHeight'=>".$info['CapHeight']; else $fd .= ",'CapHeight'=>".$info['Ascender']; // Flags $flags = 0; if($info['IsFixedPitch']) $flags += 1<<0; $flags += 1<<5; if($info['ItalicAngle']!=0) $flags += 1<<6; $fd .= ",'Flags'=>".$flags; // FontBBox $fbb = $info['FontBBox']; $fd .= ",'FontBBox'=>'[".$fbb[0].' '.$fbb[1].' '.$fbb[2].' '.$fbb[3]."]'"; // ItalicAngle $fd .= ",'ItalicAngle'=>".$info['ItalicAngle']; // StemV if(isset($info['StdVW'])) $stemv = $info['StdVW']; elseif($info['Bold']) $stemv = 120; else $stemv = 70; $fd .= ",'StemV'=>".$stemv; // MissingWidth $fd .= ",'MissingWidth'=>".$info['MissingWidth'].')'; return $fd; } function MakeWidthArray($widths) { $s = "array(\n\t"; for($c=0;$c<=255;$c++) { if(chr($c)=="'") $s .= "'\\''"; elseif(chr($c)=="\\") $s .= "'\\\\'"; elseif($c>=32 && $c<=126) $s .= "'".chr($c)."'"; else $s .= "chr($c)"; $s .= '=>'.$widths[$c]; if($c<255) $s .= ','; if(($c+1)%22==0) $s .= "\n\t"; } $s .= ')'; return $s; } function MakeFontEncoding($map) { // Build differences from reference encoding $ref = LoadMap('cp1252'); $s = ''; $last = 0; for($c=32;$c<=255;$c++) { if($map[$c]['name']!=$ref[$c]['name']) { if($c!=$last+1) $s .= $c.' '; $last = $c; $s .= '/'.$map[$c]['name'].' '; } } return rtrim($s); } function MakeUnicodeArray($map) { // Build mapping to Unicode values $ranges = array(); foreach($map as $c=>$v) { $uv = $v['uv']; if($uv!=-1) { if(isset($range)) { if($c==$range[1]+1 && $uv==$range[3]+1) { $range[1]++; $range[3]++; } else { $ranges[] = $range; $range = array($c, $c, $uv, $uv); } } else $range = array($c, $c, $uv, $uv); } } $ranges[] = $range; foreach($ranges as $range) { if(isset($s)) $s .= ','; else $s = 'array('; $s .= $range[0].'=>'; $nb = $range[1]-$range[0]+1; if($nb>1) $s .= 'array('.$range[2].','.$nb.')'; else $s .= $range[2]; } $s .= ')'; return $s; } function SaveToFile($file, $s, $mode) { $f = fopen($file, 'w'.$mode); if(!$f) Error('Can\'t write to file '.$file); fwrite($f, $s); fclose($f); } function MakeDefinitionFile($file, $type, $enc, $embed, $subset, $map, $info) { $s = "\n"; SaveToFile($file, $s, 't'); } function MakeFont($fontfile, $enc='cp1252', $embed=true, $subset=true) { // Generate a font definition file if(!file_exists($fontfile)) Error('Font file not found: '.$fontfile); $ext = strtolower(substr($fontfile,-3)); if($ext=='ttf' || $ext=='otf') $type = 'TrueType'; elseif($ext=='pfb') $type = 'Type1'; else Error('Unrecognized font file extension: '.$ext); $map = LoadMap($enc); if($type=='TrueType') $info = GetInfoFromTrueType($fontfile, $embed, $subset, $map); else $info = GetInfoFromType1($fontfile, $embed, $map); $basename = substr(basename($fontfile), 0, -4); if($embed) { if(function_exists('gzcompress')) { $file = $basename.'.z'; SaveToFile($file, gzcompress($info['Data']), 'b'); $info['File'] = $file; Message('Font file compressed: '.$file); } else { $info['File'] = basename($fontfile); $subset = false; Notice('Font file could not be compressed (zlib extension not available)'); } } MakeDefinitionFile($basename.'.php', $type, $enc, $embed, $subset, $map, $info); Message('Font definition file generated: '.$basename.'.php'); } if(PHP_SAPI=='cli') { // Command-line interface ini_set('log_errors', '0'); if($argc==1) die("Usage: php makefont.php fontfile [encoding] [embed] [subset]\n"); $fontfile = $argv[1]; if($argc>=3) $enc = $argv[2]; else $enc = 'cp1252'; if($argc>=4) $embed = ($argv[3]=='true' || $argv[3]=='1'); else $embed = true; if($argc>=5) $subset = ($argv[4]=='true' || $argv[4]=='1'); else $subset = true; MakeFont($fontfile, $enc, $embed, $subset); } ?> PKZOUmakefont/iso-8859-16.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0080 .notdef !81 U+0081 .notdef !82 U+0082 .notdef !83 U+0083 .notdef !84 U+0084 .notdef !85 U+0085 .notdef !86 U+0086 .notdef !87 U+0087 .notdef !88 U+0088 .notdef !89 U+0089 .notdef !8A U+008A .notdef !8B U+008B .notdef !8C U+008C .notdef !8D U+008D .notdef !8E U+008E .notdef !8F U+008F .notdef !90 U+0090 .notdef !91 U+0091 .notdef !92 U+0092 .notdef !93 U+0093 .notdef !94 U+0094 .notdef !95 U+0095 .notdef !96 U+0096 .notdef !97 U+0097 .notdef !98 U+0098 .notdef !99 U+0099 .notdef !9A U+009A .notdef !9B U+009B .notdef !9C U+009C .notdef !9D U+009D .notdef !9E U+009E .notdef !9F U+009F .notdef !A0 U+00A0 space !A1 U+0104 Aogonek !A2 U+0105 aogonek !A3 U+0141 Lslash !A4 U+20AC Euro !A5 U+201E quotedblbase !A6 U+0160 Scaron !A7 U+00A7 section !A8 U+0161 scaron !A9 U+00A9 copyright !AA U+0218 Scommaaccent !AB U+00AB guillemotleft !AC U+0179 Zacute !AD U+00AD hyphen !AE U+017A zacute !AF U+017B Zdotaccent !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+010C Ccaron !B3 U+0142 lslash !B4 U+017D Zcaron !B5 U+201D quotedblright !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+017E zcaron !B9 U+010D ccaron !BA U+0219 scommaaccent !BB U+00BB guillemotright !BC U+0152 OE !BD U+0153 oe !BE U+0178 Ydieresis !BF U+017C zdotaccent !C0 U+00C0 Agrave !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+0102 Abreve !C4 U+00C4 Adieresis !C5 U+0106 Cacute !C6 U+00C6 AE !C7 U+00C7 Ccedilla !C8 U+00C8 Egrave !C9 U+00C9 Eacute !CA U+00CA Ecircumflex !CB U+00CB Edieresis !CC U+00CC Igrave !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+00CF Idieresis !D0 U+0110 Dcroat !D1 U+0143 Nacute !D2 U+00D2 Ograve !D3 U+00D3 Oacute !D4 U+00D4 Ocircumflex !D5 U+0150 Ohungarumlaut !D6 U+00D6 Odieresis !D7 U+015A Sacute !D8 U+0170 Uhungarumlaut !D9 U+00D9 Ugrave !DA U+00DA Uacute !DB U+00DB Ucircumflex !DC U+00DC Udieresis !DD U+0118 Eogonek !DE U+021A Tcommaaccent !DF U+00DF germandbls !E0 U+00E0 agrave !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+0103 abreve !E4 U+00E4 adieresis !E5 U+0107 cacute !E6 U+00E6 ae !E7 U+00E7 ccedilla !E8 U+00E8 egrave !E9 U+00E9 eacute !EA U+00EA ecircumflex !EB U+00EB edieresis !EC U+00EC igrave !ED U+00ED iacute !EE U+00EE icircumflex !EF U+00EF idieresis !F0 U+0111 dcroat !F1 U+0144 nacute !F2 U+00F2 ograve !F3 U+00F3 oacute !F4 U+00F4 ocircumflex !F5 U+0151 ohungarumlaut !F6 U+00F6 odieresis !F7 U+015B sacute !F8 U+0171 uhungarumlaut !F9 U+00F9 ugrave !FA U+00FA uacute !FB U+00FB ucircumflex !FC U+00FC udieresis !FD U+0119 eogonek !FE U+021B tcommaaccent !FF U+00FF ydieresis PKZiUoomakefont/iso-8859-5.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0080 .notdef !81 U+0081 .notdef !82 U+0082 .notdef !83 U+0083 .notdef !84 U+0084 .notdef !85 U+0085 .notdef !86 U+0086 .notdef !87 U+0087 .notdef !88 U+0088 .notdef !89 U+0089 .notdef !8A U+008A .notdef !8B U+008B .notdef !8C U+008C .notdef !8D U+008D .notdef !8E U+008E .notdef !8F U+008F .notdef !90 U+0090 .notdef !91 U+0091 .notdef !92 U+0092 .notdef !93 U+0093 .notdef !94 U+0094 .notdef !95 U+0095 .notdef !96 U+0096 .notdef !97 U+0097 .notdef !98 U+0098 .notdef !99 U+0099 .notdef !9A U+009A .notdef !9B U+009B .notdef !9C U+009C .notdef !9D U+009D .notdef !9E U+009E .notdef !9F U+009F .notdef !A0 U+00A0 space !A1 U+0401 afii10023 !A2 U+0402 afii10051 !A3 U+0403 afii10052 !A4 U+0404 afii10053 !A5 U+0405 afii10054 !A6 U+0406 afii10055 !A7 U+0407 afii10056 !A8 U+0408 afii10057 !A9 U+0409 afii10058 !AA U+040A afii10059 !AB U+040B afii10060 !AC U+040C afii10061 !AD U+00AD hyphen !AE U+040E afii10062 !AF U+040F afii10145 !B0 U+0410 afii10017 !B1 U+0411 afii10018 !B2 U+0412 afii10019 !B3 U+0413 afii10020 !B4 U+0414 afii10021 !B5 U+0415 afii10022 !B6 U+0416 afii10024 !B7 U+0417 afii10025 !B8 U+0418 afii10026 !B9 U+0419 afii10027 !BA U+041A afii10028 !BB U+041B afii10029 !BC U+041C afii10030 !BD U+041D afii10031 !BE U+041E afii10032 !BF U+041F afii10033 !C0 U+0420 afii10034 !C1 U+0421 afii10035 !C2 U+0422 afii10036 !C3 U+0423 afii10037 !C4 U+0424 afii10038 !C5 U+0425 afii10039 !C6 U+0426 afii10040 !C7 U+0427 afii10041 !C8 U+0428 afii10042 !C9 U+0429 afii10043 !CA U+042A afii10044 !CB U+042B afii10045 !CC U+042C afii10046 !CD U+042D afii10047 !CE U+042E afii10048 !CF U+042F afii10049 !D0 U+0430 afii10065 !D1 U+0431 afii10066 !D2 U+0432 afii10067 !D3 U+0433 afii10068 !D4 U+0434 afii10069 !D5 U+0435 afii10070 !D6 U+0436 afii10072 !D7 U+0437 afii10073 !D8 U+0438 afii10074 !D9 U+0439 afii10075 !DA U+043A afii10076 !DB U+043B afii10077 !DC U+043C afii10078 !DD U+043D afii10079 !DE U+043E afii10080 !DF U+043F afii10081 !E0 U+0440 afii10082 !E1 U+0441 afii10083 !E2 U+0442 afii10084 !E3 U+0443 afii10085 !E4 U+0444 afii10086 !E5 U+0445 afii10087 !E6 U+0446 afii10088 !E7 U+0447 afii10089 !E8 U+0448 afii10090 !E9 U+0449 afii10091 !EA U+044A afii10092 !EB U+044B afii10093 !EC U+044C afii10094 !ED U+044D afii10095 !EE U+044E afii10096 !EF U+044F afii10097 !F0 U+2116 afii61352 !F1 U+0451 afii10071 !F2 U+0452 afii10099 !F3 U+0453 afii10100 !F4 U+0454 afii10101 !F5 U+0455 afii10102 !F6 U+0456 afii10103 !F7 U+0457 afii10104 !F8 U+0458 afii10105 !F9 U+0459 afii10106 !FA U+045A afii10107 !FB U+045B afii10108 !FC U+045C afii10109 !FD U+00A7 section !FE U+045E afii10110 !FF U+045F afii10193 PKZcQmakefont/cp1250.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+20AC Euro !82 U+201A quotesinglbase !84 U+201E quotedblbase !85 U+2026 ellipsis !86 U+2020 dagger !87 U+2021 daggerdbl !89 U+2030 perthousand !8A U+0160 Scaron !8B U+2039 guilsinglleft !8C U+015A Sacute !8D U+0164 Tcaron !8E U+017D Zcaron !8F U+0179 Zacute !91 U+2018 quoteleft !92 U+2019 quoteright !93 U+201C quotedblleft !94 U+201D quotedblright !95 U+2022 bullet !96 U+2013 endash !97 U+2014 emdash !99 U+2122 trademark !9A U+0161 scaron !9B U+203A guilsinglright !9C U+015B sacute !9D U+0165 tcaron !9E U+017E zcaron !9F U+017A zacute !A0 U+00A0 space !A1 U+02C7 caron !A2 U+02D8 breve !A3 U+0141 Lslash !A4 U+00A4 currency !A5 U+0104 Aogonek !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+00A9 copyright !AA U+015E Scedilla !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+017B Zdotaccent !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+02DB ogonek !B3 U+0142 lslash !B4 U+00B4 acute !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+00B8 cedilla !B9 U+0105 aogonek !BA U+015F scedilla !BB U+00BB guillemotright !BC U+013D Lcaron !BD U+02DD hungarumlaut !BE U+013E lcaron !BF U+017C zdotaccent !C0 U+0154 Racute !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+0102 Abreve !C4 U+00C4 Adieresis !C5 U+0139 Lacute !C6 U+0106 Cacute !C7 U+00C7 Ccedilla !C8 U+010C Ccaron !C9 U+00C9 Eacute !CA U+0118 Eogonek !CB U+00CB Edieresis !CC U+011A Ecaron !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+010E Dcaron !D0 U+0110 Dcroat !D1 U+0143 Nacute !D2 U+0147 Ncaron !D3 U+00D3 Oacute !D4 U+00D4 Ocircumflex !D5 U+0150 Ohungarumlaut !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+0158 Rcaron !D9 U+016E Uring !DA U+00DA Uacute !DB U+0170 Uhungarumlaut !DC U+00DC Udieresis !DD U+00DD Yacute !DE U+0162 Tcommaaccent !DF U+00DF germandbls !E0 U+0155 racute !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+0103 abreve !E4 U+00E4 adieresis !E5 U+013A lacute !E6 U+0107 cacute !E7 U+00E7 ccedilla !E8 U+010D ccaron !E9 U+00E9 eacute !EA U+0119 eogonek !EB U+00EB edieresis !EC U+011B ecaron !ED U+00ED iacute !EE U+00EE icircumflex !EF U+010F dcaron !F0 U+0111 dcroat !F1 U+0144 nacute !F2 U+0148 ncaron !F3 U+00F3 oacute !F4 U+00F4 ocircumflex !F5 U+0151 ohungarumlaut !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+0159 rcaron !F9 U+016F uring !FA U+00FA uacute !FB U+0171 uhungarumlaut !FC U+00FC udieresis !FD U+00FD yacute !FE U+0163 tcommaaccent !FF U+02D9 dotaccent PKZMFAmakefont/koi8-u.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+2500 SF100000 !81 U+2502 SF110000 !82 U+250C SF010000 !83 U+2510 SF030000 !84 U+2514 SF020000 !85 U+2518 SF040000 !86 U+251C SF080000 !87 U+2524 SF090000 !88 U+252C SF060000 !89 U+2534 SF070000 !8A U+253C SF050000 !8B U+2580 upblock !8C U+2584 dnblock !8D U+2588 block !8E U+258C lfblock !8F U+2590 rtblock !90 U+2591 ltshade !91 U+2592 shade !92 U+2593 dkshade !93 U+2320 integraltp !94 U+25A0 filledbox !95 U+2022 bullet !96 U+221A radical !97 U+2248 approxequal !98 U+2264 lessequal !99 U+2265 greaterequal !9A U+00A0 space !9B U+2321 integralbt !9C U+00B0 degree !9D U+00B2 twosuperior !9E U+00B7 periodcentered !9F U+00F7 divide !A0 U+2550 SF430000 !A1 U+2551 SF240000 !A2 U+2552 SF510000 !A3 U+0451 afii10071 !A4 U+0454 afii10101 !A5 U+2554 SF390000 !A6 U+0456 afii10103 !A7 U+0457 afii10104 !A8 U+2557 SF250000 !A9 U+2558 SF500000 !AA U+2559 SF490000 !AB U+255A SF380000 !AC U+255B SF280000 !AD U+0491 afii10098 !AE U+255D SF260000 !AF U+255E SF360000 !B0 U+255F SF370000 !B1 U+2560 SF420000 !B2 U+2561 SF190000 !B3 U+0401 afii10023 !B4 U+0404 afii10053 !B5 U+2563 SF230000 !B6 U+0406 afii10055 !B7 U+0407 afii10056 !B8 U+2566 SF410000 !B9 U+2567 SF450000 !BA U+2568 SF460000 !BB U+2569 SF400000 !BC U+256A SF540000 !BD U+0490 afii10050 !BE U+256C SF440000 !BF U+00A9 copyright !C0 U+044E afii10096 !C1 U+0430 afii10065 !C2 U+0431 afii10066 !C3 U+0446 afii10088 !C4 U+0434 afii10069 !C5 U+0435 afii10070 !C6 U+0444 afii10086 !C7 U+0433 afii10068 !C8 U+0445 afii10087 !C9 U+0438 afii10074 !CA U+0439 afii10075 !CB U+043A afii10076 !CC U+043B afii10077 !CD U+043C afii10078 !CE U+043D afii10079 !CF U+043E afii10080 !D0 U+043F afii10081 !D1 U+044F afii10097 !D2 U+0440 afii10082 !D3 U+0441 afii10083 !D4 U+0442 afii10084 !D5 U+0443 afii10085 !D6 U+0436 afii10072 !D7 U+0432 afii10067 !D8 U+044C afii10094 !D9 U+044B afii10093 !DA U+0437 afii10073 !DB U+0448 afii10090 !DC U+044D afii10095 !DD U+0449 afii10091 !DE U+0447 afii10089 !DF U+044A afii10092 !E0 U+042E afii10048 !E1 U+0410 afii10017 !E2 U+0411 afii10018 !E3 U+0426 afii10040 !E4 U+0414 afii10021 !E5 U+0415 afii10022 !E6 U+0424 afii10038 !E7 U+0413 afii10020 !E8 U+0425 afii10039 !E9 U+0418 afii10026 !EA U+0419 afii10027 !EB U+041A afii10028 !EC U+041B afii10029 !ED U+041C afii10030 !EE U+041D afii10031 !EF U+041E afii10032 !F0 U+041F afii10033 !F1 U+042F afii10049 !F2 U+0420 afii10034 !F3 U+0421 afii10035 !F4 U+0422 afii10036 !F5 U+0423 afii10037 !F6 U+0416 afii10024 !F7 U+0412 afii10019 !F8 U+042C afii10046 !F9 U+042B afii10045 !FA U+0417 afii10025 !FB U+0428 afii10042 !FC U+042D afii10047 !FD U+0429 afii10043 !FE U+0427 afii10041 !FF U+042A afii10044 PKZRRmakefont/cp1257.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+20AC Euro !82 U+201A quotesinglbase !84 U+201E quotedblbase !85 U+2026 ellipsis !86 U+2020 dagger !87 U+2021 daggerdbl !89 U+2030 perthousand !8B U+2039 guilsinglleft !8D U+00A8 dieresis !8E U+02C7 caron !8F U+00B8 cedilla !91 U+2018 quoteleft !92 U+2019 quoteright !93 U+201C quotedblleft !94 U+201D quotedblright !95 U+2022 bullet !96 U+2013 endash !97 U+2014 emdash !99 U+2122 trademark !9B U+203A guilsinglright !9D U+00AF macron !9E U+02DB ogonek !A0 U+00A0 space !A2 U+00A2 cent !A3 U+00A3 sterling !A4 U+00A4 currency !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00D8 Oslash !A9 U+00A9 copyright !AA U+0156 Rcommaaccent !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+00C6 AE !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+00B4 acute !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+00F8 oslash !B9 U+00B9 onesuperior !BA U+0157 rcommaaccent !BB U+00BB guillemotright !BC U+00BC onequarter !BD U+00BD onehalf !BE U+00BE threequarters !BF U+00E6 ae !C0 U+0104 Aogonek !C1 U+012E Iogonek !C2 U+0100 Amacron !C3 U+0106 Cacute !C4 U+00C4 Adieresis !C5 U+00C5 Aring !C6 U+0118 Eogonek !C7 U+0112 Emacron !C8 U+010C Ccaron !C9 U+00C9 Eacute !CA U+0179 Zacute !CB U+0116 Edotaccent !CC U+0122 Gcommaaccent !CD U+0136 Kcommaaccent !CE U+012A Imacron !CF U+013B Lcommaaccent !D0 U+0160 Scaron !D1 U+0143 Nacute !D2 U+0145 Ncommaaccent !D3 U+00D3 Oacute !D4 U+014C Omacron !D5 U+00D5 Otilde !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+0172 Uogonek !D9 U+0141 Lslash !DA U+015A Sacute !DB U+016A Umacron !DC U+00DC Udieresis !DD U+017B Zdotaccent !DE U+017D Zcaron !DF U+00DF germandbls !E0 U+0105 aogonek !E1 U+012F iogonek !E2 U+0101 amacron !E3 U+0107 cacute !E4 U+00E4 adieresis !E5 U+00E5 aring !E6 U+0119 eogonek !E7 U+0113 emacron !E8 U+010D ccaron !E9 U+00E9 eacute !EA U+017A zacute !EB U+0117 edotaccent !EC U+0123 gcommaaccent !ED U+0137 kcommaaccent !EE U+012B imacron !EF U+013C lcommaaccent !F0 U+0161 scaron !F1 U+0144 nacute !F2 U+0146 ncommaaccent !F3 U+00F3 oacute !F4 U+014D omacron !F5 U+00F5 otilde !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+0173 uogonek !F9 U+0142 lslash !FA U+015B sacute !FB U+016B umacron !FC U+00FC udieresis !FD U+017C zdotaccent !FE U+017E zcaron !FF U+02D9 dotaccent PKZ@emakefont/iso-8859-1.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0080 .notdef !81 U+0081 .notdef !82 U+0082 .notdef !83 U+0083 .notdef !84 U+0084 .notdef !85 U+0085 .notdef !86 U+0086 .notdef !87 U+0087 .notdef !88 U+0088 .notdef !89 U+0089 .notdef !8A U+008A .notdef !8B U+008B .notdef !8C U+008C .notdef !8D U+008D .notdef !8E U+008E .notdef !8F U+008F .notdef !90 U+0090 .notdef !91 U+0091 .notdef !92 U+0092 .notdef !93 U+0093 .notdef !94 U+0094 .notdef !95 U+0095 .notdef !96 U+0096 .notdef !97 U+0097 .notdef !98 U+0098 .notdef !99 U+0099 .notdef !9A U+009A .notdef !9B U+009B .notdef !9C U+009C .notdef !9D U+009D .notdef !9E U+009E .notdef !9F U+009F .notdef !A0 U+00A0 space !A1 U+00A1 exclamdown !A2 U+00A2 cent !A3 U+00A3 sterling !A4 U+00A4 currency !A5 U+00A5 yen !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+00A9 copyright !AA U+00AA ordfeminine !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+00AF macron !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+00B4 acute !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+00B8 cedilla !B9 U+00B9 onesuperior !BA U+00BA ordmasculine !BB U+00BB guillemotright !BC U+00BC onequarter !BD U+00BD onehalf !BE U+00BE threequarters !BF U+00BF questiondown !C0 U+00C0 Agrave !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+00C3 Atilde !C4 U+00C4 Adieresis !C5 U+00C5 Aring !C6 U+00C6 AE !C7 U+00C7 Ccedilla !C8 U+00C8 Egrave !C9 U+00C9 Eacute !CA U+00CA Ecircumflex !CB U+00CB Edieresis !CC U+00CC Igrave !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+00CF Idieresis !D0 U+00D0 Eth !D1 U+00D1 Ntilde !D2 U+00D2 Ograve !D3 U+00D3 Oacute !D4 U+00D4 Ocircumflex !D5 U+00D5 Otilde !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+00D8 Oslash !D9 U+00D9 Ugrave !DA U+00DA Uacute !DB U+00DB Ucircumflex !DC U+00DC Udieresis !DD U+00DD Yacute !DE U+00DE Thorn !DF U+00DF germandbls !E0 U+00E0 agrave !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+00E3 atilde !E4 U+00E4 adieresis !E5 U+00E5 aring !E6 U+00E6 ae !E7 U+00E7 ccedilla !E8 U+00E8 egrave !E9 U+00E9 eacute !EA U+00EA ecircumflex !EB U+00EB edieresis !EC U+00EC igrave !ED U+00ED iacute !EE U+00EE icircumflex !EF U+00EF idieresis !F0 U+00F0 eth !F1 U+00F1 ntilde !F2 U+00F2 ograve !F3 U+00F3 oacute !F4 U+00F4 ocircumflex !F5 U+00F5 otilde !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+00F8 oslash !F9 U+00F9 ugrave !FA U+00FA uacute !FB U+00FB ucircumflex !FC U+00FC udieresis !FD U+00FD yacute !FE U+00FE thorn !FF U+00FF ydieresis PKZayQQmakefont/iso-8859-11.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0080 .notdef !81 U+0081 .notdef !82 U+0082 .notdef !83 U+0083 .notdef !84 U+0084 .notdef !85 U+0085 .notdef !86 U+0086 .notdef !87 U+0087 .notdef !88 U+0088 .notdef !89 U+0089 .notdef !8A U+008A .notdef !8B U+008B .notdef !8C U+008C .notdef !8D U+008D .notdef !8E U+008E .notdef !8F U+008F .notdef !90 U+0090 .notdef !91 U+0091 .notdef !92 U+0092 .notdef !93 U+0093 .notdef !94 U+0094 .notdef !95 U+0095 .notdef !96 U+0096 .notdef !97 U+0097 .notdef !98 U+0098 .notdef !99 U+0099 .notdef !9A U+009A .notdef !9B U+009B .notdef !9C U+009C .notdef !9D U+009D .notdef !9E U+009E .notdef !9F U+009F .notdef !A0 U+00A0 space !A1 U+0E01 kokaithai !A2 U+0E02 khokhaithai !A3 U+0E03 khokhuatthai !A4 U+0E04 khokhwaithai !A5 U+0E05 khokhonthai !A6 U+0E06 khorakhangthai !A7 U+0E07 ngonguthai !A8 U+0E08 chochanthai !A9 U+0E09 chochingthai !AA U+0E0A chochangthai !AB U+0E0B sosothai !AC U+0E0C chochoethai !AD U+0E0D yoyingthai !AE U+0E0E dochadathai !AF U+0E0F topatakthai !B0 U+0E10 thothanthai !B1 U+0E11 thonangmonthothai !B2 U+0E12 thophuthaothai !B3 U+0E13 nonenthai !B4 U+0E14 dodekthai !B5 U+0E15 totaothai !B6 U+0E16 thothungthai !B7 U+0E17 thothahanthai !B8 U+0E18 thothongthai !B9 U+0E19 nonuthai !BA U+0E1A bobaimaithai !BB U+0E1B poplathai !BC U+0E1C phophungthai !BD U+0E1D fofathai !BE U+0E1E phophanthai !BF U+0E1F fofanthai !C0 U+0E20 phosamphaothai !C1 U+0E21 momathai !C2 U+0E22 yoyakthai !C3 U+0E23 roruathai !C4 U+0E24 ruthai !C5 U+0E25 lolingthai !C6 U+0E26 luthai !C7 U+0E27 wowaenthai !C8 U+0E28 sosalathai !C9 U+0E29 sorusithai !CA U+0E2A sosuathai !CB U+0E2B hohipthai !CC U+0E2C lochulathai !CD U+0E2D oangthai !CE U+0E2E honokhukthai !CF U+0E2F paiyannoithai !D0 U+0E30 saraathai !D1 U+0E31 maihanakatthai !D2 U+0E32 saraaathai !D3 U+0E33 saraamthai !D4 U+0E34 saraithai !D5 U+0E35 saraiithai !D6 U+0E36 sarauethai !D7 U+0E37 saraueethai !D8 U+0E38 sarauthai !D9 U+0E39 sarauuthai !DA U+0E3A phinthuthai !DF U+0E3F bahtthai !E0 U+0E40 saraethai !E1 U+0E41 saraaethai !E2 U+0E42 saraothai !E3 U+0E43 saraaimaimuanthai !E4 U+0E44 saraaimaimalaithai !E5 U+0E45 lakkhangyaothai !E6 U+0E46 maiyamokthai !E7 U+0E47 maitaikhuthai !E8 U+0E48 maiekthai !E9 U+0E49 maithothai !EA U+0E4A maitrithai !EB U+0E4B maichattawathai !EC U+0E4C thanthakhatthai !ED U+0E4D nikhahitthai !EE U+0E4E yamakkanthai !EF U+0E4F fongmanthai !F0 U+0E50 zerothai !F1 U+0E51 onethai !F2 U+0E52 twothai !F3 U+0E53 threethai !F4 U+0E54 fourthai !F5 U+0E55 fivethai !F6 U+0E56 sixthai !F7 U+0E57 seventhai !F8 U+0E58 eightthai !F9 U+0E59 ninethai !FA U+0E5A angkhankhuthai !FB U+0E5B khomutthai PKZLmakefont/cp874.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+20AC Euro !85 U+2026 ellipsis !91 U+2018 quoteleft !92 U+2019 quoteright !93 U+201C quotedblleft !94 U+201D quotedblright !95 U+2022 bullet !96 U+2013 endash !97 U+2014 emdash !A0 U+00A0 space !A1 U+0E01 kokaithai !A2 U+0E02 khokhaithai !A3 U+0E03 khokhuatthai !A4 U+0E04 khokhwaithai !A5 U+0E05 khokhonthai !A6 U+0E06 khorakhangthai !A7 U+0E07 ngonguthai !A8 U+0E08 chochanthai !A9 U+0E09 chochingthai !AA U+0E0A chochangthai !AB U+0E0B sosothai !AC U+0E0C chochoethai !AD U+0E0D yoyingthai !AE U+0E0E dochadathai !AF U+0E0F topatakthai !B0 U+0E10 thothanthai !B1 U+0E11 thonangmonthothai !B2 U+0E12 thophuthaothai !B3 U+0E13 nonenthai !B4 U+0E14 dodekthai !B5 U+0E15 totaothai !B6 U+0E16 thothungthai !B7 U+0E17 thothahanthai !B8 U+0E18 thothongthai !B9 U+0E19 nonuthai !BA U+0E1A bobaimaithai !BB U+0E1B poplathai !BC U+0E1C phophungthai !BD U+0E1D fofathai !BE U+0E1E phophanthai !BF U+0E1F fofanthai !C0 U+0E20 phosamphaothai !C1 U+0E21 momathai !C2 U+0E22 yoyakthai !C3 U+0E23 roruathai !C4 U+0E24 ruthai !C5 U+0E25 lolingthai !C6 U+0E26 luthai !C7 U+0E27 wowaenthai !C8 U+0E28 sosalathai !C9 U+0E29 sorusithai !CA U+0E2A sosuathai !CB U+0E2B hohipthai !CC U+0E2C lochulathai !CD U+0E2D oangthai !CE U+0E2E honokhukthai !CF U+0E2F paiyannoithai !D0 U+0E30 saraathai !D1 U+0E31 maihanakatthai !D2 U+0E32 saraaathai !D3 U+0E33 saraamthai !D4 U+0E34 saraithai !D5 U+0E35 saraiithai !D6 U+0E36 sarauethai !D7 U+0E37 saraueethai !D8 U+0E38 sarauthai !D9 U+0E39 sarauuthai !DA U+0E3A phinthuthai !DF U+0E3F bahtthai !E0 U+0E40 saraethai !E1 U+0E41 saraaethai !E2 U+0E42 saraothai !E3 U+0E43 saraaimaimuanthai !E4 U+0E44 saraaimaimalaithai !E5 U+0E45 lakkhangyaothai !E6 U+0E46 maiyamokthai !E7 U+0E47 maitaikhuthai !E8 U+0E48 maiekthai !E9 U+0E49 maithothai !EA U+0E4A maitrithai !EB U+0E4B maichattawathai !EC U+0E4C thanthakhatthai !ED U+0E4D nikhahitthai !EE U+0E4E yamakkanthai !EF U+0E4F fongmanthai !F0 U+0E50 zerothai !F1 U+0E51 onethai !F2 U+0E52 twothai !F3 U+0E53 threethai !F4 U+0E54 fourthai !F5 U+0E55 fivethai !F6 U+0E56 sixthai !F7 U+0E57 seventhai !F8 U+0E58 eightthai !F9 U+0E59 ninethai !FA U+0E5A angkhankhuthai !FB U+0E5B khomutthai PKZ+%makefont/cp1253.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+20AC Euro !82 U+201A quotesinglbase !83 U+0192 florin !84 U+201E quotedblbase !85 U+2026 ellipsis !86 U+2020 dagger !87 U+2021 daggerdbl !89 U+2030 perthousand !8B U+2039 guilsinglleft !91 U+2018 quoteleft !92 U+2019 quoteright !93 U+201C quotedblleft !94 U+201D quotedblright !95 U+2022 bullet !96 U+2013 endash !97 U+2014 emdash !99 U+2122 trademark !9B U+203A guilsinglright !A0 U+00A0 space !A1 U+0385 dieresistonos !A2 U+0386 Alphatonos !A3 U+00A3 sterling !A4 U+00A4 currency !A5 U+00A5 yen !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+00A9 copyright !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+2015 afii00208 !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+0384 tonos !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+0388 Epsilontonos !B9 U+0389 Etatonos !BA U+038A Iotatonos !BB U+00BB guillemotright !BC U+038C Omicrontonos !BD U+00BD onehalf !BE U+038E Upsilontonos !BF U+038F Omegatonos !C0 U+0390 iotadieresistonos !C1 U+0391 Alpha !C2 U+0392 Beta !C3 U+0393 Gamma !C4 U+0394 Delta !C5 U+0395 Epsilon !C6 U+0396 Zeta !C7 U+0397 Eta !C8 U+0398 Theta !C9 U+0399 Iota !CA U+039A Kappa !CB U+039B Lambda !CC U+039C Mu !CD U+039D Nu !CE U+039E Xi !CF U+039F Omicron !D0 U+03A0 Pi !D1 U+03A1 Rho !D3 U+03A3 Sigma !D4 U+03A4 Tau !D5 U+03A5 Upsilon !D6 U+03A6 Phi !D7 U+03A7 Chi !D8 U+03A8 Psi !D9 U+03A9 Omega !DA U+03AA Iotadieresis !DB U+03AB Upsilondieresis !DC U+03AC alphatonos !DD U+03AD epsilontonos !DE U+03AE etatonos !DF U+03AF iotatonos !E0 U+03B0 upsilondieresistonos !E1 U+03B1 alpha !E2 U+03B2 beta !E3 U+03B3 gamma !E4 U+03B4 delta !E5 U+03B5 epsilon !E6 U+03B6 zeta !E7 U+03B7 eta !E8 U+03B8 theta !E9 U+03B9 iota !EA U+03BA kappa !EB U+03BB lambda !EC U+03BC mu !ED U+03BD nu !EE U+03BE xi !EF U+03BF omicron !F0 U+03C0 pi !F1 U+03C1 rho !F2 U+03C2 sigma1 !F3 U+03C3 sigma !F4 U+03C4 tau !F5 U+03C5 upsilon !F6 U+03C6 phi !F7 U+03C7 chi !F8 U+03C8 psi !F9 U+03C9 omega !FA U+03CA iotadieresis !FB U+03CB upsilondieresis !FC U+03CC omicrontonos !FD U+03CD upsilontonos !FE U+03CE omegatonos PKZ|a NNmakefont/iso-8859-7.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0080 .notdef !81 U+0081 .notdef !82 U+0082 .notdef !83 U+0083 .notdef !84 U+0084 .notdef !85 U+0085 .notdef !86 U+0086 .notdef !87 U+0087 .notdef !88 U+0088 .notdef !89 U+0089 .notdef !8A U+008A .notdef !8B U+008B .notdef !8C U+008C .notdef !8D U+008D .notdef !8E U+008E .notdef !8F U+008F .notdef !90 U+0090 .notdef !91 U+0091 .notdef !92 U+0092 .notdef !93 U+0093 .notdef !94 U+0094 .notdef !95 U+0095 .notdef !96 U+0096 .notdef !97 U+0097 .notdef !98 U+0098 .notdef !99 U+0099 .notdef !9A U+009A .notdef !9B U+009B .notdef !9C U+009C .notdef !9D U+009D .notdef !9E U+009E .notdef !9F U+009F .notdef !A0 U+00A0 space !A1 U+2018 quoteleft !A2 U+2019 quoteright !A3 U+00A3 sterling !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+00A9 copyright !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AF U+2015 afii00208 !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+0384 tonos !B5 U+0385 dieresistonos !B6 U+0386 Alphatonos !B7 U+00B7 periodcentered !B8 U+0388 Epsilontonos !B9 U+0389 Etatonos !BA U+038A Iotatonos !BB U+00BB guillemotright !BC U+038C Omicrontonos !BD U+00BD onehalf !BE U+038E Upsilontonos !BF U+038F Omegatonos !C0 U+0390 iotadieresistonos !C1 U+0391 Alpha !C2 U+0392 Beta !C3 U+0393 Gamma !C4 U+0394 Delta !C5 U+0395 Epsilon !C6 U+0396 Zeta !C7 U+0397 Eta !C8 U+0398 Theta !C9 U+0399 Iota !CA U+039A Kappa !CB U+039B Lambda !CC U+039C Mu !CD U+039D Nu !CE U+039E Xi !CF U+039F Omicron !D0 U+03A0 Pi !D1 U+03A1 Rho !D3 U+03A3 Sigma !D4 U+03A4 Tau !D5 U+03A5 Upsilon !D6 U+03A6 Phi !D7 U+03A7 Chi !D8 U+03A8 Psi !D9 U+03A9 Omega !DA U+03AA Iotadieresis !DB U+03AB Upsilondieresis !DC U+03AC alphatonos !DD U+03AD epsilontonos !DE U+03AE etatonos !DF U+03AF iotatonos !E0 U+03B0 upsilondieresistonos !E1 U+03B1 alpha !E2 U+03B2 beta !E3 U+03B3 gamma !E4 U+03B4 delta !E5 U+03B5 epsilon !E6 U+03B6 zeta !E7 U+03B7 eta !E8 U+03B8 theta !E9 U+03B9 iota !EA U+03BA kappa !EB U+03BB lambda !EC U+03BC mu !ED U+03BD nu !EE U+03BE xi !EF U+03BF omicron !F0 U+03C0 pi !F1 U+03C1 rho !F2 U+03C2 sigma1 !F3 U+03C3 sigma !F4 U+03C4 tau !F5 U+03C5 upsilon !F6 U+03C6 phi !F7 U+03C7 chi !F8 U+03C8 psi !F9 U+03C9 omega !FA U+03CA iotadieresis !FB U+03CB upsilondieresis !FC U+03CC omicrontonos !FD U+03CD upsilontonos !FE U+03CE omegatonos PKZjmakefont/cp1258.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+20AC Euro !82 U+201A quotesinglbase !83 U+0192 florin !84 U+201E quotedblbase !85 U+2026 ellipsis !86 U+2020 dagger !87 U+2021 daggerdbl !88 U+02C6 circumflex !89 U+2030 perthousand !8B U+2039 guilsinglleft !8C U+0152 OE !91 U+2018 quoteleft !92 U+2019 quoteright !93 U+201C quotedblleft !94 U+201D quotedblright !95 U+2022 bullet !96 U+2013 endash !97 U+2014 emdash !98 U+02DC tilde !99 U+2122 trademark !9B U+203A guilsinglright !9C U+0153 oe !9F U+0178 Ydieresis !A0 U+00A0 space !A1 U+00A1 exclamdown !A2 U+00A2 cent !A3 U+00A3 sterling !A4 U+00A4 currency !A5 U+00A5 yen !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+00A9 copyright !AA U+00AA ordfeminine !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+00AF macron !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+00B4 acute !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+00B8 cedilla !B9 U+00B9 onesuperior !BA U+00BA ordmasculine !BB U+00BB guillemotright !BC U+00BC onequarter !BD U+00BD onehalf !BE U+00BE threequarters !BF U+00BF questiondown !C0 U+00C0 Agrave !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+0102 Abreve !C4 U+00C4 Adieresis !C5 U+00C5 Aring !C6 U+00C6 AE !C7 U+00C7 Ccedilla !C8 U+00C8 Egrave !C9 U+00C9 Eacute !CA U+00CA Ecircumflex !CB U+00CB Edieresis !CC U+0300 gravecomb !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+00CF Idieresis !D0 U+0110 Dcroat !D1 U+00D1 Ntilde !D2 U+0309 hookabovecomb !D3 U+00D3 Oacute !D4 U+00D4 Ocircumflex !D5 U+01A0 Ohorn !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+00D8 Oslash !D9 U+00D9 Ugrave !DA U+00DA Uacute !DB U+00DB Ucircumflex !DC U+00DC Udieresis !DD U+01AF Uhorn !DE U+0303 tildecomb !DF U+00DF germandbls !E0 U+00E0 agrave !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+0103 abreve !E4 U+00E4 adieresis !E5 U+00E5 aring !E6 U+00E6 ae !E7 U+00E7 ccedilla !E8 U+00E8 egrave !E9 U+00E9 eacute !EA U+00EA ecircumflex !EB U+00EB edieresis !EC U+0301 acutecomb !ED U+00ED iacute !EE U+00EE icircumflex !EF U+00EF idieresis !F0 U+0111 dcroat !F1 U+00F1 ntilde !F2 U+0323 dotbelowcomb !F3 U+00F3 oacute !F4 U+00F4 ocircumflex !F5 U+01A1 ohorn !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+00F8 oslash !F9 U+00F9 ugrave !FA U+00FA uacute !FB U+00FB ucircumflex !FC U+00FC udieresis !FD U+01B0 uhorn !FE U+20AB dong !FF U+00FF ydieresis PKZ|makefont/iso-8859-15.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0080 .notdef !81 U+0081 .notdef !82 U+0082 .notdef !83 U+0083 .notdef !84 U+0084 .notdef !85 U+0085 .notdef !86 U+0086 .notdef !87 U+0087 .notdef !88 U+0088 .notdef !89 U+0089 .notdef !8A U+008A .notdef !8B U+008B .notdef !8C U+008C .notdef !8D U+008D .notdef !8E U+008E .notdef !8F U+008F .notdef !90 U+0090 .notdef !91 U+0091 .notdef !92 U+0092 .notdef !93 U+0093 .notdef !94 U+0094 .notdef !95 U+0095 .notdef !96 U+0096 .notdef !97 U+0097 .notdef !98 U+0098 .notdef !99 U+0099 .notdef !9A U+009A .notdef !9B U+009B .notdef !9C U+009C .notdef !9D U+009D .notdef !9E U+009E .notdef !9F U+009F .notdef !A0 U+00A0 space !A1 U+00A1 exclamdown !A2 U+00A2 cent !A3 U+00A3 sterling !A4 U+20AC Euro !A5 U+00A5 yen !A6 U+0160 Scaron !A7 U+00A7 section !A8 U+0161 scaron !A9 U+00A9 copyright !AA U+00AA ordfeminine !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+00AF macron !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+017D Zcaron !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+017E zcaron !B9 U+00B9 onesuperior !BA U+00BA ordmasculine !BB U+00BB guillemotright !BC U+0152 OE !BD U+0153 oe !BE U+0178 Ydieresis !BF U+00BF questiondown !C0 U+00C0 Agrave !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+00C3 Atilde !C4 U+00C4 Adieresis !C5 U+00C5 Aring !C6 U+00C6 AE !C7 U+00C7 Ccedilla !C8 U+00C8 Egrave !C9 U+00C9 Eacute !CA U+00CA Ecircumflex !CB U+00CB Edieresis !CC U+00CC Igrave !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+00CF Idieresis !D0 U+00D0 Eth !D1 U+00D1 Ntilde !D2 U+00D2 Ograve !D3 U+00D3 Oacute !D4 U+00D4 Ocircumflex !D5 U+00D5 Otilde !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+00D8 Oslash !D9 U+00D9 Ugrave !DA U+00DA Uacute !DB U+00DB Ucircumflex !DC U+00DC Udieresis !DD U+00DD Yacute !DE U+00DE Thorn !DF U+00DF germandbls !E0 U+00E0 agrave !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+00E3 atilde !E4 U+00E4 adieresis !E5 U+00E5 aring !E6 U+00E6 ae !E7 U+00E7 ccedilla !E8 U+00E8 egrave !E9 U+00E9 eacute !EA U+00EA ecircumflex !EB U+00EB edieresis !EC U+00EC igrave !ED U+00ED iacute !EE U+00EE icircumflex !EF U+00EF idieresis !F0 U+00F0 eth !F1 U+00F1 ntilde !F2 U+00F2 ograve !F3 U+00F3 oacute !F4 U+00F4 ocircumflex !F5 U+00F5 otilde !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+00F8 oslash !F9 U+00F9 ugrave !FA U+00FA uacute !FB U+00FB ucircumflex !FC U+00FC udieresis !FD U+00FD yacute !FE U+00FE thorn !FF U+00FF ydieresis PKZ.TGTGmakefont/ttfparser.phpnu[f = fopen($file, 'rb'); if(!$this->f) $this->Error('Can\'t open file: '.$file); } function __destruct() { if(is_resource($this->f)) fclose($this->f); } function Parse() { $this->ParseOffsetTable(); $this->ParseHead(); $this->ParseHhea(); $this->ParseMaxp(); $this->ParseHmtx(); $this->ParseLoca(); $this->ParseGlyf(); $this->ParseCmap(); $this->ParseName(); $this->ParseOS2(); $this->ParsePost(); } function ParseOffsetTable() { $version = $this->Read(4); if($version=='OTTO') $this->Error('OpenType fonts based on PostScript outlines are not supported'); if($version!="\x00\x01\x00\x00") $this->Error('Unrecognized file format'); $numTables = $this->ReadUShort(); $this->Skip(3*2); // searchRange, entrySelector, rangeShift $this->tables = array(); for($i=0;$i<$numTables;$i++) { $tag = $this->Read(4); $checkSum = $this->Read(4); $offset = $this->ReadULong(); $length = $this->ReadULong(4); $this->tables[$tag] = array('offset'=>$offset, 'length'=>$length, 'checkSum'=>$checkSum); } } function ParseHead() { $this->Seek('head'); $this->Skip(3*4); // version, fontRevision, checkSumAdjustment $magicNumber = $this->ReadULong(); if($magicNumber!=0x5F0F3CF5) $this->Error('Incorrect magic number'); $this->Skip(2); // flags $this->unitsPerEm = $this->ReadUShort(); $this->Skip(2*8); // created, modified $this->xMin = $this->ReadShort(); $this->yMin = $this->ReadShort(); $this->xMax = $this->ReadShort(); $this->yMax = $this->ReadShort(); $this->Skip(3*2); // macStyle, lowestRecPPEM, fontDirectionHint $this->indexToLocFormat = $this->ReadShort(); } function ParseHhea() { $this->Seek('hhea'); $this->Skip(4+15*2); $this->numberOfHMetrics = $this->ReadUShort(); } function ParseMaxp() { $this->Seek('maxp'); $this->Skip(4); $this->numGlyphs = $this->ReadUShort(); } function ParseHmtx() { $this->Seek('hmtx'); $this->glyphs = array(); for($i=0;$i<$this->numberOfHMetrics;$i++) { $advanceWidth = $this->ReadUShort(); $lsb = $this->ReadShort(); $this->glyphs[$i] = array('w'=>$advanceWidth, 'lsb'=>$lsb); } for($i=$this->numberOfHMetrics;$i<$this->numGlyphs;$i++) { $lsb = $this->ReadShort(); $this->glyphs[$i] = array('w'=>$advanceWidth, 'lsb'=>$lsb); } } function ParseLoca() { $this->Seek('loca'); $offsets = array(); if($this->indexToLocFormat==0) { // Short format for($i=0;$i<=$this->numGlyphs;$i++) $offsets[] = 2*$this->ReadUShort(); } else { // Long format for($i=0;$i<=$this->numGlyphs;$i++) $offsets[] = $this->ReadULong(); } for($i=0;$i<$this->numGlyphs;$i++) { $this->glyphs[$i]['offset'] = $offsets[$i]; $this->glyphs[$i]['length'] = $offsets[$i+1] - $offsets[$i]; } } function ParseGlyf() { $tableOffset = $this->tables['glyf']['offset']; foreach($this->glyphs as &$glyph) { if($glyph['length']>0) { fseek($this->f, $tableOffset+$glyph['offset'], SEEK_SET); if($this->ReadShort()<0) { // Composite glyph $this->Skip(4*2); // xMin, yMin, xMax, yMax $offset = 5*2; $a = array(); do { $flags = $this->ReadUShort(); $index = $this->ReadUShort(); $a[$offset+2] = $index; if($flags & 1) // ARG_1_AND_2_ARE_WORDS $skip = 2*2; else $skip = 2; if($flags & 8) // WE_HAVE_A_SCALE $skip += 2; elseif($flags & 64) // WE_HAVE_AN_X_AND_Y_SCALE $skip += 2*2; elseif($flags & 128) // WE_HAVE_A_TWO_BY_TWO $skip += 4*2; $this->Skip($skip); $offset += 2*2 + $skip; } while($flags & 32); // MORE_COMPONENTS $glyph['components'] = $a; } } } } function ParseCmap() { $this->Seek('cmap'); $this->Skip(2); // version $numTables = $this->ReadUShort(); $offset31 = 0; for($i=0;$i<$numTables;$i++) { $platformID = $this->ReadUShort(); $encodingID = $this->ReadUShort(); $offset = $this->ReadULong(); if($platformID==3 && $encodingID==1) $offset31 = $offset; } if($offset31==0) $this->Error('No Unicode encoding found'); $startCount = array(); $endCount = array(); $idDelta = array(); $idRangeOffset = array(); $this->chars = array(); fseek($this->f, $this->tables['cmap']['offset']+$offset31, SEEK_SET); $format = $this->ReadUShort(); if($format!=4) $this->Error('Unexpected subtable format: '.$format); $this->Skip(2*2); // length, language $segCount = $this->ReadUShort()/2; $this->Skip(3*2); // searchRange, entrySelector, rangeShift for($i=0;$i<$segCount;$i++) $endCount[$i] = $this->ReadUShort(); $this->Skip(2); // reservedPad for($i=0;$i<$segCount;$i++) $startCount[$i] = $this->ReadUShort(); for($i=0;$i<$segCount;$i++) $idDelta[$i] = $this->ReadShort(); $offset = ftell($this->f); for($i=0;$i<$segCount;$i++) $idRangeOffset[$i] = $this->ReadUShort(); for($i=0;$i<$segCount;$i++) { $c1 = $startCount[$i]; $c2 = $endCount[$i]; $d = $idDelta[$i]; $ro = $idRangeOffset[$i]; if($ro>0) fseek($this->f, $offset+2*$i+$ro, SEEK_SET); for($c=$c1;$c<=$c2;$c++) { if($c==0xFFFF) break; if($ro>0) { $gid = $this->ReadUShort(); if($gid>0) $gid += $d; } else $gid = $c+$d; if($gid>=65536) $gid -= 65536; if($gid>0) $this->chars[$c] = $gid; } } } function ParseName() { $this->Seek('name'); $tableOffset = $this->tables['name']['offset']; $this->postScriptName = ''; $this->Skip(2); // format $count = $this->ReadUShort(); $stringOffset = $this->ReadUShort(); for($i=0;$i<$count;$i++) { $this->Skip(3*2); // platformID, encodingID, languageID $nameID = $this->ReadUShort(); $length = $this->ReadUShort(); $offset = $this->ReadUShort(); if($nameID==6) { // PostScript name fseek($this->f, $tableOffset+$stringOffset+$offset, SEEK_SET); $s = $this->Read($length); $s = str_replace(chr(0), '', $s); $s = preg_replace('|[ \[\](){}<>/%]|', '', $s); $this->postScriptName = $s; break; } } if($this->postScriptName=='') $this->Error('PostScript name not found'); } function ParseOS2() { $this->Seek('OS/2'); $version = $this->ReadUShort(); $this->Skip(3*2); // xAvgCharWidth, usWeightClass, usWidthClass $fsType = $this->ReadUShort(); $this->embeddable = ($fsType!=2) && ($fsType & 0x200)==0; $this->Skip(11*2+10+4*4+4); $fsSelection = $this->ReadUShort(); $this->bold = ($fsSelection & 32)!=0; $this->Skip(2*2); // usFirstCharIndex, usLastCharIndex $this->typoAscender = $this->ReadShort(); $this->typoDescender = $this->ReadShort(); if($version>=2) { $this->Skip(3*2+2*4+2); $this->capHeight = $this->ReadShort(); } else $this->capHeight = 0; } function ParsePost() { $this->Seek('post'); $version = $this->ReadULong(); $this->italicAngle = $this->ReadShort(); $this->Skip(2); // Skip decimal part $this->underlinePosition = $this->ReadShort(); $this->underlineThickness = $this->ReadShort(); $this->isFixedPitch = ($this->ReadULong()!=0); if($version==0x20000) { // Extract glyph names $this->Skip(4*4); // min/max usage $this->Skip(2); // numberOfGlyphs $glyphNameIndex = array(); $names = array(); $numNames = 0; for($i=0;$i<$this->numGlyphs;$i++) { $index = $this->ReadUShort(); $glyphNameIndex[] = $index; if($index>=258 && $index-257>$numNames) $numNames = $index-257; } for($i=0;$i<$numNames;$i++) { $len = ord($this->Read(1)); $names[] = $this->Read($len); } foreach($glyphNameIndex as $i=>$index) { if($index>=258) $this->glyphs[$i]['name'] = $names[$index-258]; else $this->glyphs[$i]['name'] = $index; } $this->glyphNames = true; } else $this->glyphNames = false; } function Subset($chars) { /* $chars = array_keys($this->chars); $this->subsettedChars = $chars; $this->subsettedGlyphs = array(); for($i=0;$i<$this->numGlyphs;$i++) { $this->subsettedGlyphs[] = $i; $this->glyphs[$i]['ssid'] = $i; }*/ $this->AddGlyph(0); $this->subsettedChars = array(); foreach($chars as $char) { if(isset($this->chars[$char])) { $this->subsettedChars[] = $char; $this->AddGlyph($this->chars[$char]); } } } function AddGlyph($id) { if(!isset($this->glyphs[$id]['ssid'])) { $this->glyphs[$id]['ssid'] = count($this->subsettedGlyphs); $this->subsettedGlyphs[] = $id; if(isset($this->glyphs[$id]['components'])) { foreach($this->glyphs[$id]['components'] as $cid) $this->AddGlyph($cid); } } } function Build() { $this->BuildCmap(); $this->BuildHhea(); $this->BuildHmtx(); $this->BuildLoca(); $this->BuildGlyf(); $this->BuildMaxp(); $this->BuildPost(); return $this->BuildFont(); } function BuildCmap() { if(!isset($this->subsettedChars)) return; // Divide charset in contiguous segments $chars = $this->subsettedChars; sort($chars); $segments = array(); $segment = array($chars[0], $chars[0]); for($i=1;$i$segment[1]+1) { $segments[] = $segment; $segment = array($chars[$i], $chars[$i]); } else $segment[1]++; } $segments[] = $segment; $segments[] = array(0xFFFF, 0xFFFF); $segCount = count($segments); // Build a Format 4 subtable $startCount = array(); $endCount = array(); $idDelta = array(); $idRangeOffset = array(); $glyphIdArray = ''; for($i=0;$i<$segCount;$i++) { list($start, $end) = $segments[$i]; $startCount[] = $start; $endCount[] = $end; if($start!=$end) { // Segment with multiple chars $idDelta[] = 0; $idRangeOffset[] = strlen($glyphIdArray) + ($segCount-$i)*2; for($c=$start;$c<=$end;$c++) { $ssid = $this->glyphs[$this->chars[$c]]['ssid']; $glyphIdArray .= pack('n', $ssid); } } else { // Segment with a single char if($start<0xFFFF) $ssid = $this->glyphs[$this->chars[$start]]['ssid']; else $ssid = 0; $idDelta[] = $ssid - $start; $idRangeOffset[] = 0; } } $entrySelector = 0; $n = $segCount; while($n!=1) { $n = $n>>1; $entrySelector++; } $searchRange = (1<<$entrySelector)*2; $rangeShift = 2*$segCount - $searchRange; $cmap = pack('nnnn', 2*$segCount, $searchRange, $entrySelector, $rangeShift); foreach($endCount as $val) $cmap .= pack('n', $val); $cmap .= pack('n', 0); // reservedPad foreach($startCount as $val) $cmap .= pack('n', $val); foreach($idDelta as $val) $cmap .= pack('n', $val); foreach($idRangeOffset as $val) $cmap .= pack('n', $val); $cmap .= $glyphIdArray; $data = pack('nn', 0, 1); // version, numTables $data .= pack('nnN', 3, 1, 12); // platformID, encodingID, offset $data .= pack('nnn', 4, 6+strlen($cmap), 0); // format, length, language $data .= $cmap; $this->SetTable('cmap', $data); } function BuildHhea() { $this->LoadTable('hhea'); $numberOfHMetrics = count($this->subsettedGlyphs); $data = substr_replace($this->tables['hhea']['data'], pack('n',$numberOfHMetrics), 4+15*2, 2); $this->SetTable('hhea', $data); } function BuildHmtx() { $data = ''; foreach($this->subsettedGlyphs as $id) { $glyph = $this->glyphs[$id]; $data .= pack('nn', $glyph['w'], $glyph['lsb']); } $this->SetTable('hmtx', $data); } function BuildLoca() { $data = ''; $offset = 0; foreach($this->subsettedGlyphs as $id) { if($this->indexToLocFormat==0) $data .= pack('n', $offset/2); else $data .= pack('N', $offset); $offset += $this->glyphs[$id]['length']; } if($this->indexToLocFormat==0) $data .= pack('n', $offset/2); else $data .= pack('N', $offset); $this->SetTable('loca', $data); } function BuildGlyf() { $tableOffset = $this->tables['glyf']['offset']; $data = ''; foreach($this->subsettedGlyphs as $id) { $glyph = $this->glyphs[$id]; fseek($this->f, $tableOffset+$glyph['offset'], SEEK_SET); $glyph_data = $this->Read($glyph['length']); if(isset($glyph['components'])) { // Composite glyph foreach($glyph['components'] as $offset=>$cid) { $ssid = $this->glyphs[$cid]['ssid']; $glyph_data = substr_replace($glyph_data, pack('n',$ssid), $offset, 2); } } $data .= $glyph_data; } $this->SetTable('glyf', $data); } function BuildMaxp() { $this->LoadTable('maxp'); $numGlyphs = count($this->subsettedGlyphs); $data = substr_replace($this->tables['maxp']['data'], pack('n',$numGlyphs), 4, 2); $this->SetTable('maxp', $data); } function BuildPost() { $this->Seek('post'); if($this->glyphNames) { // Version 2.0 $numberOfGlyphs = count($this->subsettedGlyphs); $numNames = 0; $names = ''; $data = $this->Read(2*4+2*2+5*4); $data .= pack('n', $numberOfGlyphs); foreach($this->subsettedGlyphs as $id) { $name = $this->glyphs[$id]['name']; if(is_string($name)) { $data .= pack('n', 258+$numNames); $names .= chr(strlen($name)).$name; $numNames++; } else $data .= pack('n', $name); } $data .= $names; } else { // Version 3.0 $this->Skip(4); $data = "\x00\x03\x00\x00"; $data .= $this->Read(4+2*2+5*4); } $this->SetTable('post', $data); } function BuildFont() { $tags = array(); foreach(array('cmap', 'cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'name', 'post', 'prep') as $tag) { if(isset($this->tables[$tag])) $tags[] = $tag; } $numTables = count($tags); $offset = 12 + 16*$numTables; foreach($tags as $tag) { if(!isset($this->tables[$tag]['data'])) $this->LoadTable($tag); $this->tables[$tag]['offset'] = $offset; $offset += strlen($this->tables[$tag]['data']); } // $this->tables['head']['data'] = substr_replace($this->tables['head']['data'], "\x00\x00\x00\x00", 8, 4); // Build offset table $entrySelector = 0; $n = $numTables; while($n!=1) { $n = $n>>1; $entrySelector++; } $searchRange = 16*(1<<$entrySelector); $rangeShift = 16*$numTables - $searchRange; $offsetTable = pack('nnnnnn', 1, 0, $numTables, $searchRange, $entrySelector, $rangeShift); foreach($tags as $tag) { $table = $this->tables[$tag]; $offsetTable .= $tag.$table['checkSum'].pack('NN', $table['offset'], $table['length']); } // Compute checkSumAdjustment (0xB1B0AFBA - font checkSum) $s = $this->CheckSum($offsetTable); foreach($tags as $tag) $s .= $this->tables[$tag]['checkSum']; $a = unpack('n2', $this->CheckSum($s)); $high = 0xB1B0 + ($a[1]^0xFFFF); $low = 0xAFBA + ($a[2]^0xFFFF) + 1; $checkSumAdjustment = pack('nn', $high+($low>>16), $low); $this->tables['head']['data'] = substr_replace($this->tables['head']['data'], $checkSumAdjustment, 8, 4); $font = $offsetTable; foreach($tags as $tag) $font .= $this->tables[$tag]['data']; return $font; } function LoadTable($tag) { $this->Seek($tag); $length = $this->tables[$tag]['length']; $n = $length % 4; if($n>0) $length += 4 - $n; $this->tables[$tag]['data'] = $this->Read($length); } function SetTable($tag, $data) { $length = strlen($data); $n = $length % 4; if($n>0) $data = str_pad($data, $length+4-$n, "\x00"); $this->tables[$tag]['data'] = $data; $this->tables[$tag]['length'] = $length; $this->tables[$tag]['checkSum'] = $this->CheckSum($data); } function Seek($tag) { if(!isset($this->tables[$tag])) $this->Error('Table not found: '.$tag); fseek($this->f, $this->tables[$tag]['offset'], SEEK_SET); } function Skip($n) { fseek($this->f, $n, SEEK_CUR); } function Read($n) { return $n>0 ? fread($this->f, $n) : ''; } function ReadUShort() { $a = unpack('nn', fread($this->f,2)); return $a['n']; } function ReadShort() { $a = unpack('nn', fread($this->f,2)); $v = $a['n']; if($v>=0x8000) $v -= 65536; return $v; } function ReadULong() { $a = unpack('NN', fread($this->f,4)); return $a['N']; } function CheckSum($s) { $n = strlen($s); $high = 0; $low = 0; for($i=0;$i<$n;$i+=4) { $high += (ord($s[$i])<<8) + ord($s[$i+1]); $low += (ord($s[$i+2])<<8) + ord($s[$i+3]); } return pack('nn', $high+($low>>16), $low); } function Error($msg) { throw new Exception($msg); } } ?> PKZ /makefont/cp1255.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+20AC Euro !82 U+201A quotesinglbase !83 U+0192 florin !84 U+201E quotedblbase !85 U+2026 ellipsis !86 U+2020 dagger !87 U+2021 daggerdbl !88 U+02C6 circumflex !89 U+2030 perthousand !8B U+2039 guilsinglleft !91 U+2018 quoteleft !92 U+2019 quoteright !93 U+201C quotedblleft !94 U+201D quotedblright !95 U+2022 bullet !96 U+2013 endash !97 U+2014 emdash !98 U+02DC tilde !99 U+2122 trademark !9B U+203A guilsinglright !A0 U+00A0 space !A1 U+00A1 exclamdown !A2 U+00A2 cent !A3 U+00A3 sterling !A4 U+20AA afii57636 !A5 U+00A5 yen !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+00A9 copyright !AA U+00D7 multiply !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD sfthyphen !AE U+00AE registered !AF U+00AF macron !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+00B4 acute !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 middot !B8 U+00B8 cedilla !B9 U+00B9 onesuperior !BA U+00F7 divide !BB U+00BB guillemotright !BC U+00BC onequarter !BD U+00BD onehalf !BE U+00BE threequarters !BF U+00BF questiondown !C0 U+05B0 afii57799 !C1 U+05B1 afii57801 !C2 U+05B2 afii57800 !C3 U+05B3 afii57802 !C4 U+05B4 afii57793 !C5 U+05B5 afii57794 !C6 U+05B6 afii57795 !C7 U+05B7 afii57798 !C8 U+05B8 afii57797 !C9 U+05B9 afii57806 !CB U+05BB afii57796 !CC U+05BC afii57807 !CD U+05BD afii57839 !CE U+05BE afii57645 !CF U+05BF afii57841 !D0 U+05C0 afii57842 !D1 U+05C1 afii57804 !D2 U+05C2 afii57803 !D3 U+05C3 afii57658 !D4 U+05F0 afii57716 !D5 U+05F1 afii57717 !D6 U+05F2 afii57718 !D7 U+05F3 gereshhebrew !D8 U+05F4 gershayimhebrew !E0 U+05D0 afii57664 !E1 U+05D1 afii57665 !E2 U+05D2 afii57666 !E3 U+05D3 afii57667 !E4 U+05D4 afii57668 !E5 U+05D5 afii57669 !E6 U+05D6 afii57670 !E7 U+05D7 afii57671 !E8 U+05D8 afii57672 !E9 U+05D9 afii57673 !EA U+05DA afii57674 !EB U+05DB afii57675 !EC U+05DC afii57676 !ED U+05DD afii57677 !EE U+05DE afii57678 !EF U+05DF afii57679 !F0 U+05E0 afii57680 !F1 U+05E1 afii57681 !F2 U+05E2 afii57682 !F3 U+05E3 afii57683 !F4 U+05E4 afii57684 !F5 U+05E5 afii57685 !F6 U+05E6 afii57686 !F7 U+05E7 afii57687 !F8 U+05E8 afii57688 !F9 U+05E9 afii57689 !FA U+05EA afii57690 !FD U+200E afii299 !FE U+200F afii300 PKZRmakefont/iso-8859-9.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0080 .notdef !81 U+0081 .notdef !82 U+0082 .notdef !83 U+0083 .notdef !84 U+0084 .notdef !85 U+0085 .notdef !86 U+0086 .notdef !87 U+0087 .notdef !88 U+0088 .notdef !89 U+0089 .notdef !8A U+008A .notdef !8B U+008B .notdef !8C U+008C .notdef !8D U+008D .notdef !8E U+008E .notdef !8F U+008F .notdef !90 U+0090 .notdef !91 U+0091 .notdef !92 U+0092 .notdef !93 U+0093 .notdef !94 U+0094 .notdef !95 U+0095 .notdef !96 U+0096 .notdef !97 U+0097 .notdef !98 U+0098 .notdef !99 U+0099 .notdef !9A U+009A .notdef !9B U+009B .notdef !9C U+009C .notdef !9D U+009D .notdef !9E U+009E .notdef !9F U+009F .notdef !A0 U+00A0 space !A1 U+00A1 exclamdown !A2 U+00A2 cent !A3 U+00A3 sterling !A4 U+00A4 currency !A5 U+00A5 yen !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+00A9 copyright !AA U+00AA ordfeminine !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+00AF macron !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+00B4 acute !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+00B8 cedilla !B9 U+00B9 onesuperior !BA U+00BA ordmasculine !BB U+00BB guillemotright !BC U+00BC onequarter !BD U+00BD onehalf !BE U+00BE threequarters !BF U+00BF questiondown !C0 U+00C0 Agrave !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+00C3 Atilde !C4 U+00C4 Adieresis !C5 U+00C5 Aring !C6 U+00C6 AE !C7 U+00C7 Ccedilla !C8 U+00C8 Egrave !C9 U+00C9 Eacute !CA U+00CA Ecircumflex !CB U+00CB Edieresis !CC U+00CC Igrave !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+00CF Idieresis !D0 U+011E Gbreve !D1 U+00D1 Ntilde !D2 U+00D2 Ograve !D3 U+00D3 Oacute !D4 U+00D4 Ocircumflex !D5 U+00D5 Otilde !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+00D8 Oslash !D9 U+00D9 Ugrave !DA U+00DA Uacute !DB U+00DB Ucircumflex !DC U+00DC Udieresis !DD U+0130 Idotaccent !DE U+015E Scedilla !DF U+00DF germandbls !E0 U+00E0 agrave !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+00E3 atilde !E4 U+00E4 adieresis !E5 U+00E5 aring !E6 U+00E6 ae !E7 U+00E7 ccedilla !E8 U+00E8 egrave !E9 U+00E9 eacute !EA U+00EA ecircumflex !EB U+00EB edieresis !EC U+00EC igrave !ED U+00ED iacute !EE U+00EE icircumflex !EF U+00EF idieresis !F0 U+011F gbreve !F1 U+00F1 ntilde !F2 U+00F2 ograve !F3 U+00F3 oacute !F4 U+00F4 ocircumflex !F5 U+00F5 otilde !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+00F8 oslash !F9 U+00F9 ugrave !FA U+00FA uacute !FB U+00FB ucircumflex !FC U+00FC udieresis !FD U+0131 dotlessi !FE U+015F scedilla !FF U+00FF ydieresis PKZ2gmakefont/iso-8859-4.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0080 .notdef !81 U+0081 .notdef !82 U+0082 .notdef !83 U+0083 .notdef !84 U+0084 .notdef !85 U+0085 .notdef !86 U+0086 .notdef !87 U+0087 .notdef !88 U+0088 .notdef !89 U+0089 .notdef !8A U+008A .notdef !8B U+008B .notdef !8C U+008C .notdef !8D U+008D .notdef !8E U+008E .notdef !8F U+008F .notdef !90 U+0090 .notdef !91 U+0091 .notdef !92 U+0092 .notdef !93 U+0093 .notdef !94 U+0094 .notdef !95 U+0095 .notdef !96 U+0096 .notdef !97 U+0097 .notdef !98 U+0098 .notdef !99 U+0099 .notdef !9A U+009A .notdef !9B U+009B .notdef !9C U+009C .notdef !9D U+009D .notdef !9E U+009E .notdef !9F U+009F .notdef !A0 U+00A0 space !A1 U+0104 Aogonek !A2 U+0138 kgreenlandic !A3 U+0156 Rcommaaccent !A4 U+00A4 currency !A5 U+0128 Itilde !A6 U+013B Lcommaaccent !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+0160 Scaron !AA U+0112 Emacron !AB U+0122 Gcommaaccent !AC U+0166 Tbar !AD U+00AD hyphen !AE U+017D Zcaron !AF U+00AF macron !B0 U+00B0 degree !B1 U+0105 aogonek !B2 U+02DB ogonek !B3 U+0157 rcommaaccent !B4 U+00B4 acute !B5 U+0129 itilde !B6 U+013C lcommaaccent !B7 U+02C7 caron !B8 U+00B8 cedilla !B9 U+0161 scaron !BA U+0113 emacron !BB U+0123 gcommaaccent !BC U+0167 tbar !BD U+014A Eng !BE U+017E zcaron !BF U+014B eng !C0 U+0100 Amacron !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+00C3 Atilde !C4 U+00C4 Adieresis !C5 U+00C5 Aring !C6 U+00C6 AE !C7 U+012E Iogonek !C8 U+010C Ccaron !C9 U+00C9 Eacute !CA U+0118 Eogonek !CB U+00CB Edieresis !CC U+0116 Edotaccent !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+012A Imacron !D0 U+0110 Dcroat !D1 U+0145 Ncommaaccent !D2 U+014C Omacron !D3 U+0136 Kcommaaccent !D4 U+00D4 Ocircumflex !D5 U+00D5 Otilde !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+00D8 Oslash !D9 U+0172 Uogonek !DA U+00DA Uacute !DB U+00DB Ucircumflex !DC U+00DC Udieresis !DD U+0168 Utilde !DE U+016A Umacron !DF U+00DF germandbls !E0 U+0101 amacron !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+00E3 atilde !E4 U+00E4 adieresis !E5 U+00E5 aring !E6 U+00E6 ae !E7 U+012F iogonek !E8 U+010D ccaron !E9 U+00E9 eacute !EA U+0119 eogonek !EB U+00EB edieresis !EC U+0117 edotaccent !ED U+00ED iacute !EE U+00EE icircumflex !EF U+012B imacron !F0 U+0111 dcroat !F1 U+0146 ncommaaccent !F2 U+014D omacron !F3 U+0137 kcommaaccent !F4 U+00F4 ocircumflex !F5 U+00F5 otilde !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+00F8 oslash !F9 U+0173 uogonek !FA U+00FA uacute !FB U+00FB ucircumflex !FC U+00FC udieresis !FD U+0169 utilde !FE U+016B umacron !FF U+02D9 dotaccent PKZlbmakefont/iso-8859-2.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0080 .notdef !81 U+0081 .notdef !82 U+0082 .notdef !83 U+0083 .notdef !84 U+0084 .notdef !85 U+0085 .notdef !86 U+0086 .notdef !87 U+0087 .notdef !88 U+0088 .notdef !89 U+0089 .notdef !8A U+008A .notdef !8B U+008B .notdef !8C U+008C .notdef !8D U+008D .notdef !8E U+008E .notdef !8F U+008F .notdef !90 U+0090 .notdef !91 U+0091 .notdef !92 U+0092 .notdef !93 U+0093 .notdef !94 U+0094 .notdef !95 U+0095 .notdef !96 U+0096 .notdef !97 U+0097 .notdef !98 U+0098 .notdef !99 U+0099 .notdef !9A U+009A .notdef !9B U+009B .notdef !9C U+009C .notdef !9D U+009D .notdef !9E U+009E .notdef !9F U+009F .notdef !A0 U+00A0 space !A1 U+0104 Aogonek !A2 U+02D8 breve !A3 U+0141 Lslash !A4 U+00A4 currency !A5 U+013D Lcaron !A6 U+015A Sacute !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+0160 Scaron !AA U+015E Scedilla !AB U+0164 Tcaron !AC U+0179 Zacute !AD U+00AD hyphen !AE U+017D Zcaron !AF U+017B Zdotaccent !B0 U+00B0 degree !B1 U+0105 aogonek !B2 U+02DB ogonek !B3 U+0142 lslash !B4 U+00B4 acute !B5 U+013E lcaron !B6 U+015B sacute !B7 U+02C7 caron !B8 U+00B8 cedilla !B9 U+0161 scaron !BA U+015F scedilla !BB U+0165 tcaron !BC U+017A zacute !BD U+02DD hungarumlaut !BE U+017E zcaron !BF U+017C zdotaccent !C0 U+0154 Racute !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+0102 Abreve !C4 U+00C4 Adieresis !C5 U+0139 Lacute !C6 U+0106 Cacute !C7 U+00C7 Ccedilla !C8 U+010C Ccaron !C9 U+00C9 Eacute !CA U+0118 Eogonek !CB U+00CB Edieresis !CC U+011A Ecaron !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+010E Dcaron !D0 U+0110 Dcroat !D1 U+0143 Nacute !D2 U+0147 Ncaron !D3 U+00D3 Oacute !D4 U+00D4 Ocircumflex !D5 U+0150 Ohungarumlaut !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+0158 Rcaron !D9 U+016E Uring !DA U+00DA Uacute !DB U+0170 Uhungarumlaut !DC U+00DC Udieresis !DD U+00DD Yacute !DE U+0162 Tcommaaccent !DF U+00DF germandbls !E0 U+0155 racute !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+0103 abreve !E4 U+00E4 adieresis !E5 U+013A lacute !E6 U+0107 cacute !E7 U+00E7 ccedilla !E8 U+010D ccaron !E9 U+00E9 eacute !EA U+0119 eogonek !EB U+00EB edieresis !EC U+011B ecaron !ED U+00ED iacute !EE U+00EE icircumflex !EF U+010F dcaron !F0 U+0111 dcroat !F1 U+0144 nacute !F2 U+0148 ncaron !F3 U+00F3 oacute !F4 U+00F4 ocircumflex !F5 U+0151 ohungarumlaut !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+0159 rcaron !F9 U+016F uring !FA U+00FA uacute !FB U+0171 uhungarumlaut !FC U+00FC udieresis !FD U+00FD yacute !FE U+0163 tcommaaccent !FF U+02D9 dotaccent PKZq.makefont/cp1254.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+20AC Euro !82 U+201A quotesinglbase !83 U+0192 florin !84 U+201E quotedblbase !85 U+2026 ellipsis !86 U+2020 dagger !87 U+2021 daggerdbl !88 U+02C6 circumflex !89 U+2030 perthousand !8A U+0160 Scaron !8B U+2039 guilsinglleft !8C U+0152 OE !91 U+2018 quoteleft !92 U+2019 quoteright !93 U+201C quotedblleft !94 U+201D quotedblright !95 U+2022 bullet !96 U+2013 endash !97 U+2014 emdash !98 U+02DC tilde !99 U+2122 trademark !9A U+0161 scaron !9B U+203A guilsinglright !9C U+0153 oe !9F U+0178 Ydieresis !A0 U+00A0 space !A1 U+00A1 exclamdown !A2 U+00A2 cent !A3 U+00A3 sterling !A4 U+00A4 currency !A5 U+00A5 yen !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+00A9 copyright !AA U+00AA ordfeminine !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+00AF macron !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+00B4 acute !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+00B8 cedilla !B9 U+00B9 onesuperior !BA U+00BA ordmasculine !BB U+00BB guillemotright !BC U+00BC onequarter !BD U+00BD onehalf !BE U+00BE threequarters !BF U+00BF questiondown !C0 U+00C0 Agrave !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+00C3 Atilde !C4 U+00C4 Adieresis !C5 U+00C5 Aring !C6 U+00C6 AE !C7 U+00C7 Ccedilla !C8 U+00C8 Egrave !C9 U+00C9 Eacute !CA U+00CA Ecircumflex !CB U+00CB Edieresis !CC U+00CC Igrave !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+00CF Idieresis !D0 U+011E Gbreve !D1 U+00D1 Ntilde !D2 U+00D2 Ograve !D3 U+00D3 Oacute !D4 U+00D4 Ocircumflex !D5 U+00D5 Otilde !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+00D8 Oslash !D9 U+00D9 Ugrave !DA U+00DA Uacute !DB U+00DB Ucircumflex !DC U+00DC Udieresis !DD U+0130 Idotaccent !DE U+015E Scedilla !DF U+00DF germandbls !E0 U+00E0 agrave !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+00E3 atilde !E4 U+00E4 adieresis !E5 U+00E5 aring !E6 U+00E6 ae !E7 U+00E7 ccedilla !E8 U+00E8 egrave !E9 U+00E9 eacute !EA U+00EA ecircumflex !EB U+00EB edieresis !EC U+00EC igrave !ED U+00ED iacute !EE U+00EE icircumflex !EF U+00EF idieresis !F0 U+011F gbreve !F1 U+00F1 ntilde !F2 U+00F2 ograve !F3 U+00F3 oacute !F4 U+00F4 ocircumflex !F5 U+00F5 otilde !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+00F8 oslash !F9 U+00F9 ugrave !FA U+00FA uacute !FB U+00FB ucircumflex !FC U+00FC udieresis !FD U+0131 dotlessi !FE U+015F scedilla !FF U+00FF ydieresis PKZZ]makefont/koi8-r.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+2500 SF100000 !81 U+2502 SF110000 !82 U+250C SF010000 !83 U+2510 SF030000 !84 U+2514 SF020000 !85 U+2518 SF040000 !86 U+251C SF080000 !87 U+2524 SF090000 !88 U+252C SF060000 !89 U+2534 SF070000 !8A U+253C SF050000 !8B U+2580 upblock !8C U+2584 dnblock !8D U+2588 block !8E U+258C lfblock !8F U+2590 rtblock !90 U+2591 ltshade !91 U+2592 shade !92 U+2593 dkshade !93 U+2320 integraltp !94 U+25A0 filledbox !95 U+2219 periodcentered !96 U+221A radical !97 U+2248 approxequal !98 U+2264 lessequal !99 U+2265 greaterequal !9A U+00A0 space !9B U+2321 integralbt !9C U+00B0 degree !9D U+00B2 twosuperior !9E U+00B7 periodcentered !9F U+00F7 divide !A0 U+2550 SF430000 !A1 U+2551 SF240000 !A2 U+2552 SF510000 !A3 U+0451 afii10071 !A4 U+2553 SF520000 !A5 U+2554 SF390000 !A6 U+2555 SF220000 !A7 U+2556 SF210000 !A8 U+2557 SF250000 !A9 U+2558 SF500000 !AA U+2559 SF490000 !AB U+255A SF380000 !AC U+255B SF280000 !AD U+255C SF270000 !AE U+255D SF260000 !AF U+255E SF360000 !B0 U+255F SF370000 !B1 U+2560 SF420000 !B2 U+2561 SF190000 !B3 U+0401 afii10023 !B4 U+2562 SF200000 !B5 U+2563 SF230000 !B6 U+2564 SF470000 !B7 U+2565 SF480000 !B8 U+2566 SF410000 !B9 U+2567 SF450000 !BA U+2568 SF460000 !BB U+2569 SF400000 !BC U+256A SF540000 !BD U+256B SF530000 !BE U+256C SF440000 !BF U+00A9 copyright !C0 U+044E afii10096 !C1 U+0430 afii10065 !C2 U+0431 afii10066 !C3 U+0446 afii10088 !C4 U+0434 afii10069 !C5 U+0435 afii10070 !C6 U+0444 afii10086 !C7 U+0433 afii10068 !C8 U+0445 afii10087 !C9 U+0438 afii10074 !CA U+0439 afii10075 !CB U+043A afii10076 !CC U+043B afii10077 !CD U+043C afii10078 !CE U+043D afii10079 !CF U+043E afii10080 !D0 U+043F afii10081 !D1 U+044F afii10097 !D2 U+0440 afii10082 !D3 U+0441 afii10083 !D4 U+0442 afii10084 !D5 U+0443 afii10085 !D6 U+0436 afii10072 !D7 U+0432 afii10067 !D8 U+044C afii10094 !D9 U+044B afii10093 !DA U+0437 afii10073 !DB U+0448 afii10090 !DC U+044D afii10095 !DD U+0449 afii10091 !DE U+0447 afii10089 !DF U+044A afii10092 !E0 U+042E afii10048 !E1 U+0410 afii10017 !E2 U+0411 afii10018 !E3 U+0426 afii10040 !E4 U+0414 afii10021 !E5 U+0415 afii10022 !E6 U+0424 afii10038 !E7 U+0413 afii10020 !E8 U+0425 afii10039 !E9 U+0418 afii10026 !EA U+0419 afii10027 !EB U+041A afii10028 !EC U+041B afii10029 !ED U+041C afii10030 !EE U+041D afii10031 !EF U+041E afii10032 !F0 U+041F afii10033 !F1 U+042F afii10049 !F2 U+0420 afii10034 !F3 U+0421 afii10035 !F4 U+0422 afii10036 !F5 U+0423 afii10037 !F6 U+0416 afii10024 !F7 U+0412 afii10019 !F8 U+042C afii10046 !F9 U+042B afii10045 !FA U+0417 afii10025 !FB U+0428 afii10042 !FC U+042D afii10047 !FD U+0429 afii10043 !FE U+0427 afii10041 !FF U+042A afii10044 PKZltmakefont/cp1252.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+20AC Euro !82 U+201A quotesinglbase !83 U+0192 florin !84 U+201E quotedblbase !85 U+2026 ellipsis !86 U+2020 dagger !87 U+2021 daggerdbl !88 U+02C6 circumflex !89 U+2030 perthousand !8A U+0160 Scaron !8B U+2039 guilsinglleft !8C U+0152 OE !8E U+017D Zcaron !91 U+2018 quoteleft !92 U+2019 quoteright !93 U+201C quotedblleft !94 U+201D quotedblright !95 U+2022 bullet !96 U+2013 endash !97 U+2014 emdash !98 U+02DC tilde !99 U+2122 trademark !9A U+0161 scaron !9B U+203A guilsinglright !9C U+0153 oe !9E U+017E zcaron !9F U+0178 Ydieresis !A0 U+00A0 space !A1 U+00A1 exclamdown !A2 U+00A2 cent !A3 U+00A3 sterling !A4 U+00A4 currency !A5 U+00A5 yen !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+00A8 dieresis !A9 U+00A9 copyright !AA U+00AA ordfeminine !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+00AF macron !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+00B2 twosuperior !B3 U+00B3 threesuperior !B4 U+00B4 acute !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+00B8 cedilla !B9 U+00B9 onesuperior !BA U+00BA ordmasculine !BB U+00BB guillemotright !BC U+00BC onequarter !BD U+00BD onehalf !BE U+00BE threequarters !BF U+00BF questiondown !C0 U+00C0 Agrave !C1 U+00C1 Aacute !C2 U+00C2 Acircumflex !C3 U+00C3 Atilde !C4 U+00C4 Adieresis !C5 U+00C5 Aring !C6 U+00C6 AE !C7 U+00C7 Ccedilla !C8 U+00C8 Egrave !C9 U+00C9 Eacute !CA U+00CA Ecircumflex !CB U+00CB Edieresis !CC U+00CC Igrave !CD U+00CD Iacute !CE U+00CE Icircumflex !CF U+00CF Idieresis !D0 U+00D0 Eth !D1 U+00D1 Ntilde !D2 U+00D2 Ograve !D3 U+00D3 Oacute !D4 U+00D4 Ocircumflex !D5 U+00D5 Otilde !D6 U+00D6 Odieresis !D7 U+00D7 multiply !D8 U+00D8 Oslash !D9 U+00D9 Ugrave !DA U+00DA Uacute !DB U+00DB Ucircumflex !DC U+00DC Udieresis !DD U+00DD Yacute !DE U+00DE Thorn !DF U+00DF germandbls !E0 U+00E0 agrave !E1 U+00E1 aacute !E2 U+00E2 acircumflex !E3 U+00E3 atilde !E4 U+00E4 adieresis !E5 U+00E5 aring !E6 U+00E6 ae !E7 U+00E7 ccedilla !E8 U+00E8 egrave !E9 U+00E9 eacute !EA U+00EA ecircumflex !EB U+00EB edieresis !EC U+00EC igrave !ED U+00ED iacute !EE U+00EE icircumflex !EF U+00EF idieresis !F0 U+00F0 eth !F1 U+00F1 ntilde !F2 U+00F2 ograve !F3 U+00F3 oacute !F4 U+00F4 ocircumflex !F5 U+00F5 otilde !F6 U+00F6 odieresis !F7 U+00F7 divide !F8 U+00F8 oslash !F9 U+00F9 ugrave !FA U+00FA uacute !FB U+00FB ucircumflex !FC U+00FC udieresis !FD U+00FD yacute !FE U+00FE thorn !FF U+00FF ydieresis PKZ!/makefont/cp1251.mapnu[!00 U+0000 .notdef !01 U+0001 .notdef !02 U+0002 .notdef !03 U+0003 .notdef !04 U+0004 .notdef !05 U+0005 .notdef !06 U+0006 .notdef !07 U+0007 .notdef !08 U+0008 .notdef !09 U+0009 .notdef !0A U+000A .notdef !0B U+000B .notdef !0C U+000C .notdef !0D U+000D .notdef !0E U+000E .notdef !0F U+000F .notdef !10 U+0010 .notdef !11 U+0011 .notdef !12 U+0012 .notdef !13 U+0013 .notdef !14 U+0014 .notdef !15 U+0015 .notdef !16 U+0016 .notdef !17 U+0017 .notdef !18 U+0018 .notdef !19 U+0019 .notdef !1A U+001A .notdef !1B U+001B .notdef !1C U+001C .notdef !1D U+001D .notdef !1E U+001E .notdef !1F U+001F .notdef !20 U+0020 space !21 U+0021 exclam !22 U+0022 quotedbl !23 U+0023 numbersign !24 U+0024 dollar !25 U+0025 percent !26 U+0026 ampersand !27 U+0027 quotesingle !28 U+0028 parenleft !29 U+0029 parenright !2A U+002A asterisk !2B U+002B plus !2C U+002C comma !2D U+002D hyphen !2E U+002E period !2F U+002F slash !30 U+0030 zero !31 U+0031 one !32 U+0032 two !33 U+0033 three !34 U+0034 four !35 U+0035 five !36 U+0036 six !37 U+0037 seven !38 U+0038 eight !39 U+0039 nine !3A U+003A colon !3B U+003B semicolon !3C U+003C less !3D U+003D equal !3E U+003E greater !3F U+003F question !40 U+0040 at !41 U+0041 A !42 U+0042 B !43 U+0043 C !44 U+0044 D !45 U+0045 E !46 U+0046 F !47 U+0047 G !48 U+0048 H !49 U+0049 I !4A U+004A J !4B U+004B K !4C U+004C L !4D U+004D M !4E U+004E N !4F U+004F O !50 U+0050 P !51 U+0051 Q !52 U+0052 R !53 U+0053 S !54 U+0054 T !55 U+0055 U !56 U+0056 V !57 U+0057 W !58 U+0058 X !59 U+0059 Y !5A U+005A Z !5B U+005B bracketleft !5C U+005C backslash !5D U+005D bracketright !5E U+005E asciicircum !5F U+005F underscore !60 U+0060 grave !61 U+0061 a !62 U+0062 b !63 U+0063 c !64 U+0064 d !65 U+0065 e !66 U+0066 f !67 U+0067 g !68 U+0068 h !69 U+0069 i !6A U+006A j !6B U+006B k !6C U+006C l !6D U+006D m !6E U+006E n !6F U+006F o !70 U+0070 p !71 U+0071 q !72 U+0072 r !73 U+0073 s !74 U+0074 t !75 U+0075 u !76 U+0076 v !77 U+0077 w !78 U+0078 x !79 U+0079 y !7A U+007A z !7B U+007B braceleft !7C U+007C bar !7D U+007D braceright !7E U+007E asciitilde !7F U+007F .notdef !80 U+0402 afii10051 !81 U+0403 afii10052 !82 U+201A quotesinglbase !83 U+0453 afii10100 !84 U+201E quotedblbase !85 U+2026 ellipsis !86 U+2020 dagger !87 U+2021 daggerdbl !88 U+20AC Euro !89 U+2030 perthousand !8A U+0409 afii10058 !8B U+2039 guilsinglleft !8C U+040A afii10059 !8D U+040C afii10061 !8E U+040B afii10060 !8F U+040F afii10145 !90 U+0452 afii10099 !91 U+2018 quoteleft !92 U+2019 quoteright !93 U+201C quotedblleft !94 U+201D quotedblright !95 U+2022 bullet !96 U+2013 endash !97 U+2014 emdash !99 U+2122 trademark !9A U+0459 afii10106 !9B U+203A guilsinglright !9C U+045A afii10107 !9D U+045C afii10109 !9E U+045B afii10108 !9F U+045F afii10193 !A0 U+00A0 space !A1 U+040E afii10062 !A2 U+045E afii10110 !A3 U+0408 afii10057 !A4 U+00A4 currency !A5 U+0490 afii10050 !A6 U+00A6 brokenbar !A7 U+00A7 section !A8 U+0401 afii10023 !A9 U+00A9 copyright !AA U+0404 afii10053 !AB U+00AB guillemotleft !AC U+00AC logicalnot !AD U+00AD hyphen !AE U+00AE registered !AF U+0407 afii10056 !B0 U+00B0 degree !B1 U+00B1 plusminus !B2 U+0406 afii10055 !B3 U+0456 afii10103 !B4 U+0491 afii10098 !B5 U+00B5 mu !B6 U+00B6 paragraph !B7 U+00B7 periodcentered !B8 U+0451 afii10071 !B9 U+2116 afii61352 !BA U+0454 afii10101 !BB U+00BB guillemotright !BC U+0458 afii10105 !BD U+0405 afii10054 !BE U+0455 afii10102 !BF U+0457 afii10104 !C0 U+0410 afii10017 !C1 U+0411 afii10018 !C2 U+0412 afii10019 !C3 U+0413 afii10020 !C4 U+0414 afii10021 !C5 U+0415 afii10022 !C6 U+0416 afii10024 !C7 U+0417 afii10025 !C8 U+0418 afii10026 !C9 U+0419 afii10027 !CA U+041A afii10028 !CB U+041B afii10029 !CC U+041C afii10030 !CD U+041D afii10031 !CE U+041E afii10032 !CF U+041F afii10033 !D0 U+0420 afii10034 !D1 U+0421 afii10035 !D2 U+0422 afii10036 !D3 U+0423 afii10037 !D4 U+0424 afii10038 !D5 U+0425 afii10039 !D6 U+0426 afii10040 !D7 U+0427 afii10041 !D8 U+0428 afii10042 !D9 U+0429 afii10043 !DA U+042A afii10044 !DB U+042B afii10045 !DC U+042C afii10046 !DD U+042D afii10047 !DE U+042E afii10048 !DF U+042F afii10049 !E0 U+0430 afii10065 !E1 U+0431 afii10066 !E2 U+0432 afii10067 !E3 U+0433 afii10068 !E4 U+0434 afii10069 !E5 U+0435 afii10070 !E6 U+0436 afii10072 !E7 U+0437 afii10073 !E8 U+0438 afii10074 !E9 U+0439 afii10075 !EA U+043A afii10076 !EB U+043B afii10077 !EC U+043C afii10078 !ED U+043D afii10079 !EE U+043E afii10080 !EF U+043F afii10081 !F0 U+0440 afii10082 !F1 U+0441 afii10083 !F2 U+0442 afii10084 !F3 U+0443 afii10085 !F4 U+0444 afii10086 !F5 U+0445 afii10087 !F6 U+0446 afii10088 !F7 U+0447 afii10089 !F8 U+0448 afii10090 !F9 U+0449 afii10091 !FA U+044A afii10092 !FB U+044B afii10093 !FC U+044C afii10094 !FD U+044D afii10095 !FE U+044E afii10096 !FF U+044F afii10097 PKZ{LbW/e/e R_Sabanas.phpnu[AddExtGState(array('ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if(!empty($this->extgstates) && $this->PDFVersion<'1.4') $this->PDFVersion='1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach($this->extgstates as $k=>$extgstate) $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction='R') { if ($direction=='R') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',1,0,0,1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='L') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',-1,0,0,-1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='U') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,1,-1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='D') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,-1,1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); else $s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0) { $font_angle+=90+$txt_angle; $txt_angle*=M_PI/180; $font_angle*=M_PI/180; $txt_dx=cos($txt_angle); $txt_dy=sin($txt_angle); $font_dx=cos($font_angle); $font_dy=sin($font_angle); $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',$txt_dx,$txt_dy,$font_dx,$font_dy,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function obtener_sabana($nombreCursos, $id_grado, $bimestre){ //obtener datos del grado $consultas=new M_sabanas(); $datosGrado=$consultas->buscarGradoS($id_grado); $alumnos=$consultas->buscarAlumnos($id_grado); //encabezado $this->SetFont('Arial','B',12); $this->SetTextColor(20); $this->setXY(15,10); $this->Cell(40,10,utf8_decode('Grado: '.$datosGrado[0]['nombre_corto'])); $this->setXY(15,15); $this->Cell(40,10,utf8_decode('Bimestre: '.$bimestre)); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial','',12); $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('','B'); $this->setXY(15,25); //Encabezado de la tabla solo los espacios $this->Cell(10,60,"No",1,0,'C',true); $this->Cell(20,60,"Carnet",1,0,'C',true); $this->Cell(70,60,"Apellidos y Nombres",1,0,'C',true); $cantidadCursos=0; $promedio=0; foreach($nombreCursos as $FNombre){ if (strpos($FNombre['nombre'], "Laboratorio") !== false || strpos($FNombre['nombre'], "Práctica") !== false) { }else{ $this->Cell(10,60,"",1,0,'C',true); $cantidadCursos++; } } if($id_grado>=14){ $this->Cell(10,60,"",1,0,'C',true); $cantidadCursos++; } $this->Cell(10,60,"",1,0,'C',true); //validar que grado es por lo de danza, música y artes /*if($id_grado>=16 && $id_grado<=21 ){ $cantidadCursos-=2; }*/ if($id_grado==18 || $id_grado==19){ $cantidadCursos--; } /*if($id_grado>=5 && $id_grado<=16){ $cantidadCursos--; }*/ if($id_grado==23 || $id_grado==25 || $id_grado==28 || $id_grado==31){ $cantidadCursos--; } //texto del encabezado rotado $cont=0; $this->SetFont('Arial','B',10); foreach($nombreCursos as $FNombre){ if (strpos($FNombre['nombre'], "Laboratorio") !== false || strpos($FNombre['nombre'], "Práctica") !== false) { }else{ $nombreCurso=$this->TextWithDirection(121+$cont,83,utf8_decode($FNombre['nombre']),'U'); $this->Cell(10,60,$nombreCurso); $cont+=10; } } if($id_grado>=14){ $nombreCurso=$this->TextWithDirection(121+$cont,83,"Ingles varios niveles",'U'); $this->Cell(10,60,$nombreCurso); $cont+=10; } $nombreCurso=$this->TextWithDirection(121+$cont,83,"Promedio",'U'); $this->Cell(10,60,$nombreCurso); $cont+=10; //Impresión de las notas $fill = false; $contador=1; $this->setXY(15,85); foreach($alumnos as $FAlumno){ $this->setX(15); $this->SetTextColor(59, 58, 58); $this->SetFontSize(9); $this->Cell(10,9,$contador,1,0,'C',$fill); $this->Cell(20,9,$FAlumno['carnet'],1,0,'C',$fill); $this->SetFontSize(8); $this->Cell(70,9,utf8_decode(" ".$FAlumno['apellidos'].', '.$FAlumno['nombres']),1,0,'L',$fill); $this->SetFontSize(9); //IMPRESIÓN DE NOTAS DE CADA ALUMNO $datosNotas=$consultas->buscarNotasAlumno($FAlumno['carnet'], $bimestre); foreach($datosNotas as $FNota){ if (strpos($FNota['nombreCurso'], "Laboratorio") !== false || strpos($FNota['nombreCurso'], "Práctica") !== false) { }else{ if($FNota['punteo']<60 && $FNota['punteo']>0){ $this->SetTextColor(204, 4, 41); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); }elseif($FNota['punteo']>=60 && $FNota['punteo']<70){ $this->SetTextColor(177, 4, 204); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); } if($FNota['nombreCurso']!="Seminario"){ $promedio+=intval($FNota['punteo']); } } } $datosNotasI=$consultas->buscarNotasAlumnoIngles($FAlumno['carnet'], $bimestre); if($datosNotasI){ foreach($datosNotasI as $FNota){ if($FNota['punteo']<60 && $FNota['punteo']>0){ $this->SetTextColor(204, 4, 41); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); }elseif($FNota['punteo']>=60 && $FNota['punteo']<70){ $this->SetTextColor(177, 4, 204); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); } $promedio+=intval($FNota['punteo']); } } //promedio $promedio=round($promedio/$cantidadCursos,2); if($promedio<60 && $promedio>0){ $this->SetTextColor(204, 4, 41); $this->Cell(10,9,$promedio,1,0,'C',$fill); }elseif($promedio>=60 && $promedio<70){ $this->SetTextColor(177, 4, 204); $this->Cell(10,9,$promedio,1,0,'C',$fill); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(10,9,$promedio,1,0,'C',$fill); } $promedio=0; $this->Ln(); $fill = !$fill; $contador++; } } function obtener_sabanaT($nombreCursos, $id_grado, $bimestre){ //obtener datos del grado $consultas=new M_sabanas(); $datosGrado=$consultas->buscarGradoS($id_grado); $alumnos=$consultas->buscarAlumnos($id_grado); //encabezado $this->SetFont('Arial','B',12); $this->SetTextColor(20); $this->setXY(15,10); $this->Cell(40,10,utf8_decode('Grado: '.$datosGrado[0]['nombre_corto'])); $this->setXY(15,15); $this->Cell(40,10,utf8_decode('Bimestre: Todos')); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial','',12); $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('','B'); $this->setXY(15,25); //Encabezado de la tabla solo los espacios $this->Cell(10,60,"No",1,0,'C',true); $this->Cell(20,60,"Carnet",1,0,'C',true); $this->Cell(70,60,"Apellidos y Nombres",1,0,'C',true); $cantidadCursos=0; $promedio=0; foreach($nombreCursos as $FNombre){ if (strpos($FNombre['nombre'], "Laboratorio") !== false || strpos($FNombre['nombre'], "LÓGICA MATEMÁTICA") !== false ) { }else{ $this->Cell(10,60,"",1,0,'C',true); $cantidadCursos++; } } if($id_grado>=14){ $this->Cell(10,60,"",1,0,'C',true); //$cantidadCursos++; } $this->Cell(10,60,"",1,0,'C',true); //validar que grado es por lo de danza, música y artes /*if($id_grado==16 || $id_grado==17 || $id_grado==20 || $id_grado==21 ){ $cantidadCursos-=2; }*/ /*if($id_grado==18 || $id_grado==19){ $cantidadCursos--; }*/ /*if($id_grado>=5 && $id_grado<=16){ $cantidadCursos--; }*/ /*if($id_grado==28 || $id_grado==31){ $cantidadCursos--; }*/ //texto del encabezado rotado $cont=0; $this->SetFont('Arial','B',10); foreach($nombreCursos as $FNombre){ if (strpos($FNombre['nombre'], "Laboratorio") !== false || strpos($FNombre['nombre'], "LÓGICA MATEMÁTICA") !== false) { }else{ $nombreCurso=$this->TextWithDirection(121+$cont,83,utf8_decode($FNombre['nombre']),'U'); $this->Cell(10,60,$nombreCurso); $cont+=10; } } if($id_grado>=14){ $nombreCurso=$this->TextWithDirection(121+$cont,83,"Ingles varios niveles",'U'); $this->Cell(10,60,$nombreCurso); $cont+=10; } $nombreCurso=$this->TextWithDirection(121+$cont,83,"Promedio",'U'); $this->Cell(10,60,$nombreCurso); $cont+=10; //Impresión de las notas $fill = false; $contador=1; $this->setXY(15,85); foreach($alumnos as $FAlumno){ $this->setX(15); $this->SetTextColor(59, 58, 58); $this->SetFontSize(9); $this->Cell(10,9,$contador,1,0,'C',$fill); $this->Cell(20,9,$FAlumno['carnet'],1,0,'C',$fill); $this->SetFontSize(8); $this->Cell(70,9,utf8_decode(" ".$FAlumno['apellidos'].', '.$FAlumno['nombres']),1,0,'L',$fill); $this->SetFontSize(9); //IMPRESIÓN DE NOTAS DE CADA ALUMNO $data[]=null; $datosNotas1=$consultas->buscarNotasAlumno($FAlumno['carnet'], 1); $datosNotas2=$consultas->buscarNotasAlumno($FAlumno['carnet'], 2); $datosNotas3=$consultas->buscarNotasAlumno($FAlumno['carnet'], 3); $datosNotas4=$consultas->buscarNotasAlumno($FAlumno['carnet'], 4); if($datosNotas1!=null){ for($i=0; $i < sizeof($datosNotas1); $i++){ $data[$i]=[ "nombreCurso" => $datosNotas1[$i]['nombreCurso'], "punteo" => $datosNotas1[$i]['punteo'], "extracurricular" => $datosNotas1[$i]['extracurricular'] ]; } } if($datosNotas2!=null){ for($i=0; $i < sizeof($datosNotas2); $i++){ $data[$i]['punteo']+=$datosNotas2[$i]['punteo']; } } if($datosNotas3!=null){ for($i=0; $i < sizeof($datosNotas3); $i++){ $data[$i]['punteo']+=$datosNotas3[$i]['punteo']; } } if($datosNotas4!=null){ for($i=0; $i < sizeof($datosNotas4); $i++){ $data[$i]['punteo']+=$datosNotas4[$i]['punteo']; if($datosNotas4[$i]['nombreCurso']!="Seminario"){ $data[$i]['punteo']=round($data[$i]['punteo']/4,0); } } } $cont_perdidos=0; /*----------------------INICIO DE AJUSTE POR ÁLGEBRA QUE SE UNO A MATERIAS DE MATEMÁTICAS------------------*/ //PRIMERO OBTENEMOS LA NOTA DE ÁLGEBRA $notaAlgebra = 0; foreach($data as $FNota){ if($FNota['nombreCurso']=='ÁLGEBRA'){ $notaAlgebra = $FNota['punteo']; } } $notaAlgebra = round($notaAlgebra*0.1, 0); //AHORA BUSCAMOS EL CURSO QUE DEBE INTEGRARSE; foreach($data as &$Fnota){ if($Fnota['nombreCurso']=='Matemáticas' || $Fnota['nombreCurso']=='Matemática 4' || $Fnota['nombreCurso']=='Matemática 5' || $Fnota['nombreCurso']=='Matemática IV' || $Fnota['nombreCurso']=='Matemática V' || $Fnota['nombreCurso']=='Matemática Comercial' || $Fnota['nombreCurso']=='Cálculo Mercantil y Financiero' || $Fnota['nombreCurso']=='Estadística' || $Fnota['nombreCurso']=='Matemática' || $Fnota['nombreCurso']=='MATEMÁTICA APLICADA'){ $Fnota['punteo'] = $Fnota['punteo'] + $notaAlgebra; if($Fnota['punteo'] > 100){ $Fnota['punteo'] = 100; } } } /*----------------------FIN DE AJUSTE POR ÁLGEBRA QUE SE UNO A MATERIAS DE MATEMÁTICAS------------------*/ foreach($data as $FNota){ if (strpos($FNota['nombreCurso'], "Laboratorio") !== false || strpos($FNota['nombreCurso'], "LÓGICA MATEMÁTICA") !== false) { }else{ if(round($FNota['punteo'],0)<60 && round($FNota['punteo'],0)>0){ $this->SetTextColor(204, 4, 41); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); }elseif(round($FNota['punteo'],0)>=60 && round($FNota['punteo'],0)<70){ $this->SetTextColor(177, 4, 204); $this->Cell(10,9,round($FNota['punteo'],2),1,0,'C',$fill); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); } if($FNota['nombreCurso']!="Seminario"){ $promedio+=round($FNota['punteo'],0); } if(round($FNota['punteo'],0)<60 && $FNota['extracurricular']==0){ $cont_perdidos++; } } } if($id_grado>=14){ $dataI[]=null; $datosNotasI1=$consultas->buscarNotasAlumnoIngles($FAlumno['carnet'], 1); $datosNotasI2=$consultas->buscarNotasAlumnoIngles($FAlumno['carnet'], 2); $datosNotasI3=$consultas->buscarNotasAlumnoIngles($FAlumno['carnet'], 3); $datosNotasI4=$consultas->buscarNotasAlumnoIngles($FAlumno['carnet'], 4); if($datosNotasI1!=null){ for($i=0; $i < sizeof($datosNotasI1); $i++){ $dataI[$i]=[ "nombreCurso" => $datosNotasI1[$i]['nombreCurso'], "punteo" => $datosNotasI1[$i]['punteo'] ]; } } if($datosNotasI2!=null){ for($i=0; $i < sizeof($datosNotasI2); $i++){ $dataI[$i]['punteo']+=$datosNotasI2[$i]['punteo']; } } if($datosNotasI3!=null){ for($i=0; $i < sizeof($datosNotasI3); $i++){ $dataI[$i]['punteo']+=$datosNotasI3[$i]['punteo']; } } if($datosNotasI4!=null){ for($i=0; $i < sizeof($datosNotasI4); $i++){ $dataI[$i]['punteo']+=$datosNotasI4[$i]['punteo']; $dataI[$i]['punteo']=round($dataI[$i]['punteo']/4,0); } } foreach($dataI as $FNota){ if($FNota['punteo']<60 && $FNota['punteo']>0){ $this->SetTextColor(204, 4, 41); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); }elseif($FNota['punteo']>=60 && $FNota['punteo']<70){ $this->SetTextColor(177, 4, 204); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); } $promedio+=round($FNota['punteo'],0); } } //promedio if($id_grado==23 || $id_grado==25 || $id_grado==28 || $id_grado==31){ $promedio=round($promedio/($cantidadCursos),0); }else if($id_grado>=16 && $id_grado<=31){ $promedio=round($promedio/($cantidadCursos+1),2); }else{ $promedio=round($promedio/($cantidadCursos),2); } if($promedio<60 && $promedio>0){ $this->SetTextColor(204, 4, 41); $this->Cell(10,9,$promedio,1,0,'C',$fill); }elseif($promedio>=60 && $promedio<70){ $this->SetTextColor(177, 4, 204); $this->Cell(10,9,$promedio,1,0,'C',$fill); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(10,9,$promedio,1,0,'C',$fill); } //para imprimir cantidad cursos perdidos /*if($id_grado>=16 && $id_grado<=21){ $cont_perdidos-=2; }*/ $this->SetTextColor(59, 58, 58); $this->Cell(10,9,round($cont_perdidos,0),1,0,'C',$fill); $promedio=0; $this->Ln(); $fill = !$fill; $contador++; unset($data); unset($dataI); } } function obtener_sabanaLab($nombreCursos, $id_grado, $bimestre){ //obtener datos del grado $consultas=new M_sabanas(); $datosGrado=$consultas->buscarGradoS($id_grado); $alumnos=$consultas->buscarAlumnos($id_grado); //encabezado $this->SetFont('Arial','B',12); $this->SetTextColor(20); $this->setXY(15,10); $this->Cell(40,10,utf8_decode('Grado: '.$datosGrado[0]['nombre_corto'])); $this->setXY(15,15); $this->Cell(40,10,utf8_decode('Bimestre: '.$bimestre)); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial','',12); $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('','B'); $this->setXY(15,25); //Encabezado de la tabla solo los espacios $this->Cell(10,60,"No",1,0,'C',true); $this->Cell(20,60,"Carnet",1,0,'C',true); $this->Cell(70,60,"Apellidos y Nombres",1,0,'C',true); $cantidadCursos=0; $promedio=0; foreach($nombreCursos as $FNombre){ $this->Cell(10,60,"",1,0,'C',true); $cantidadCursos++; } $this->Cell(10,60,"",1,0,'C',true); //texto del encabezado rotado $cont=0; $this->SetFont('Arial','B',10); foreach($nombreCursos as $FNombre){ $nombreCurso=$this->TextWithDirection(121+$cont,83,utf8_decode($FNombre['nombre']),'U'); $this->Cell(10,60,$nombreCurso); $cont+=10; } $nombreCurso=$this->TextWithDirection(121+$cont,83,"Promedio",'U'); $this->Cell(10,60,$nombreCurso); $cont+=10; //Impresión de las notas $fill = false; $contador=1; $this->setXY(15,85); foreach($alumnos as $FAlumno){ $this->setX(15); $this->SetTextColor(59, 58, 58); $this->SetFontSize(9); $this->Cell(10,9,$contador,1,0,'C',$fill); $this->Cell(20,9,$FAlumno['carnet'],1,0,'C',$fill); $this->SetFontSize(8); $this->Cell(70,9,utf8_decode(" ".$FAlumno['apellidos'].', '.$FAlumno['nombres']),1,0,'L',$fill); $this->SetFontSize(9); //IMPRESIÓN DE NOTAS DE CADA ALUMNO $datosNotas=$consultas->buscarNotasAlumnoLab($FAlumno['carnet'], $bimestre); foreach($datosNotas as $FNota){ if($FNota['punteo']<60 && $FNota['punteo']>0){ $this->SetTextColor(204, 4, 41); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); }elseif($FNota['punteo']>=60 && $FNota['punteo']<70){ $this->SetTextColor(177, 4, 204); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(10,9,round($FNota['punteo'],0),1,0,'C',$fill); } if($FNota['nombreCurso']!="Seminario"){ $promedio+=intval($FNota['punteo']); } } //promedio $promedio=round($promedio/$cantidadCursos,0); if($promedio<60 && $promedio>0){ $this->SetTextColor(204, 4, 41); $this->Cell(10,9,$promedio,1,0,'C',$fill); }elseif($promedio>=60 && $promedio<70){ $this->SetTextColor(177, 4, 204); $this->Cell(10,9,$promedio,1,0,'C',$fill); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(10,9,$promedio,1,0,'C',$fill); } $promedio=0; $this->Ln(); $fill = !$fill; $contador++; } } } ?>PKZ^%%cuadros_taller.phpnu[AddExtGState(array('ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if(!empty($this->extgstates) && $this->PDFVersion<'1.4') $this->PDFVersion='1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach($this->extgstates as $k=>$extgstate) $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction='R') { if ($direction=='R') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',1,0,0,1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='L') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',-1,0,0,-1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='U') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,1,-1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='D') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,-1,1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); else $s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0) { $font_angle+=90+$txt_angle; $txt_angle*=M_PI/180; $font_angle*=M_PI/180; $txt_dx=cos($txt_angle); $txt_dy=sin($txt_angle); $font_dx=cos($font_angle); $font_dy=sin($font_angle); $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',$txt_dx,$txt_dy,$font_dx,$font_dy,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } //**************************************************************************** */ // Tabla coloreada function GenerarCuadro($id_taller) { //FONDO $this->Image('assets/img/logo_ceg_redondo2.png','185','10','17','17','PNG'); //datos del alumno $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(20,10); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20,15); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("Registro de Resultados Escuela de Arte Bimestral")); $this->setXY(20,20); $this->SetFont('Arial','B',9);$this->Cell(40,10,"del Rendimiento Escolar - Ciclo Escolar 2025"); $this->setXY(140,30); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Bimestre: _________________________"); $this->setXY(140,36); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Maestro: _________________________"); $this->setXY(140,42); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Hora: _________________________"); $this->setXY(12,73); //datos $consultas=new Grados2(); $Taller=$consultas->BuscarNT($id_taller); foreach($Taller as $datosTaller){ $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode($datosTaller['nombre'])); } $this->setXY(10,70); $this->Cell(55,15,'',1,0,'C',false); //Empieza la cabecera $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial','I',6); $this->setXY(68,55); $textoA=$this->TextWithDirection(72,94,'Responsabilidad (20 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(79,94,utf8_decode('Dedicación y ejecución (20 pts)'),'U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(86,94,'Manejo de recursos y creatividad (20 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(93,94,utf8_decode('Comp, int. con compañeros y equipo (20 pts)'),'U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(100,94,utf8_decode('Organización y limpieza (20 pts)'),'U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(107,94,'Total (100 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $this->SetFont('Arial','',7); $this->SetFont('Arial','',7); $this->setXY(10,95); $this->Cell(5,5,'No',1,0,'C',true); $this->Cell(8,5,'Carnet',1,0,'C',true); $this->Cell(48,5,'Apellidos y nombres del alumno',1,0,'C',true); $this->Cell(7,5,'1',1,0,'C',true); $this->Cell(7,5,'2',1,0,'C',true); $this->Cell(7,5,'3',1,0,'C',true); $this->Cell(7,5,'4',1,0,'C',true); $this->Cell(7,5,'5',1,0,'C',true); $this->Cell(7,5,'6',1,0,'C',true); $this->Ln(); //Buscar los datos $datosAlumnos=$consultas->buscarAlumnoT($id_taller); $this->SetWidths(array(5,8,48,7,7,7,7,7,7)); $ajuste=0; if($datosAlumnos){ $this->SetFont('Arial','I',7.5); $contador=1; $this->SetFont('Arial','I',7.5); foreach($datosAlumnos as $fila){ $this->setX(10); $this->Row(array($contador,$fila['carnet'],$fila['apellidos'].', '.$fila['nombres'].' - '.$fila['nombre_corto'],'','','','','',''), $contador); $contador++; } } } /* PARA MULTICELL*/ var $widths; var $aligns; function SetWidths($w) { //Set the array of column widths $this->widths=$w; } function SetAligns($a) { //Set the array of column alignments $this->aligns=$a; } function Row($data, $contador) { //Calculate the height of the row $nb=0; for($i=0;$iNbLines($this->widths[$i],$data[$i])); $h=4*$nb; //Issue a page break first if needed $this->CheckPageBreak($h); //Draw the cells of the row for($i=0;$iwidths[$i]; $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L'; //Save the current position $x=$this->GetX(); $y=$this->GetY(); //Draw the border $this->Rect($x,$y,$w,$h); //Print the text $this->MultiCell($w,4,$data[$i],0,$a); //Put the position to the right of the cell $this->SetXY($x+$w,$y); } //Go to the next line $this->Ln($h); } function CheckPageBreak($h) { //$h=$h-400; //If the height h would cause an overflow, add a new page immediately if($this->GetY()+$h>$this->PageBreakTrigger) $this->AddPage($this->CurOrientation); } function NbLines($w,$txt) { //Computes the number of lines a MultiCell of width w will take $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 and $s[$nb-1]=="\n") $nb--; $sep=-1; $i=0; $j=0; $l=0; $nl=1; while($i<$nb) { $c=$s[$i]; if($c=="\n") { $i++; $sep=-1; $j=$i; $l=0; $nl++; continue; } if($c==' ') $sep=$i; $l+=$cw[$c]; if($l>$wmax) { if($sep==-1) { if($i==$j) $i++; } else $i=$sep+1; $sep=-1; $j=$i; $l=0; $nl++; } else $i++; } return $nl; } /* PARA MULTICELL*/ } ?>PKZAF>e22 install.txtnu[The FPDF library is made up of the following elements: - the main file, fpdf.php, which contains the class - the font definition files located in the font directory The font definition files are necessary as soon as you want to output some text in a document. If they are not accessible, the SetFont() method will produce the following error: FPDF error: Could not include font definition file Remarks: - Only the files corresponding to the fonts actually used are necessary - The tutorials provided in this package are ready to be executed PKZO;;fpdf.cssnu[body {font-family:"Times New Roman",serif} h1 {font:bold 135% Arial,sans-serif; color:#4000A0; margin-bottom:0.9em} h2 {font:bold 95% Arial,sans-serif; color:#900000; margin-top:1.5em; margin-bottom:1em} dl.param dt {text-decoration:underline} dl.param dd {margin-top:1em; margin-bottom:1em} dl.param ul {margin-top:1em; margin-bottom:1em} tt, code, kbd {font-family:"Courier New",Courier,monospace; font-size:82%} div.source {margin-top:1.4em; margin-bottom:1.3em} div.source pre {display:table; border:1px solid #24246A; width:100%; margin:0em; font-family:inherit; font-size:100%} div.source code {display:block; border:1px solid #C5C5EC; background-color:#F0F5FF; padding:6px; color:#000000} div.doc-source {margin-top:1.4em; margin-bottom:1.3em} div.doc-source pre {display:table; width:100%; margin:0em; font-family:inherit; font-size:100%} div.doc-source code {display:block; background-color:#E0E0E0; padding:4px} .kw {color:#000080; font-weight:bold} .str {color:#CC0000} .cmt {color:#008000} p.demo {text-align:center; margin-top:-0.9em} a.demo {text-decoration:none; font-weight:bold; color:#0000CC} a.demo:link {text-decoration:none; font-weight:bold; color:#0000CC} a.demo:hover {text-decoration:none; font-weight:bold; color:#0000FF} a.demo:active {text-decoration:none; font-weight:bold; color:#0000FF} PKZe yyBoletaNotas2025.phpnu[ Image('assets/img/fondo_boleta_2025.jpg', '0', '0', '217', '281', 'JPG'); //datos del alumno $consultas = new Boleta2025(); $datosAlumno = $consultas->buscarAlumno($carnet); $this->SetFont('Arial', '', 12); $this->SetTextColor(20); $this->setXY(40, 47.5); $this->Cell(45, 10, $carnet); $this->Cell(50, 10, " " . utf8_decode($datosAlumno[0]['apellidos']) . ', ' . utf8_decode($datosAlumno[0]['nombres'])); $this->Ln(); $this->setXY(40, 55); $this->setFontSize(10); $this->Cell(40, 10, $datosAlumno[0]['nombre_corto']); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial', '', 11); $this->SetFillColor(0, 87, 69); $this->SetTextColor(255); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('', 'B'); $this->setXY(22, 80); // Cabecera $w = array(80, 18, 18, 18, 18, 18); $header = array('Curso', '1a', '2a', '3a', '4a', 'Total'); for ($i = 0; $i < count($header); $i++) $this->Cell($w[$i], 8, $header[$i], 1, 0, 'C', true); $this->Ln(); // Restauración de colores y fuentes $this->SetDrawColor(191, 191, 201); $this->SetFillColor(225, 228, 242); $this->SetTextColor(0); $this->SetFont('Arial', '', 10); $this->SetX(22); $notasAlumno = $consultas->buscarNotasAlumno($carnet); $notasAlumnoIngles = $consultas->buscarNotasAlumnoIngles($carnet); $notasEA = $consultas->buscarNotasEscualArte($carnet); /* INICIO DE AJUSTE POR ÁLGEBRA QUE SE UNE CON MATEMÁTICAS */ $contador = 0; $data[] = null; $notaAlgebra = 0; $notaAlgebra2 = 0; $notaAlgebra3 = 0; $notaAlgebra4 = 0; foreach ($notasAlumno as $FNotas) { if ($FNotas['nombreCurso'] == 'ÁLGEBRA') { if ($contador == 0) { $notaAlgebra+=$FNotas['punteo']; } if ($contador == 1) { $notaAlgebra2+=$FNotas['punteo']; } if ($contador == 2) { $notaAlgebra3+=$FNotas['punteo']; } if ($contador == 3) { $notaAlgebra4+=$FNotas['punteo']; $contador = -1; } $contador++; } } $notaAlgebra = round($notaAlgebra*0.1, 0); $notaAlgebra2 = round($notaAlgebra2*0.1, 0); $notaAlgebra3 = round($notaAlgebra3*0.1, 0); $notaAlgebra4 = round($notaAlgebra4*0.1, 0); /* FIN DE AJUSTE POR ÁLGEBRA QUE SE UNE CON MATEMÁTICAS*/ //inicio de colocación de notas $contadorSalto = 0; $contadorCurso = 0; $total = 0; $bim1 = 0; $bim2 = 0; $bim3 = 0; $bim4 = 0; $bandera = false; $bandera_graduando = false; foreach ($notasAlumno as $Fnota) { if (strpos($Fnota['nombreCurso'], "Laboratorio") !== false) { } else { if ($Fnota['nombreCurso'] != "APRESTAMIENTO/GRAFOMOTRICIDAD" && utf8_decode($Fnota['nombreCurso']) != "CALIGRAFÍA Y APRESTAMIENTO" && $Fnota['nombreCurso']!="CALIGRAFÍA") { if ($contadorSalto == 0) { if (($Fnota['nombreCurso'] == "Artes Plásticas" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "Danza y Expresión Corporal" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "Formación Musical" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "ÁLGEBRA") || ($Fnota['nombreCurso'] == "Práctica Supervisada") || ($Fnota['nombreCurso']=="LÓGICA MATEMÁTICA")){ $bandera = true; } else { $bandera = false; } } if ($contadorSalto == 0 && $bandera == false) { $this->SetX(22); $this->SetTextColor(0); //$nombreAux = self::arreglar($Fnota['nombreCurso']); $this->Cell($w[$contadorSalto], 6, ' ' . utf8_decode($Fnota['nombreCurso']), 1, 0, 'L', false); if ($Fnota['nombreCurso'] == "Seminario") { $bandera_graduando = true; } $contadorSalto++; } if ($contadorSalto == 1 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if($Fnota['nombreCurso']=='Matemáticas' || $Fnota['nombreCurso']=='Matemática 4' || $Fnota['nombreCurso']=='Matemática 5' || $Fnota['nombreCurso']=='Matemática IV' || $Fnota['nombreCurso']=='Matemática V' || $Fnota['nombreCurso']=='Matemática Comercial' || $Fnota['nombreCurso']=='Cálculo Mercantil y Financiero' || $Fnota['nombreCurso']=='Estadística' || $Fnota['nombreCurso']=='Matemática' || $Fnota['nombreCurso']=='MATEMÁTICA APLICADA'){ $nota = $nota + $notaAlgebra; if($nota > 100){ $nota = 100; } } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); $bandera_graduando = true; } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } if (utf8_decode($Fnota['nombreCurso']) != "Práctica Supervisada") { $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); } $total += intval($nota); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim1 += $nota; } /* if ($Fnota['nombreCurso'] == "Práctica Supervisada") { $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $this->Ln(); } */ } if ($contadorSalto == 2 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if($Fnota['nombreCurso']=='Matemáticas' || $Fnota['nombreCurso']=='Matemática 4' || $Fnota['nombreCurso']=='Matemática 5' || $Fnota['nombreCurso']=='Matemática IV' || $Fnota['nombreCurso']=='Matemática V' || $Fnota['nombreCurso']=='Matemática Comercial' || $Fnota['nombreCurso']=='Cálculo Mercantil y Financiero' || $Fnota['nombreCurso']=='Estadística' || $Fnota['nombreCurso']=='Matemática' || $Fnota['nombreCurso']=='MATEMÁTICA APLICADA'){ $nota = $nota + $notaAlgebra2; if($nota > 100){ $nota = 100; } } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } //$this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $total += intval($nota); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim2 += $nota; } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); } if ($contadorSalto == 3 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if($Fnota['nombreCurso']=='Matemáticas' || $Fnota['nombreCurso']=='Matemática 4' || $Fnota['nombreCurso']=='Matemática 5' || $Fnota['nombreCurso']=='Matemática IV' || $Fnota['nombreCurso']=='Matemática V' || $Fnota['nombreCurso']=='Matemática Comercial' || $Fnota['nombreCurso']=='Cálculo Mercantil y Financiero' || $Fnota['nombreCurso']=='Estadística' || $Fnota['nombreCurso']=='Matemática' || $Fnota['nombreCurso']=='MATEMÁTICA APLICADA'){ $nota = $nota + $notaAlgebra3; if($nota > 100){ $nota = 100; } } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } /*if($Fnota['nombreCurso']=="Seminario"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); }else{ $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); }*/ $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim3 += $nota; } /*$this->SetTextColor(0); $this->Cell($w[$contadorSalto],6,0,1,0,'C',false);*/ } if ($contadorSalto == 4 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if($Fnota['nombreCurso']=='Matemáticas' || $Fnota['nombreCurso']=='Matemática 4' || $Fnota['nombreCurso']=='Matemática 5' || $Fnota['nombreCurso']=='Matemática IV' || $Fnota['nombreCurso']=='Matemática V' || $Fnota['nombreCurso']=='Matemática Comercial' || $Fnota['nombreCurso']=='Cálculo Mercantil y Financiero' || $Fnota['nombreCurso']=='Estadística' || $Fnota['nombreCurso']=='Matemática' || $Fnota['nombreCurso']=='MATEMÁTICA APLICADA'){ $nota = $nota + $notaAlgebra4; if($nota > 100){ $nota = 100; } } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } if ($Fnota['nombreCurso'] == "Seminario") { $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); } else { $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); } $total += intval($nota); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim4 += $nota; $contadorCurso++; } /********************/ /*$this->SetTextColor(0); if($Fnota['nombreCurso']=="Seminario"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); }else{ $this->Cell($w[$contadorSalto],6,0,1,0,'C',false); }*/ /********************/ $this->SetTextColor(0); if ($Fnota['nombreCurso'] == "Seminario") { $promedio = $total; } else { $promedio = round($total / 4, 0); } $this->Cell($w[$contadorSalto], 6, $promedio, 1, 0, 'C', false); $contadorSalto = -1; $total = 0; $this->Ln(); } if ($contadorSalto == 3 && $bandera == true) { $contadorSalto = -1; $bandera = false; } $contadorSalto++; } } } /**PARA INGLES */ $contadorSalto = 0; $total = 0; if ($notasAlumnoIngles) { foreach ($notasAlumnoIngles as $Fnota) { if ($contadorSalto == 0) { $this->SetX(22); $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, ' ' . utf8_decode($Fnota['nombreCurso']), 1, 0, 'L', false); $contadorSalto++; } if ($contadorSalto == 1) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim1 += $nota; } if ($contadorSalto == 2) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim2 += $nota; } if ($contadorSalto == 3) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim3 += $nota; } if ($contadorSalto == 4) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim4 += $nota; $this->SetTextColor(0); $promedio = round($total / 4, 0); $this->Cell($w[$contadorSalto], 6, $promedio, 1, 0, 'C', false); $contadorSalto = -1; $total = 0; $contadorCurso++; $this->Ln(); } $contadorSalto++; } } /**PARA ESCUELA DE ARTE */ $contadorSalto = 0; $total = 0; if ($notasEA) { foreach ($notasEA as $Fnota) { if ($contadorSalto == 0) { $this->SetX(22); $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, ' Escuela de Arte', 1, 0, 'L', false); $contadorSalto++; } if ($contadorSalto == 1) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); $bim1 += $nota; } if ($contadorSalto == 2) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); $bim2 += $nota; } if ($contadorSalto == 3) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); $bim3 += $nota; } if ($contadorSalto == 4) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); $bim4 += $nota; $this->SetTextColor(0); $promedio = round($total / 4, 0); $this->Cell($w[$contadorSalto], 6, $promedio, 1, 0, 'C', false); $contadorSalto = -1; $total = 0; $contadorCurso++; $this->Ln(); } $contadorSalto++; } } //pie de página $this->SetX(22); $this->SetFont('Arial', 'B', 10); $this->Cell($w[0], 6, ' ' . 'Promedio', 1, 0, 'L', false); $this->Cell($w[1], 6, round($bim1 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[2], 6, round($bim2 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[3], 6, round($bim3 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[4], 6, round($bim4 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[4], 6, round((round($bim1 / $contadorCurso) + round($bim2 / $contadorCurso) + round($bim3 / $contadorCurso) + round($bim4 / $contadorCurso)) / 4, 0), 1, 0, 'C', false); /*if ($bandera_graduando) { $this->Ln(); $this->Ln(); $this->Ln(); $this->SetX(22); $this->Cell(40, 10, utf8_decode("La nota de seminario se estará publicando la siguiente unidad")); }*/ } function GenerarCuadroLab($carnet) { //FONDO $this->Image('assets/img/fondo_boleta_2025.jpg', '0', '0', '217', '281', 'JPG'); //datos del alumno $consultas = new Boleta2025(); $datosAlumno = $consultas->buscarAlumno($carnet); $this->SetFont('Arial', '', 12); $this->SetTextColor(20); $this->setXY(40, 47.5); $this->Cell(45, 10, $carnet); $this->Cell(50, 10, " " . utf8_decode($datosAlumno[0]['apellidos']) . ', ' . utf8_decode($datosAlumno[0]['nombres'])); $this->Ln(); $this->setXY(40, 55); $this->setFontSize(10); $this->Cell(40, 10, $datosAlumno[0]['nombre_corto']); $this->SetFont('Arial', 'B', 12); $this->setXY(85, 73); $this->Cell(50, 10, "Primer Laboratorio"); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial', '', 11); $this->SetFillColor(0, 87, 69); $this->SetTextColor(255); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('', 'B'); $this->setXY(40, 85); $this->Cell(120, 8, " " . utf8_decode("Laboratorio"), 1, 0, 'L', true); $this->Cell(15, 8, " " . utf8_decode("Nota"), 1, 0, 'L', true); $datosLaboratorio = $consultas->buscarNotasLab($carnet); $this->Ln(); $promedioLab = 0; if ($datosLaboratorio) { foreach ($datosLaboratorio as $datosL) { if ($datosL['bimestre'] == "1") { $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120, 7, " " . utf8_decode($datosL['nombre']), 1, 0, 'L', false); $this->SetFontSize(9); if ($datosL['punteo'] < 60 && $datosL['punteo'] > 0) { $this->SetTextColor(204, 4, 41); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } elseif ($datosL['punteo'] >= 60 && $datosL['punteo'] < 70) { $this->SetTextColor(177, 4, 204); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } else { $this->SetTextColor(59, 58, 58); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } $promedioLab += intval($datosL['punteo']); $this->Ln(); } } } $this->SetXY(85, 105); $this->SetFont('Arial', 'B', 12); $this->Cell(50, 50, "Segundo Laboratorio"); $this->SetXY(40, 135); $this->SetTextColor(255); $this->Cell(120, 8, " " . utf8_decode("Laboratorio"), 1, 0, 'L', true); $this->Cell(15, 8, " " . utf8_decode("Nota"), 1, 0, 'L', true); $this->SetXY(40, 143); if($datosLaboratorio){ foreach ($datosLaboratorio as $datosL) { if ($datosL['bimestre'] == "2") { $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120, 7, " " . utf8_decode($datosL['nombre']), 1, 0, 'L', false); $this->SetFontSize(9); if ($datosL['punteo'] < 60 && $datosL['punteo'] > 0) { $this->SetTextColor(204, 4, 41); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } elseif ($datosL['punteo'] >= 60 && $datosL['punteo'] < 70) { $this->SetTextColor(177, 4, 204); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } else { $this->SetTextColor(59, 58, 58); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } $promedioLab += intval($datosL['punteo']); $this->Ln(); } } } $this->SetXY(85, 150); $this->SetFont('Arial', 'B', 12); $this->SetTextColor(255); $this->Cell(50, 50, "Tercer Laboratorio"); $this->SetXY(40, 180); $this->Cell(120, 8, " " . utf8_decode("Laboratorio"), 1, 0, 'L', true); $this->Cell(15, 8, " " . utf8_decode("Nota"), 1, 0, 'L', true); $this->SetXY(40, 188); foreach ($datosLaboratorio as $datosL) { if ($datosL['bimestre'] == "3") { $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120, 7, " " . utf8_decode($datosL['nombre']), 1, 0, 'L', false); $this->SetFontSize(9); if ($datosL['punteo'] < 60 && $datosL['punteo'] > 0) { $this->SetTextColor(204, 4, 41); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } elseif ($datosL['punteo'] >= 60 && $datosL['punteo'] < 70) { $this->SetTextColor(177, 4, 204); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } else { $this->SetTextColor(59, 58, 58); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } $promedioLab += intval($datosL['punteo']); $this->Ln(); } } $promedioLab = round($promedioLab / 12, 0); $this->SetFont('Arial', 'B', 12); $this->SetXY(40, 225); $this->SetTextColor(255); $this->Cell(135, 8, " " . utf8_decode("Promedio final"), 1, 0, 'L', true); $this->Ln(); $this->SetX(40); $this->SetTextColor(0, 0, 0); $this->Cell(135, 8, $promedioLab, 1, 0, 'C', false); } public function arreglar($cadena) { //Para E $cadena = str_replace( array('É'), array(utf8_encode('É')), $cadena ); $cadena = str_replace( array('Ó'), array(utf8_encode('Ó')), $cadena ); return $cadena; } } ?>PKZnљ' error_lognu[[28-Mar-2025 12:53:14 UTC] PHP Warning: require(Modelo/Grados2.php): Failed to open stream: No such file or directory in /home/juliojod/public_html/CEGSystem/assets/fpdf/cuadros.php on line 2 [28-Mar-2025 12:53:14 UTC] PHP Warning: require(Modelo/Grados2.php): Failed to open stream: No such file or directory in /home/juliojod/public_html/CEGSystem/assets/fpdf/cuadros.php on line 2 [28-Mar-2025 12:53:14 UTC] PHP Fatal error: Uncaught Error: Failed opening required 'Modelo/Grados2.php' (include_path='.:/opt/cpanel/ea-php81/root/usr/share/pear') in /home/juliojod/public_html/CEGSystem/assets/fpdf/cuadros.php:2 Stack trace: #0 {main} thrown in /home/juliojod/public_html/CEGSystem/assets/fpdf/cuadros.php on line 2 [28-Mar-2025 12:53:40 UTC] PHP Warning: require(invoice.php): Failed to open stream: No such file or directory in /home/juliojod/public_html/CEGSystem/assets/fpdf/Factura.php on line 2 [28-Mar-2025 12:53:40 UTC] PHP Warning: require(invoice.php): Failed to open stream: No such file or directory in /home/juliojod/public_html/CEGSystem/assets/fpdf/Factura.php on line 2 [28-Mar-2025 12:53:40 UTC] PHP Fatal error: Uncaught Error: Failed opening required 'invoice.php' (include_path='.:/opt/cpanel/ea-php81/root/usr/share/pear') in /home/juliojod/public_html/CEGSystem/assets/fpdf/Factura.php:2 Stack trace: #0 {main} thrown in /home/juliojod/public_html/CEGSystem/assets/fpdf/Factura.php on line 2 [28-Mar-2025 12:53:45 UTC] PHP Warning: require(Modelo/Boleta2025.php): Failed to open stream: No such file or directory in /home/juliojod/public_html/CEGSystem/assets/fpdf/BoletaNotas2025.php on line 3 [28-Mar-2025 12:53:45 UTC] PHP Warning: require(Modelo/Boleta2025.php): Failed to open stream: No such file or directory in /home/juliojod/public_html/CEGSystem/assets/fpdf/BoletaNotas2025.php on line 3 [28-Mar-2025 12:53:45 UTC] PHP Fatal error: Uncaught Error: Failed opening required 'Modelo/Boleta2025.php' (include_path='.:/opt/cpanel/ea-php81/root/usr/share/pear') in /home/juliojod/public_html/CEGSystem/assets/fpdf/BoletaNotas2025.php:3 Stack trace: #0 {main} thrown in /home/juliojod/public_html/CEGSystem/assets/fpdf/BoletaNotas2025.php on line 3 [28-Mar-2025 12:53:49 UTC] PHP Warning: require(Modelo/Boleta2023.php): Failed to open stream: No such file or directory in /home/juliojod/public_html/CEGSystem/assets/fpdf/BoletaNotas2023.php on line 3 [28-Mar-2025 12:53:49 UTC] PHP Warning: require(Modelo/Boleta2023.php): Failed to open stream: No such file or directory in /home/juliojod/public_html/CEGSystem/assets/fpdf/BoletaNotas2023.php on line 3 [28-Mar-2025 12:53:49 UTC] PHP Fatal error: Uncaught Error: Failed opening required 'Modelo/Boleta2023.php' (include_path='.:/opt/cpanel/ea-php81/root/usr/share/pear') in /home/juliojod/public_html/CEGSystem/assets/fpdf/BoletaNotas2023.php:3 Stack trace: #0 {main} thrown in /home/juliojod/public_html/CEGSystem/assets/fpdf/BoletaNotas2023.php on line 3 PKZײIIIBoletaNotas2022.phpnu[ Image('assets/img/fondo_boleta2022.jpg','0','0','216','280','JPG'); //datos del alumno $consultas=new Boleta2022(); $datosAlumno=$consultas->buscarAlumno($carnet); $this->SetFont('Arial','',12); $this->SetTextColor(20); $this->setXY(34,50); $this->Cell(45,10,$carnet); $this->Cell(50,10," ".utf8_decode(utf8_decode($datosAlumno[0]['apellidos'])).', '.utf8_decode(utf8_decode($datosAlumno[0]['nombres']))); $this->Ln(); $this->setXY(34,58); $this->setFontSize(10); $this->Cell(40,10,$datosAlumno[0]['nombre_corto']); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial','',11); $this->SetFillColor(149,242,215); $this->SetTextColor(255); $this->SetTextColor(20); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('','B'); $this->setXY(22,80); // Cabecera $w = array(80, 18, 18, 18,18,18); $header = array('Curso', '1a', '2a', '3a','4a','Total'); for($i=0;$iCell($w[$i],8,utf8_decode($header[$i]),1,0,'C',true); $this->Ln(); // Restauración de colores y fuentes $this->SetDrawColor(191, 191, 201); $this->SetFillColor(225, 228, 242); $this->SetTextColor(0); $this->SetFont('Arial','',10); $this->SetX(22); $notasAlumno=$consultas->buscarNotasAlumno($carnet); $notasAlumnoIngles=$consultas->buscarNotasAlumnoIngles($carnet); //inicio de colocación de notas $contadorSalto=0; $contadorCurso=0; $total=0; $bim1=0; $bim2=0; $bim3=0; $bim4=0; $bandera=false; $bandera_graduando=false; foreach($notasAlumno as $Fnota){ if (strpos($Fnota['nombreCurso'], "Laboratorio") !== false) { }else{ if($Fnota['nombreCurso']!="APRESTAMIENTO/GRAFOMOTRICIDAD" && utf8_decode($Fnota['nombreCurso'])!="CALIGRAFÍA Y APRESTAMIENTO"){ if($contadorSalto==0){ if((utf8_decode($Fnota['nombreCurso'])=="Artes Plásticas" && $Fnota['punteo']==0) || (utf8_decode($Fnota['nombreCurso'])=="Danza y Expresión Corporal" && $Fnota['punteo']==0) || (utf8_decode($Fnota['nombreCurso'])=="Formación Musical" && $Fnota['punteo']==0) || (utf8_decode($Fnota['nombreCurso'])=="ÁLGEBRA" && $Fnota['punteo']==0) || (utf8_decode($Fnota['nombreCurso'])=="Práctica Supervisada Final" && $Fnota['punteo']==0)){ $bandera=true; }else{ $bandera=false; } } if($contadorSalto==0 && $bandera==false){ $this->SetX(22); $this->SetTextColor(0); $nombreAux=self::arreglar($Fnota['nombreCurso']); $this->Cell($w[$contadorSalto],6,' '.utf8_decode(utf8_decode($nombreAux)),1,0,'L',false); $contadorSalto++; } if($contadorSalto==1 && $bandera==false){ $nota=0; if($Fnota['punteo']!=0 || $Fnota['punteo']!=""){ $nota=$Fnota['punteo']; } if($nota==0){ $this->SetTextColor(0); }elseif($nota<60){ if($Fnota['nombreCurso']=="Seminario"){ $this->SetTextColor(0); $bandera_graduando=true; }else{ $this->SetTextColor(252, 3, 3); } }elseif($nota<70){ $this->SetTextColor(119, 3, 252); }else{ $this->SetTextColor(0); } if($Fnota['nombreCurso']!="Práctica Supervisada Final"){ $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); } $total+=intval($Fnota['punteo']); if($Fnota['nombreCurso']!="Seminario" && $Fnota['nombreCurso']!="Práctica Supervisada Final"){ $bim1+=$nota; } if($Fnota['nombreCurso']=="Práctica Supervisada Final"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $this->Ln(); } } if($contadorSalto==2 && $bandera==false){ $nota=0; if($Fnota['punteo']!=0 || $Fnota['punteo']!=""){ $nota=$Fnota['punteo']; } if($nota==0){ $this->SetTextColor(0); }elseif($nota<60){ if($Fnota['nombreCurso']=="Seminario"){ $this->SetTextColor(0); }else{ $this->SetTextColor(252, 3, 3); } }elseif($nota<70){ $this->SetTextColor(119, 3, 252); }else{ $this->SetTextColor(0); } //$this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $total+=intval($Fnota['punteo']); if($Fnota['nombreCurso']!="Seminario" && $Fnota['nombreCurso']!="Práctica Supervisada Final"){ $bim2+=$nota; } $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); } if($contadorSalto==3 && $bandera==false){ $nota=0; if($Fnota['punteo']!=0 || $Fnota['punteo']!=""){ $nota=$Fnota['punteo']; } if($nota==0){ $this->SetTextColor(0); }elseif($nota<60){ if($Fnota['nombreCurso']=="Seminario"){ $this->SetTextColor(0); }else{ $this->SetTextColor(252, 3, 3); } }elseif($nota<70){ $this->SetTextColor(119, 3, 252); }else{ $this->SetTextColor(0); } /*if($Fnota['nombreCurso']=="Seminario"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); }else{ $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); }*/ $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $total+=intval($Fnota['punteo']); if($Fnota['nombreCurso']!="Seminario" && $Fnota['nombreCurso']!="Práctica Supervisada Final"){ $bim3+=$nota; } /*$this->SetTextColor(0); $this->Cell($w[$contadorSalto],6,0,1,0,'C',false);*/ } if($contadorSalto==4 && $bandera==false){ $nota=0; if($Fnota['punteo']!=0 || $Fnota['punteo']!=""){ $nota=$Fnota['punteo']; } if($nota==0){ $this->SetTextColor(0); }elseif($nota<60){ if($Fnota['nombreCurso']=="Seminario"){ $this->SetTextColor(0); }else{ $this->SetTextColor(252, 3, 3); } }elseif($nota<70){ $this->SetTextColor(119, 3, 252); }else{ $this->SetTextColor(0); } if($Fnota['nombreCurso']=="Seminario"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); }else{ $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); } $total+=intval($Fnota['punteo']); if($Fnota['nombreCurso']!="Seminario" && $Fnota['nombreCurso']!="Práctica Supervisada Final"){ $bim4+=$nota; $contadorCurso++; } /********************/ /*$this->SetTextColor(0); if($Fnota['nombreCurso']=="Seminario"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); }else{ $this->Cell($w[$contadorSalto],6,0,1,0,'C',false); }*/ /********************/ $this->SetTextColor(0); if($Fnota['nombreCurso']=="Seminario"){ $promedio=$total; }else{ $promedio=round($total/4,0); } $this->Cell($w[$contadorSalto],6,$promedio,1,0,'C',false); $contadorSalto=-1; $total=0; $this->Ln(); } if($contadorSalto==3 && $bandera==true){ $contadorSalto=-1; $bandera=false; } $contadorSalto++; } } } /**PARA INGLES */ $contadorSalto=0; $total=0; foreach($notasAlumnoIngles as $Fnota){ if($contadorSalto==0){ $this->SetX(22); $this->SetTextColor(0); $this->Cell($w[$contadorSalto],6,' '.utf8_decode($Fnota['nombreCurso']),1,0,'L',false); $contadorSalto++; } if($contadorSalto==1){ $nota=0; if($Fnota['punteo']!=0 || $Fnota['punteo']!=""){ $nota=$Fnota['punteo']; } if($nota==0){ $this->SetTextColor(0); }elseif($nota<60){ $this->SetTextColor(252, 3, 3); }elseif($nota<70){ $this->SetTextColor(119, 3, 252); }else{ $this->SetTextColor(0); } $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $total+=intval($Fnota['punteo']); $bim1+=$nota; } if($contadorSalto==2){ $nota=0; if($Fnota['punteo']!=0 || $Fnota['punteo']!=""){ $nota=$Fnota['punteo']; } if($nota==0){ $this->SetTextColor(0); }elseif($nota<60){ $this->SetTextColor(252, 3, 3); }elseif($nota<70){ $this->SetTextColor(119, 3, 252); }else{ $this->SetTextColor(0); } $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $total+=intval($Fnota['punteo']); $bim2+=$nota; } if($contadorSalto==3){ $nota=0; if($Fnota['punteo']!=0 || $Fnota['punteo']!=""){ $nota=$Fnota['punteo']; } if($nota==0){ $this->SetTextColor(0); }elseif($nota<60){ $this->SetTextColor(252, 3, 3); }elseif($nota<70){ $this->SetTextColor(119, 3, 252); }else{ $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $total+=intval($Fnota['punteo']); $bim3+=$nota; } if($contadorSalto==4){ $nota=0; if($Fnota['punteo']!=0 || $Fnota['punteo']!=""){ $nota=$Fnota['punteo']; } if($nota==0){ $this->SetTextColor(0); }elseif($nota<60){ $this->SetTextColor(252, 3, 3); }elseif($nota<70){ $this->SetTextColor(119, 3, 252); }else{ $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $total+=intval($Fnota['punteo']); $bim4+=$nota; $this->SetTextColor(0); $promedio=round($total/4,0); $this->Cell($w[$contadorSalto],6,$promedio,1,0,'C',false); $contadorSalto=-1; $total=0; $contadorCurso++; $this->Ln(); } $contadorSalto++; } //pie de página $this->SetX(22); $this->SetFont('Arial','B',10); $this->Cell($w[0],6,' '.'Promedio',1,0,'L',false); $this->Cell($w[1],6,round($bim1/$contadorCurso,0),1,0,'C',false); $this->Cell($w[2],6,round($bim2/$contadorCurso,0),1,0,'C',false); $this->Cell($w[3],6,round($bim3/$contadorCurso,0),1,0,'C',false); $this->Cell($w[4],6,round($bim4/$contadorCurso,0),1,0,'C',false); $this->Cell($w[4],6,round((round($bim1/$contadorCurso)+round($bim2/$contadorCurso)+round($bim3/$contadorCurso)+round($bim4/$contadorCurso))/4,0),1,0,'C',false); /*if($bandera_graduando){ $this->Ln(); $this->Ln(); $this->Ln(); $this->SetX(22); $this->Cell(40,10,utf8_decode("La nota final de seminario será publicada en el 4to. Bimestre, no afecta el promedio general")); }*/ } function GenerarCuadroLab($carnet){ //FONDO $this->Image('assets/img/fondo_lab2022.jpg','0','0','216','280','JPG'); //datos del alumno $consultas=new Boleta2022(); $datosAlumno=$consultas->buscarAlumno($carnet); $this->SetFont('Arial','',12); $this->SetTextColor(20); $this->setXY(34,50); $this->Cell(45,10,$carnet); $this->Cell(50,10," ".utf8_decode(utf8_decode($datosAlumno[0]['apellidos'])).', '.utf8_decode(utf8_decode($datosAlumno[0]['nombres']))); $this->Ln(); $this->setXY(34,58); $this->setFontSize(10); $this->Cell(40,10,$datosAlumno[0]['nombre_corto']); $this->SetFont('Arial','B',12); $this->setXY(85,73); $this->Cell(50,10,"Primer Laboratorio"); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial','',11); $this->SetFillColor(149,242,215); $this->SetTextColor(255); $this->SetTextColor(20); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('','B'); $this->setXY(40,85); $this->Cell(120,8," ".utf8_decode("Laboratorio"),1,0,'L',true); $this->Cell(15,8," ".utf8_decode("Nota"),1,0,'L',true); $datosLaboratorio=$consultas->buscarNotasLab($carnet); $this->Ln(); $promedioLab=0; foreach($datosLaboratorio as $datosL){ if($datosL['bimestre']=="1"){ $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120,7," ".utf8_decode($datosL['nombre']),1,0,'L',false); $this->SetFontSize(9); if($datosL['punteo']<60 && $datosL['punteo']>0){ $this->SetTextColor(204, 4, 41); $this->Cell(15,7,$datosL['punteo'],1,0,'C',false); }elseif($datosL['punteo']>=60 && $datosL['punteo']<70){ $this->SetTextColor(177, 4, 204); $this->Cell(15,7,$datosL['punteo'],1,0,'C',false); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(15,7,$datosL['punteo'],1,0,'C',false); } $promedioLab+=intval($datosL['punteo']); $this->Ln(); } } $this->SetXY(85,105); $this->SetFont('Arial','B',12); $this->Cell(50,50,"Segundo Laboratorio"); $this->SetXY(40,135); $this->Cell(120,8," ".utf8_decode("Laboratorio"),1,0,'L',true); $this->Cell(15,8," ".utf8_decode("Nota"),1,0,'L',true); $this->SetXY(40,143); foreach($datosLaboratorio as $datosL){ if($datosL['bimestre']=="2"){ $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120,7," ".utf8_decode($datosL['nombre']),1,0,'L',false); $this->SetFontSize(9); if($datosL['punteo']<60 && $datosL['punteo']>0){ $this->SetTextColor(204, 4, 41); $this->Cell(15,7,$datosL['punteo'],1,0,'C',false); }elseif($datosL['punteo']>=60 && $datosL['punteo']<70){ $this->SetTextColor(177, 4, 204); $this->Cell(15,7,$datosL['punteo'],1,0,'C',false); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(15,7,$datosL['punteo'],1,0,'C',false); } $promedioLab+=intval($datosL['punteo']); $this->Ln(); } } $this->SetXY(85,150); $this->SetFont('Arial','B',12); $this->Cell(50,50,"Tercer Laboratorio"); $this->SetXY(40,180); $this->Cell(120,8," ".utf8_decode("Laboratorio"),1,0,'L',true); $this->Cell(15,8," ".utf8_decode("Nota"),1,0,'L',true); $this->SetXY(40,188); foreach($datosLaboratorio as $datosL){ if($datosL['bimestre']=="3"){ $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120,7," ".utf8_decode($datosL['nombre']),1,0,'L',false); $this->SetFontSize(9); if($datosL['punteo']<60 && $datosL['punteo']>0){ $this->SetTextColor(204, 4, 41); $this->Cell(15,7,$datosL['punteo'],1,0,'C',false); }elseif($datosL['punteo']>=60 && $datosL['punteo']<70){ $this->SetTextColor(177, 4, 204); $this->Cell(15,7,$datosL['punteo'],1,0,'C',false); }else{ $this->SetTextColor(59, 58, 58); $this->Cell(15,7,$datosL['punteo'],1,0,'C',false); } $promedioLab+=intval($datosL['punteo']); $this->Ln(); } } $promedioLab=round($promedioLab/12,0); $this->SetFont('Arial','B',12); $this->SetXY(40,225); $this->Cell(135,8," ".utf8_decode("Promedio final"),1,0,'L',true);$this->Ln(); $this->SetX(40);$this->Cell(135,8,$promedioLab,1,0,'C',false); } public function arreglar($cadena){ //Para E $cadena = str_replace( array('É'), array(utf8_encode('É')), $cadena ); $cadena = str_replace( array('Ó'), array(utf8_encode('Ó')), $cadena ); return $cadena; } } ?>PKZ| font/times.phpnu[250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>408,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>180,'('=>333,')'=>333,'*'=>500,'+'=>564, ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>564,'='=>564,'>'=>564,'?'=>444,'@'=>921,'A'=>722, 'B'=>667,'C'=>667,'D'=>722,'E'=>611,'F'=>556,'G'=>722,'H'=>722,'I'=>333,'J'=>389,'K'=>722,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>556,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>722,'W'=>944, 'X'=>722,'Y'=>722,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>469,'_'=>500,'`'=>333,'a'=>444,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778, 'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>333,'s'=>389,'t'=>278,'u'=>500,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>480,'|'=>200,'}'=>480,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, chr(132)=>444,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>889,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>444,chr(148)=>444,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>980, chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>200,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>564,chr(173)=>333,chr(174)=>760,chr(175)=>333, chr(176)=>400,chr(177)=>564,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>453,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>444,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>564,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(220)=>722,chr(221)=>722,chr(222)=>556,chr(223)=>500,chr(224)=>444,chr(225)=>444,chr(226)=>444,chr(227)=>444,chr(228)=>444,chr(229)=>444,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>564,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>500,chr(254)=>500,chr(255)=>500); $enc = 'cp1252'; $uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZDfont/courierb.phpnu[array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZձfont/courieri.phpnu[array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZo@C font/timesi.phpnu[250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>420,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>214,'('=>333,')'=>333,'*'=>500,'+'=>675, ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>675,'='=>675,'>'=>675,'?'=>500,'@'=>920,'A'=>611, 'B'=>611,'C'=>667,'D'=>722,'E'=>611,'F'=>611,'G'=>722,'H'=>722,'I'=>333,'J'=>444,'K'=>667,'L'=>556,'M'=>833,'N'=>667,'O'=>722,'P'=>611,'Q'=>722,'R'=>611,'S'=>500,'T'=>556,'U'=>722,'V'=>611,'W'=>833, 'X'=>611,'Y'=>556,'Z'=>556,'['=>389,'\\'=>278,']'=>389,'^'=>422,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>278,'g'=>500,'h'=>500,'i'=>278,'j'=>278,'k'=>444,'l'=>278,'m'=>722, 'n'=>500,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>500,'v'=>444,'w'=>667,'x'=>444,'y'=>444,'z'=>389,'{'=>400,'|'=>275,'}'=>400,'~'=>541,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, chr(132)=>556,chr(133)=>889,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>500,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>556,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>556,chr(148)=>556,chr(149)=>350,chr(150)=>500,chr(151)=>889,chr(152)=>333,chr(153)=>980, chr(154)=>389,chr(155)=>333,chr(156)=>667,chr(157)=>350,chr(158)=>389,chr(159)=>556,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>275,chr(167)=>500,chr(168)=>333,chr(169)=>760,chr(170)=>276,chr(171)=>500,chr(172)=>675,chr(173)=>333,chr(174)=>760,chr(175)=>333, chr(176)=>400,chr(177)=>675,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>500,chr(182)=>523,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>310,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>611,chr(193)=>611,chr(194)=>611,chr(195)=>611,chr(196)=>611,chr(197)=>611, chr(198)=>889,chr(199)=>667,chr(200)=>611,chr(201)=>611,chr(202)=>611,chr(203)=>611,chr(204)=>333,chr(205)=>333,chr(206)=>333,chr(207)=>333,chr(208)=>722,chr(209)=>667,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>675,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(220)=>722,chr(221)=>556,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>667,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>500, chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>675,chr(248)=>500,chr(249)=>500,chr(250)=>500,chr(251)=>500,chr(252)=>500,chr(253)=>444,chr(254)=>500,chr(255)=>444); $enc = 'cp1252'; $uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZ  font/helveticab.phpnu[278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584, ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722, 'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, 'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889, 'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556, chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); $enc = 'cp1252'; $uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZB font/timesbi.phpnu[250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>389,'"'=>555,'#'=>500,'$'=>500,'%'=>833,'&'=>778,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570, ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>832,'A'=>667, 'B'=>667,'C'=>667,'D'=>722,'E'=>667,'F'=>667,'G'=>722,'H'=>778,'I'=>389,'J'=>500,'K'=>667,'L'=>611,'M'=>889,'N'=>722,'O'=>722,'P'=>611,'Q'=>722,'R'=>667,'S'=>556,'T'=>611,'U'=>722,'V'=>667,'W'=>889, 'X'=>667,'Y'=>611,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>570,'_'=>500,'`'=>333,'a'=>500,'b'=>500,'c'=>444,'d'=>500,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>278,'k'=>500,'l'=>278,'m'=>778, 'n'=>556,'o'=>500,'p'=>500,'q'=>500,'r'=>389,'s'=>389,'t'=>278,'u'=>556,'v'=>444,'w'=>667,'x'=>500,'y'=>444,'z'=>389,'{'=>348,'|'=>220,'}'=>348,'~'=>570,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>944,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>389,chr(159)=>611,chr(160)=>250,chr(161)=>389,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>266,chr(171)=>500,chr(172)=>606,chr(173)=>333,chr(174)=>747,chr(175)=>333, chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>576,chr(182)=>500,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>300,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, chr(198)=>944,chr(199)=>667,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>722,chr(211)=>722,chr(212)=>722,chr(213)=>722,chr(214)=>722,chr(215)=>570,chr(216)=>722,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(220)=>722,chr(221)=>611,chr(222)=>611,chr(223)=>500,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>444,chr(254)=>500,chr(255)=>444); $enc = 'cp1252'; $uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZl font/timesb.phpnu[250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>555,'#'=>500,'$'=>500,'%'=>1000,'&'=>833,'\''=>278,'('=>333,')'=>333,'*'=>500,'+'=>570, ','=>250,'-'=>333,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>333,';'=>333,'<'=>570,'='=>570,'>'=>570,'?'=>500,'@'=>930,'A'=>722, 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>778,'I'=>389,'J'=>500,'K'=>778,'L'=>667,'M'=>944,'N'=>722,'O'=>778,'P'=>611,'Q'=>778,'R'=>722,'S'=>556,'T'=>667,'U'=>722,'V'=>722,'W'=>1000, 'X'=>722,'Y'=>722,'Z'=>667,'['=>333,'\\'=>278,']'=>333,'^'=>581,'_'=>500,'`'=>333,'a'=>500,'b'=>556,'c'=>444,'d'=>556,'e'=>444,'f'=>333,'g'=>500,'h'=>556,'i'=>278,'j'=>333,'k'=>556,'l'=>278,'m'=>833, 'n'=>556,'o'=>500,'p'=>556,'q'=>556,'r'=>444,'s'=>389,'t'=>333,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>444,'{'=>394,'|'=>220,'}'=>394,'~'=>520,chr(127)=>350,chr(128)=>500,chr(129)=>350,chr(130)=>333,chr(131)=>500, chr(132)=>500,chr(133)=>1000,chr(134)=>500,chr(135)=>500,chr(136)=>333,chr(137)=>1000,chr(138)=>556,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>667,chr(143)=>350,chr(144)=>350,chr(145)=>333,chr(146)=>333,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>500,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, chr(154)=>389,chr(155)=>333,chr(156)=>722,chr(157)=>350,chr(158)=>444,chr(159)=>722,chr(160)=>250,chr(161)=>333,chr(162)=>500,chr(163)=>500,chr(164)=>500,chr(165)=>500,chr(166)=>220,chr(167)=>500,chr(168)=>333,chr(169)=>747,chr(170)=>300,chr(171)=>500,chr(172)=>570,chr(173)=>333,chr(174)=>747,chr(175)=>333, chr(176)=>400,chr(177)=>570,chr(178)=>300,chr(179)=>300,chr(180)=>333,chr(181)=>556,chr(182)=>540,chr(183)=>250,chr(184)=>333,chr(185)=>300,chr(186)=>330,chr(187)=>500,chr(188)=>750,chr(189)=>750,chr(190)=>750,chr(191)=>500,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>389,chr(205)=>389,chr(206)=>389,chr(207)=>389,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>570,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(220)=>722,chr(221)=>722,chr(222)=>611,chr(223)=>556,chr(224)=>500,chr(225)=>500,chr(226)=>500,chr(227)=>500,chr(228)=>500,chr(229)=>500,chr(230)=>722,chr(231)=>444,chr(232)=>444,chr(233)=>444,chr(234)=>444,chr(235)=>444,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>500,chr(241)=>556, chr(242)=>500,chr(243)=>500,chr(244)=>500,chr(245)=>500,chr(246)=>500,chr(247)=>570,chr(248)=>500,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); $enc = 'cp1252'; $uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZ:Nfont/courierbi.phpnu[array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZ ?q font/helveticai.phpnu[278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584, ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667, 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, 'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833, 'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556, chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); $enc = 'cp1252'; $uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZYۺfont/courier.phpnu[array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZFK font/helveticabi.phpnu[278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>333,'"'=>474,'#'=>556,'$'=>556,'%'=>889,'&'=>722,'\''=>238,'('=>333,')'=>333,'*'=>389,'+'=>584, ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>333,';'=>333,'<'=>584,'='=>584,'>'=>584,'?'=>611,'@'=>975,'A'=>722, 'B'=>722,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>556,'K'=>722,'L'=>611,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, 'X'=>667,'Y'=>667,'Z'=>611,'['=>333,'\\'=>278,']'=>333,'^'=>584,'_'=>556,'`'=>333,'a'=>556,'b'=>611,'c'=>556,'d'=>611,'e'=>556,'f'=>333,'g'=>611,'h'=>611,'i'=>278,'j'=>278,'k'=>556,'l'=>278,'m'=>889, 'n'=>611,'o'=>611,'p'=>611,'q'=>611,'r'=>389,'s'=>556,'t'=>333,'u'=>611,'v'=>556,'w'=>778,'x'=>556,'y'=>556,'z'=>500,'{'=>389,'|'=>280,'}'=>389,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>278,chr(131)=>556, chr(132)=>500,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>278,chr(146)=>278,chr(147)=>500,chr(148)=>500,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, chr(154)=>556,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>280,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>611,chr(182)=>556,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>722,chr(193)=>722,chr(194)=>722,chr(195)=>722,chr(196)=>722,chr(197)=>722, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>556,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>611,chr(241)=>611, chr(242)=>611,chr(243)=>611,chr(244)=>611,chr(245)=>611,chr(246)=>611,chr(247)=>584,chr(248)=>611,chr(249)=>611,chr(250)=>611,chr(251)=>611,chr(252)=>611,chr(253)=>556,chr(254)=>611,chr(255)=>556); $enc = 'cp1252'; $uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZ"? font/zapfdingbats.phpnu[0,chr(1)=>0,chr(2)=>0,chr(3)=>0,chr(4)=>0,chr(5)=>0,chr(6)=>0,chr(7)=>0,chr(8)=>0,chr(9)=>0,chr(10)=>0,chr(11)=>0,chr(12)=>0,chr(13)=>0,chr(14)=>0,chr(15)=>0,chr(16)=>0,chr(17)=>0,chr(18)=>0,chr(19)=>0,chr(20)=>0,chr(21)=>0, chr(22)=>0,chr(23)=>0,chr(24)=>0,chr(25)=>0,chr(26)=>0,chr(27)=>0,chr(28)=>0,chr(29)=>0,chr(30)=>0,chr(31)=>0,' '=>278,'!'=>974,'"'=>961,'#'=>974,'$'=>980,'%'=>719,'&'=>789,'\''=>790,'('=>791,')'=>690,'*'=>960,'+'=>939, ','=>549,'-'=>855,'.'=>911,'/'=>933,'0'=>911,'1'=>945,'2'=>974,'3'=>755,'4'=>846,'5'=>762,'6'=>761,'7'=>571,'8'=>677,'9'=>763,':'=>760,';'=>759,'<'=>754,'='=>494,'>'=>552,'?'=>537,'@'=>577,'A'=>692, 'B'=>786,'C'=>788,'D'=>788,'E'=>790,'F'=>793,'G'=>794,'H'=>816,'I'=>823,'J'=>789,'K'=>841,'L'=>823,'M'=>833,'N'=>816,'O'=>831,'P'=>923,'Q'=>744,'R'=>723,'S'=>749,'T'=>790,'U'=>792,'V'=>695,'W'=>776, 'X'=>768,'Y'=>792,'Z'=>759,'['=>707,'\\'=>708,']'=>682,'^'=>701,'_'=>826,'`'=>815,'a'=>789,'b'=>789,'c'=>707,'d'=>687,'e'=>696,'f'=>689,'g'=>786,'h'=>787,'i'=>713,'j'=>791,'k'=>785,'l'=>791,'m'=>873, 'n'=>761,'o'=>762,'p'=>762,'q'=>759,'r'=>759,'s'=>892,'t'=>892,'u'=>788,'v'=>784,'w'=>438,'x'=>138,'y'=>277,'z'=>415,'{'=>392,'|'=>392,'}'=>668,'~'=>668,chr(127)=>0,chr(128)=>390,chr(129)=>390,chr(130)=>317,chr(131)=>317, chr(132)=>276,chr(133)=>276,chr(134)=>509,chr(135)=>509,chr(136)=>410,chr(137)=>410,chr(138)=>234,chr(139)=>234,chr(140)=>334,chr(141)=>334,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0, chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>0,chr(161)=>732,chr(162)=>544,chr(163)=>544,chr(164)=>910,chr(165)=>667,chr(166)=>760,chr(167)=>760,chr(168)=>776,chr(169)=>595,chr(170)=>694,chr(171)=>626,chr(172)=>788,chr(173)=>788,chr(174)=>788,chr(175)=>788, chr(176)=>788,chr(177)=>788,chr(178)=>788,chr(179)=>788,chr(180)=>788,chr(181)=>788,chr(182)=>788,chr(183)=>788,chr(184)=>788,chr(185)=>788,chr(186)=>788,chr(187)=>788,chr(188)=>788,chr(189)=>788,chr(190)=>788,chr(191)=>788,chr(192)=>788,chr(193)=>788,chr(194)=>788,chr(195)=>788,chr(196)=>788,chr(197)=>788, chr(198)=>788,chr(199)=>788,chr(200)=>788,chr(201)=>788,chr(202)=>788,chr(203)=>788,chr(204)=>788,chr(205)=>788,chr(206)=>788,chr(207)=>788,chr(208)=>788,chr(209)=>788,chr(210)=>788,chr(211)=>788,chr(212)=>894,chr(213)=>838,chr(214)=>1016,chr(215)=>458,chr(216)=>748,chr(217)=>924,chr(218)=>748,chr(219)=>918, chr(220)=>927,chr(221)=>928,chr(222)=>928,chr(223)=>834,chr(224)=>873,chr(225)=>828,chr(226)=>924,chr(227)=>924,chr(228)=>917,chr(229)=>930,chr(230)=>931,chr(231)=>463,chr(232)=>883,chr(233)=>836,chr(234)=>836,chr(235)=>867,chr(236)=>867,chr(237)=>696,chr(238)=>696,chr(239)=>874,chr(240)=>0,chr(241)=>874, chr(242)=>760,chr(243)=>946,chr(244)=>771,chr(245)=>865,chr(246)=>771,chr(247)=>888,chr(248)=>967,chr(249)=>888,chr(250)=>831,chr(251)=>873,chr(252)=>927,chr(253)=>970,chr(254)=>918,chr(255)=>0); $uv = array(32=>32,33=>array(9985,4),37=>9742,38=>array(9990,4),42=>9755,43=>9758,44=>array(9996,28),72=>9733,73=>array(10025,35),108=>9679,109=>10061,110=>9632,111=>array(10063,4),115=>9650,116=>9660,117=>9670,118=>10070,119=>9687,120=>array(10072,7),128=>array(10088,14),161=>array(10081,7),168=>9827,169=>9830,170=>9829,171=>9824,172=>array(9312,10),182=>array(10102,31),213=>8594,214=>array(8596,2),216=>array(10136,24),241=>array(10161,14)); ?> PKZf;font/symbol.phpnu[250,chr(1)=>250,chr(2)=>250,chr(3)=>250,chr(4)=>250,chr(5)=>250,chr(6)=>250,chr(7)=>250,chr(8)=>250,chr(9)=>250,chr(10)=>250,chr(11)=>250,chr(12)=>250,chr(13)=>250,chr(14)=>250,chr(15)=>250,chr(16)=>250,chr(17)=>250,chr(18)=>250,chr(19)=>250,chr(20)=>250,chr(21)=>250, chr(22)=>250,chr(23)=>250,chr(24)=>250,chr(25)=>250,chr(26)=>250,chr(27)=>250,chr(28)=>250,chr(29)=>250,chr(30)=>250,chr(31)=>250,' '=>250,'!'=>333,'"'=>713,'#'=>500,'$'=>549,'%'=>833,'&'=>778,'\''=>439,'('=>333,')'=>333,'*'=>500,'+'=>549, ','=>250,'-'=>549,'.'=>250,'/'=>278,'0'=>500,'1'=>500,'2'=>500,'3'=>500,'4'=>500,'5'=>500,'6'=>500,'7'=>500,'8'=>500,'9'=>500,':'=>278,';'=>278,'<'=>549,'='=>549,'>'=>549,'?'=>444,'@'=>549,'A'=>722, 'B'=>667,'C'=>722,'D'=>612,'E'=>611,'F'=>763,'G'=>603,'H'=>722,'I'=>333,'J'=>631,'K'=>722,'L'=>686,'M'=>889,'N'=>722,'O'=>722,'P'=>768,'Q'=>741,'R'=>556,'S'=>592,'T'=>611,'U'=>690,'V'=>439,'W'=>768, 'X'=>645,'Y'=>795,'Z'=>611,'['=>333,'\\'=>863,']'=>333,'^'=>658,'_'=>500,'`'=>500,'a'=>631,'b'=>549,'c'=>549,'d'=>494,'e'=>439,'f'=>521,'g'=>411,'h'=>603,'i'=>329,'j'=>603,'k'=>549,'l'=>549,'m'=>576, 'n'=>521,'o'=>549,'p'=>549,'q'=>521,'r'=>549,'s'=>603,'t'=>439,'u'=>576,'v'=>713,'w'=>686,'x'=>493,'y'=>686,'z'=>494,'{'=>480,'|'=>200,'}'=>480,'~'=>549,chr(127)=>0,chr(128)=>0,chr(129)=>0,chr(130)=>0,chr(131)=>0, chr(132)=>0,chr(133)=>0,chr(134)=>0,chr(135)=>0,chr(136)=>0,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>0,chr(141)=>0,chr(142)=>0,chr(143)=>0,chr(144)=>0,chr(145)=>0,chr(146)=>0,chr(147)=>0,chr(148)=>0,chr(149)=>0,chr(150)=>0,chr(151)=>0,chr(152)=>0,chr(153)=>0, chr(154)=>0,chr(155)=>0,chr(156)=>0,chr(157)=>0,chr(158)=>0,chr(159)=>0,chr(160)=>750,chr(161)=>620,chr(162)=>247,chr(163)=>549,chr(164)=>167,chr(165)=>713,chr(166)=>500,chr(167)=>753,chr(168)=>753,chr(169)=>753,chr(170)=>753,chr(171)=>1042,chr(172)=>987,chr(173)=>603,chr(174)=>987,chr(175)=>603, chr(176)=>400,chr(177)=>549,chr(178)=>411,chr(179)=>549,chr(180)=>549,chr(181)=>713,chr(182)=>494,chr(183)=>460,chr(184)=>549,chr(185)=>549,chr(186)=>549,chr(187)=>549,chr(188)=>1000,chr(189)=>603,chr(190)=>1000,chr(191)=>658,chr(192)=>823,chr(193)=>686,chr(194)=>795,chr(195)=>987,chr(196)=>768,chr(197)=>768, chr(198)=>823,chr(199)=>768,chr(200)=>768,chr(201)=>713,chr(202)=>713,chr(203)=>713,chr(204)=>713,chr(205)=>713,chr(206)=>713,chr(207)=>713,chr(208)=>768,chr(209)=>713,chr(210)=>790,chr(211)=>790,chr(212)=>890,chr(213)=>823,chr(214)=>549,chr(215)=>250,chr(216)=>713,chr(217)=>603,chr(218)=>603,chr(219)=>1042, chr(220)=>987,chr(221)=>603,chr(222)=>987,chr(223)=>603,chr(224)=>494,chr(225)=>329,chr(226)=>790,chr(227)=>790,chr(228)=>786,chr(229)=>713,chr(230)=>384,chr(231)=>384,chr(232)=>384,chr(233)=>384,chr(234)=>384,chr(235)=>384,chr(236)=>494,chr(237)=>494,chr(238)=>494,chr(239)=>494,chr(240)=>0,chr(241)=>329, chr(242)=>274,chr(243)=>686,chr(244)=>686,chr(245)=>686,chr(246)=>384,chr(247)=>384,chr(248)=>384,chr(249)=>384,chr(250)=>384,chr(251)=>384,chr(252)=>494,chr(253)=>494,chr(254)=>494,chr(255)=>0); $uv = array(32=>160,33=>33,34=>8704,35=>35,36=>8707,37=>array(37,2),39=>8715,40=>array(40,2),42=>8727,43=>array(43,2),45=>8722,46=>array(46,18),64=>8773,65=>array(913,2),67=>935,68=>array(916,2),70=>934,71=>915,72=>919,73=>921,74=>977,75=>array(922,4),79=>array(927,2),81=>920,82=>929,83=>array(931,3),86=>962,87=>937,88=>926,89=>936,90=>918,91=>91,92=>8756,93=>93,94=>8869,95=>95,96=>63717,97=>array(945,2),99=>967,100=>array(948,2),102=>966,103=>947,104=>951,105=>953,106=>981,107=>array(954,4),111=>array(959,2),113=>952,114=>961,115=>array(963,3),118=>982,119=>969,120=>958,121=>968,122=>950,123=>array(123,3),126=>8764,160=>8364,161=>978,162=>8242,163=>8804,164=>8725,165=>8734,166=>402,167=>9827,168=>9830,169=>9829,170=>9824,171=>8596,172=>array(8592,4),176=>array(176,2),178=>8243,179=>8805,180=>215,181=>8733,182=>8706,183=>8226,184=>247,185=>array(8800,2),187=>8776,188=>8230,189=>array(63718,2),191=>8629,192=>8501,193=>8465,194=>8476,195=>8472,196=>8855,197=>8853,198=>8709,199=>array(8745,2),201=>8835,202=>8839,203=>8836,204=>8834,205=>8838,206=>array(8712,2),208=>8736,209=>8711,210=>63194,211=>63193,212=>63195,213=>8719,214=>8730,215=>8901,216=>172,217=>array(8743,2),219=>8660,220=>array(8656,4),224=>9674,225=>9001,226=>array(63720,3),229=>8721,230=>array(63723,10),241=>9002,242=>8747,243=>8992,244=>63733,245=>8993,246=>array(63734,9)); ?> PKZe font/helvetica.phpnu[278,chr(1)=>278,chr(2)=>278,chr(3)=>278,chr(4)=>278,chr(5)=>278,chr(6)=>278,chr(7)=>278,chr(8)=>278,chr(9)=>278,chr(10)=>278,chr(11)=>278,chr(12)=>278,chr(13)=>278,chr(14)=>278,chr(15)=>278,chr(16)=>278,chr(17)=>278,chr(18)=>278,chr(19)=>278,chr(20)=>278,chr(21)=>278, chr(22)=>278,chr(23)=>278,chr(24)=>278,chr(25)=>278,chr(26)=>278,chr(27)=>278,chr(28)=>278,chr(29)=>278,chr(30)=>278,chr(31)=>278,' '=>278,'!'=>278,'"'=>355,'#'=>556,'$'=>556,'%'=>889,'&'=>667,'\''=>191,'('=>333,')'=>333,'*'=>389,'+'=>584, ','=>278,'-'=>333,'.'=>278,'/'=>278,'0'=>556,'1'=>556,'2'=>556,'3'=>556,'4'=>556,'5'=>556,'6'=>556,'7'=>556,'8'=>556,'9'=>556,':'=>278,';'=>278,'<'=>584,'='=>584,'>'=>584,'?'=>556,'@'=>1015,'A'=>667, 'B'=>667,'C'=>722,'D'=>722,'E'=>667,'F'=>611,'G'=>778,'H'=>722,'I'=>278,'J'=>500,'K'=>667,'L'=>556,'M'=>833,'N'=>722,'O'=>778,'P'=>667,'Q'=>778,'R'=>722,'S'=>667,'T'=>611,'U'=>722,'V'=>667,'W'=>944, 'X'=>667,'Y'=>667,'Z'=>611,'['=>278,'\\'=>278,']'=>278,'^'=>469,'_'=>556,'`'=>333,'a'=>556,'b'=>556,'c'=>500,'d'=>556,'e'=>556,'f'=>278,'g'=>556,'h'=>556,'i'=>222,'j'=>222,'k'=>500,'l'=>222,'m'=>833, 'n'=>556,'o'=>556,'p'=>556,'q'=>556,'r'=>333,'s'=>500,'t'=>278,'u'=>556,'v'=>500,'w'=>722,'x'=>500,'y'=>500,'z'=>500,'{'=>334,'|'=>260,'}'=>334,'~'=>584,chr(127)=>350,chr(128)=>556,chr(129)=>350,chr(130)=>222,chr(131)=>556, chr(132)=>333,chr(133)=>1000,chr(134)=>556,chr(135)=>556,chr(136)=>333,chr(137)=>1000,chr(138)=>667,chr(139)=>333,chr(140)=>1000,chr(141)=>350,chr(142)=>611,chr(143)=>350,chr(144)=>350,chr(145)=>222,chr(146)=>222,chr(147)=>333,chr(148)=>333,chr(149)=>350,chr(150)=>556,chr(151)=>1000,chr(152)=>333,chr(153)=>1000, chr(154)=>500,chr(155)=>333,chr(156)=>944,chr(157)=>350,chr(158)=>500,chr(159)=>667,chr(160)=>278,chr(161)=>333,chr(162)=>556,chr(163)=>556,chr(164)=>556,chr(165)=>556,chr(166)=>260,chr(167)=>556,chr(168)=>333,chr(169)=>737,chr(170)=>370,chr(171)=>556,chr(172)=>584,chr(173)=>333,chr(174)=>737,chr(175)=>333, chr(176)=>400,chr(177)=>584,chr(178)=>333,chr(179)=>333,chr(180)=>333,chr(181)=>556,chr(182)=>537,chr(183)=>278,chr(184)=>333,chr(185)=>333,chr(186)=>365,chr(187)=>556,chr(188)=>834,chr(189)=>834,chr(190)=>834,chr(191)=>611,chr(192)=>667,chr(193)=>667,chr(194)=>667,chr(195)=>667,chr(196)=>667,chr(197)=>667, chr(198)=>1000,chr(199)=>722,chr(200)=>667,chr(201)=>667,chr(202)=>667,chr(203)=>667,chr(204)=>278,chr(205)=>278,chr(206)=>278,chr(207)=>278,chr(208)=>722,chr(209)=>722,chr(210)=>778,chr(211)=>778,chr(212)=>778,chr(213)=>778,chr(214)=>778,chr(215)=>584,chr(216)=>778,chr(217)=>722,chr(218)=>722,chr(219)=>722, chr(220)=>722,chr(221)=>667,chr(222)=>667,chr(223)=>611,chr(224)=>556,chr(225)=>556,chr(226)=>556,chr(227)=>556,chr(228)=>556,chr(229)=>556,chr(230)=>889,chr(231)=>500,chr(232)=>556,chr(233)=>556,chr(234)=>556,chr(235)=>556,chr(236)=>278,chr(237)=>278,chr(238)=>278,chr(239)=>278,chr(240)=>556,chr(241)=>556, chr(242)=>556,chr(243)=>556,chr(244)=>556,chr(245)=>556,chr(246)=>556,chr(247)=>584,chr(248)=>611,chr(249)=>556,chr(250)=>556,chr(251)=>556,chr(252)=>556,chr(253)=>500,chr(254)=>556,chr(255)=>500); $enc = 'cp1252'; $uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); ?> PKZH`2`2cuadros_imprimir_tallerTT.phpnu[AddExtGState(array('ca' => $alpha, 'CA' => $alpha, 'BM' => '/' . $bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates) + 1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if (!empty($this->extgstates) && $this->PDFVersion < '1.4') $this->PDFVersion = '1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM ' . $parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach ($this->extgstates as $k => $extgstate) $this->_put('/GS' . $k . ' ' . $extgstate['n'] . ' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction = 'R') { if ($direction == 'R') $s = sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET', 1, 0, 0, 1, $x * $this->k, ($this->h - $y) * $this->k, $this->_escape($txt)); elseif ($direction == 'L') $s = sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET', -1, 0, 0, -1, $x * $this->k, ($this->h - $y) * $this->k, $this->_escape($txt)); elseif ($direction == 'U') $s = sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET', 0, 1, -1, 0, $x * $this->k, ($this->h - $y) * $this->k, $this->_escape($txt)); elseif ($direction == 'D') $s = sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET', 0, -1, 1, 0, $x * $this->k, ($this->h - $y) * $this->k, $this->_escape($txt)); else $s = sprintf('BT %.2F %.2F Td (%s) Tj ET', $x * $this->k, ($this->h - $y) * $this->k, $this->_escape($txt)); if ($this->ColorFlag) $s = 'q ' . $this->TextColor . ' ' . $s . ' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle = 0) { $font_angle += 90 + $txt_angle; $txt_angle *= M_PI / 180; $font_angle *= M_PI / 180; $txt_dx = cos($txt_angle); $txt_dy = sin($txt_angle); $font_dx = cos($font_angle); $font_dy = sin($font_angle); $s = sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET', $txt_dx, $txt_dy, $font_dx, $font_dy, $x * $this->k, ($this->h - $y) * $this->k, $this->_escape($txt)); if ($this->ColorFlag) $s = 'q ' . $this->TextColor . ' ' . $s . ' Q'; $this->_out($s); } //**************************************************************************** */ // Tabla coloreada function GenerarCuadro($bimestre, $id_taller, $nombre_curso, $nombreDocente) { //FONDO $this->Image('assets/img/logo_ceg_redondo2.png', '185', '10', '17', '17', 'PNG'); //datos encabezado $this->SetFont('Arial', '', 15); $this->SetTextColor(20); $this->setXY(20, 10); $this->SetFont('Arial', 'B', 9); $this->Cell(40, 10, utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20, 15); $this->SetFont('Arial', 'B', 9); $this->Cell(40, 10, utf8_decode("Registro de Resultados de Escuela de arte Bimestral")); $this->setXY(20, 20); $this->SetFont('Arial', 'B', 9); $this->Cell(40, 10, "del Rendimiento Escolar - Ciclo Escolar 2025"); $this->setXY(160, 25); $this->SetFont('Arial', 'B', 9); $this->Cell(40, 10, "Bimestre: " . $bimestre); $this->setXY(160, 31); $this->SetFont('Arial', 'B', 9); $this->Cell(40, 10, "Maestro: " . utf8_decode($nombreDocente)); $this->setXY(160, 37); date_default_timezone_set('America/Guatemala'); $this->SetFont('Arial', 'B', 9); $this->Cell(40, 10, "Hora: " . date('m-d-Y h:i:s a', time())); $this->setXY(30, 55); //datos $consultas = new Imprimir2(); /*$Grado=$consultas->BuscarNG($id_grado); foreach($Grado as $grados){ $this->SetFont('Arial','B',12);$this->Cell(40,10,$grados['nombre_corto']); } */ $this->setXY(20, 75); $this->Cell(55, 15, '', 1, 0, 'C', false); $this->setXY(20, 78); $this->SetFont('Arial', 'B', 6); $this->Cell(40, 10, utf8_decode($nombre_curso)); //Empieza la cabecera $this->SetFillColor(225, 228, 242); $this->SetTextColor(0, 0, 0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial', 'I', 6); $this->setXY(85, 55); $textoA = $this->TextWithDirection(89, 94, 'Responsabilidad (20 pts)', 'U'); $this->Cell(7, 40, $textoA, 1, 0, 'C', false); $textoA = $this->TextWithDirection(96, 94, utf8_decode('Dedicación y ejecución (20 pts)'), 'U'); $this->Cell(7, 40, $textoA, 1, 0, 'C', false); $textoA = $this->TextWithDirection(103, 94, 'Manejo de recursos y creatividad (20 pts)', 'U'); $this->Cell(7, 40, $textoA, 1, 0, 'C', false); $textoA = $this->TextWithDirection(110, 94, utf8_decode('Comp., int. con compañeros y equipo (20 pts)'), 'U'); $this->Cell(7, 40, $textoA, 1, 0, 'C', false); $textoA = $this->TextWithDirection(117, 94, utf8_decode('Organización y limpieza (20 pts)'), 'U'); $this->Cell(7, 40, $textoA, 1, 0, 'C', false); $textoA = $this->TextWithDirection(124, 94, 'Total (100 pts)', 'U'); $this->Cell(7, 40, $textoA, 1, 0, 'C', false); $this->Ln(); $this->SetFont('Arial','',7); $this->setXY(17,95); $this->Cell(5,5,'No',1,0,'C',true); $this->Cell(8,5,'Carnet',1,0,'C',true); $this->Cell(55,5,'Apellidos y nombres del alumno',1,0,'C',true); $this->Cell(7,5,'1',1,0,'C',true); $this->Cell(7,5,'2',1,0,'C',true); $this->Cell(7,5,'3',1,0,'C',true); $this->Cell(7,5,'4',1,0,'C',true); $this->Cell(7,5,'5',1,0,'C',true); $this->Cell(7,5,'T',1,0,'C',true); $this->Ln(); /* ********************************************************************************** AQUÍ ME QUEDÉ********************************************* */ //Buscar los datos $datosAlumnos = $consultas->buscarAlumnosTaller($id_taller, $bimestre); if ($datosAlumnos) { $contadorRojo = 0; $contadorAmarillo = 0; $contadorVerde = 0; $notaMayor = 0; $notaMenor = 100; $totalAlumnos = 0; $promedio = 0; $totalNotaTodos = 0; $contador = 1; $carnetValidar = ""; $auxGeneral = 0; $contadorSalto = 0; $totalZona = 0; $posicionY = 95.5; $posicionX=128; $punteoAux = 0; $totalPromedio = 0; foreach ($datosAlumnos as $fila) { $contador==44 ? $posicionY = 5 : $contador; $totalZona = 0; $this->SetFont('Arial', 'I', 6); $this->setX(17); $this->Cell(5, 5, $contador, 1, 0, 'C', false); $this->Cell(8, 5, $fila['carnet'], 1, 0, 'C', false); $this->SetFont('Arial', 'I', 7); $this->Cell(55, 5, utf8_decode($fila['apellidos'] . ', ' . $fila['nombres']), 1, 0, 'L', false); $notaAlumno = $consultas->buscarNTaller($fila['carnet'], $id_taller, $bimestre); if($notaAlumno){ foreach($notaAlumno as $NA){ $this->Cell(7,5,$NA['punteo'],1,0,'C',false); if($NA['nombre']=='Total'){ $totalPromedio+=$NA['punteo']; if($NA['punteo']<60){ $contadorRojo++; }else if($NA['punteo']<69){ $contadorAmarillo++; }else{ $contadorVerde++; } if($NA['punteo']>$notaMayor){ $notaMayor=$NA['punteo']; } if($NA['punteo']<$notaMenor){ $notaMenor=$NA['punteo']; } $posicionY+=5; if ($NA['punteo']<60){ $this->Image('assets/img/incorrecto.png',$posicionX,$posicionY,'4','4','PNG'); $contadorRojo++; }elseif($NA['punteo']<70){ $this->Image('assets/img/advertencia.png',$posicionX,$posicionY,'4','4','PNG'); $contadorAmarillo++; }else{ $this->Image('assets/img/check.png',$posicionX,$posicionY,'4','4','PNG'); $contadorVerde++; } } } } $this->Ln(); $auxGeneral++; $contador++; } $totalPromedio = round($totalPromedio/($contador-1),0); $this->setXY(20, 295); $this->Cell(40, 3, "Total Alumnos evaluados: " . ($contador-1), 1, 0, 'C', false); $this->Ln(); $this->setX(20); $this->Cell(40, 3, "Criterio", 1, 0, "L", true); $this->Cell(15, 3, "No.", 1, 0, "L", true); $this->Cell(15, 3, "%.", 1, 0, "L", true); $this->Ln(); $this->setX(20); $this->Cell(40, 3, "De 0 a 59", 1, 0, "L", false); $this->Cell(15, 3, $contadorRojo, 1, 0, "L", false); $this->Cell(15, 3, round(($contadorRojo * 100) / ($contador-1), 0) . "%", 1, 0, "L", false); $this->Ln(); $this->setX(20); $this->Cell(40, 3, "De 60 a 69", 1, 0, "L", false); $this->Cell(15, 3, $contadorAmarillo, 1, 0, "L", false); $this->Cell(15, 3, round(($contadorAmarillo * 100) / ($contador-1), 0) . "%", 1, 0, "L", false); $this->Ln(); $this->setX(20); $this->Cell(40, 3, "De 70 a 100", 1, 0, "L", false); $this->Cell(15, 3, $contadorVerde, 1, 0, "L", false); $this->Cell(15, 3, round(($contadorVerde * 100) / ($contador-1), 0) . "%", 1, 0, "L", false); $this->Ln(); $this->setX(20); $this->Cell(40, 3, utf8_decode("Nota Máxima"), 1, 0, "L", false); $this->Cell(15, 3, $notaMayor, 1, 0, "L", false); $this->Ln(); $this->setX(20); $this->Cell(40, 3, utf8_decode("Nota Mínima"), 1, 0, "L", false); $this->Cell(15, 3, $notaMenor, 1, 0, "L", false); $this->Ln(); $this->setX(20); //calcular el promedio $this->Cell(40, 3, "Nota Promedio", 1, 0, "L", false); $this->Cell(15, 3, $totalPromedio, 1, 0, "L", false); } } } PKZx Factura.phpnu[AddPage(); $pdf->Image('http://localhost/sistema_zapateria/assets/img/logo_fact.png',10,10,50); $pdf->addSociete( utf8_decode("Sistema Zapatería"), "1ra calle 2-35 zona 5 Chimaltenango\n" . "Venta de zapatos\n". "Todo tipo de calzado\n"); $pdf->fact_dev( "No. 00001",'Recibo serie " B"' ); $pdf->addDate(date("d/m/y")); $pdf->addClient("CL01"); $pdf->addPageNumber("1"); $pdf->addClientAdresse(utf8_decode("Nombre: Rudy Misael Ajuchán\nDirección: 1ra calle 8-25 zona 5 sumpango\nTelefono: 2930-2039\nNIT: 9568439-5")); $pdf->addReglement("Verificar al recibir la factura"); $pdf->addEcheance(date("d/m/y")); $cols=array( utf8_decode("CÓDIGO") => 16, utf8_decode("DESCRIPCIÓN") => 85, "CANTIDAD" => 22, "P. UNITARIO" => 33, "TOTAL" => 34); $pdf->addCols( $cols); $cols=array( utf8_decode("CÓDIGO") => 'C', utf8_decode("DESCRIPCIÓN") => 'L', "CANTIDAD" => 'C', "P. UNITARIO" => 'R', "TOTAL" => 'R'); $pdf->addLineFormat( $cols); $y = 109; $line=array( utf8_decode("CÓDIGO") => '1', utf8_decode("DESCRIPCIÓN") => utf8_decode('Laptop asus vivobook core i5 8va HDD 1T 8GB ram 8h autonomía'), "CANTIDAD" => '1', "P. UNITARIO" => 'Q. 5000', "TOTAL" => 'Q. 5000'); $size = $pdf->addLine( $y, $line ); $y += $size + 2; $line=array( utf8_decode("CÓDIGO") => '1', utf8_decode("DESCRIPCIÓN") => utf8_decode('Laptop asus vivobook core i5 8va HDD 1T 8GB ram 8h autonomía'), "CANTIDAD" => '1', "P. UNITARIO" => 'Q. 5000', "TOTAL" => 'Q. 5000'); $size = $pdf->addLine( $y, $line ); $pdf->RoundedRect(10, 257, 120, 20, 4, '13', 'DF'); $pdf->setXY(52,260); $pdf->SetFont('Arial','B',12); $pdf->Write(1,"Cifras en letras"); $pdf->setXY(12,266); $pdf->SetFont('Arial','',11); //conversion a letras $totalpagar=1990.15; $v=new CifrasEnLetras(); $letra=($v->convertirEurosEnLetras($totalpagar)); //fin conversion $pdf->Write(1,utf8_decode($letra)); $pdf->setXY(150 ,258); $pdf->RoundedRect(148, 257, 50, 20, 4, '13', 'DF'); $pdf->Line(167,277,167,257); $pdf->setXY(149,261); $pdf->SetFont('Arial','',8); $pdf->Write(1,"total sin iva"); $pdf->setXY(149,266); $pdf->Write(1,"iva"); $pdf->setXY(149,271); $pdf->Write(1,"total a pagar"); $pdf->setXY(170,261); $pdf->Write(1,"Q. 100.00"); $pdf->setXY(170,266); $pdf->Write(1,"Q. 100.00"); $pdf->setXY(170,271); $pdf->Write(1,"Q. 100.00"); $pdf->Output(); ?>PKZcuadros_ingles_por_curso.phpnu[Image('assets/img/logo_ceg_redondo2.png','185','10','17','17','PNG'); //datos del alumno $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(20,10); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20,15); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("Listado de alumnos área de ingles 2025")); $this->setXY(20,30); $this->SetFont('Arial','B',12);$this->Cell(40,10,'Nombre del nivel: '.utf8_decode($nombreCurso)); $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial','I',6); $this->setXY(20,45); $this->Cell(7,5,'No',1,0,'C',true); $this->Cell(7,5,'Carnet',1,0,'C',true); $this->Cell(70,5,'Apellidos y nombres del alumno',1,0,'C',true); $this->Cell(15,5,'Grado',1,0,'C',true); $this->Ln(); //Buscar los datos $consultas=new Grados3(); $datosAlumnos=$consultas->buscarAlumnoI($id_clase_ingles); $this->SetWidths(array(7,7,70,15)); if($datosAlumnos){ $this->SetFont('Arial','I',6); $contador=1; $this->SetFont('Arial','I',6); foreach($datosAlumnos as $fila){ $this->setX(20); $this->Row(array($contador,$fila['carnet'],$fila['apellidos'].', '.$fila['nombres'],$fila['nombre_corto']), $contador); //$this->Cell(5,5,$contador,1,0,'C',false); //$this->Cell(8,5,$fila['carnet'],1,0,'C',false); //$this->SetFont('Arial','I',7); /* $this->Cell(48,5,utf8_decode($fila['apellidos'].', '.$fila['nombres']),1,0,'L',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',true); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',true); $this->Cell(7,5,'',1,0,'C',false); $this->Ln(); */ $contador++; } } } /* PARA MULTICELL*/ var $widths; var $aligns; function SetWidths($w) { //Set the array of column widths $this->widths=$w; } function SetAligns($a) { //Set the array of column alignments $this->aligns=$a; } function Row($data, $contador) { //Calculate the height of the row $nb=0; for($i=0;$iNbLines($this->widths[$i],$data[$i])); $h=5*$nb; //Issue a page break first if needed $this->CheckPageBreak($h); //Draw the cells of the row for($i=0;$iwidths[$i]; $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L'; //Save the current position $x=$this->GetX(); $y=$this->GetY(); //Draw the border $this->Rect($x,$y,$w,$h); //Print the text $this->MultiCell($w,5,$data[$i],0,$a); //Put the position to the right of the cell $this->SetXY($x+$w,$y); } //Go to the next line $this->Ln($h); } function CheckPageBreak($h) { //If the height h would cause an overflow, add a new page immediately if($this->GetY()+$h>$this->PageBreakTrigger) $this->AddPage($this->CurOrientation); } function NbLines($w,$txt) { //Computes the number of lines a MultiCell of width w will take $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 and $s[$nb-1]=="\n") $nb--; $sep=-1; $i=0; $j=0; $l=0; $nl=1; while($i<$nb) { $c=$s[$i]; if($c=="\n") { $i++; $sep=-1; $j=$i; $l=0; $nl++; continue; } if($c==' ') $sep=$i; $l+=$cw[$c]; if($l>$wmax) { if($sep==-1) { if($i==$j) $i++; } else $i=$sep+1; $sep=-1; $j=$i; $l=0; $nl++; } else $i++; } return $nl; } /* PARA MULTICELL*/ } ?>PKZr%r% cuadros.phpnu[AddExtGState(array('ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if(!empty($this->extgstates) && $this->PDFVersion<'1.4') $this->PDFVersion='1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach($this->extgstates as $k=>$extgstate) $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction='R') { if ($direction=='R') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',1,0,0,1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='L') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',-1,0,0,-1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='U') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,1,-1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='D') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,-1,1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); else $s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0) { $font_angle+=90+$txt_angle; $txt_angle*=M_PI/180; $font_angle*=M_PI/180; $txt_dx=cos($txt_angle); $txt_dy=sin($txt_angle); $font_dx=cos($font_angle); $font_dy=sin($font_angle); $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',$txt_dx,$txt_dy,$font_dx,$font_dy,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } //**************************************************************************** */ // Tabla coloreada function GenerarCuadro($id_grado) { //FONDO $this->Image('assets/img/logo_ceg_redondo2.png','185','10','17','17','PNG'); //datos del alumno $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(20,10); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20,15); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("Registro de Resultados de Evaluación Bimestral")); $this->setXY(20,20); $this->SetFont('Arial','B',9);$this->Cell(40,10,"del Rendimiento Escolar - Ciclo Escolar 2025"); $this->setXY(140,30); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Bimestre: _________________________"); $this->setXY(140,36); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Maestro: _________________________"); $this->setXY(140,42); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Hora: _________________________"); $this->setXY(20,55); //datos $consultas=new Grados2(); $Grado=$consultas->BuscarNG($id_grado); foreach($Grado as $grados){ $this->SetFont('Arial','B',12);$this->Cell(40,10,$grados['nombre_corto']); } $this->setXY(10,70); $this->Cell(55,15,'',1,0,'C',false); //Empieza la cabecera $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial','I',6); $this->setXY(68,55); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $textoA=$this->TextWithDirection(156,88,'Responsabilidad (5 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(163,88,utf8_decode('Desempeño en clase (5 pts)'),'U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(170,88,'Total zona y afectivo (70 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(177,88,'Primer Parcial (15 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(184,88,'Segundo Parcial (15 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(191,88,'Mejoramiento (15 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(198,88,utf8_decode('Total exámenes (30 pts)'),'U'); $this->Cell(7,40,$textoA,1,0,'C',false); $this->SetFont('Arial','',7); $this->setXY(68,90); $this->Cell(84,5,'Procedimental',1,0,'C',true); $this->Cell(14,5,'Afectivo',1,0,'C',true); $this->Cell(7,10,'',1,0,'C',true); $this->Cell(28,5,'Cognositivo',1,0,'C',true); $this->SetFont('Arial','',7); $this->setXY(7,95); $this->Cell(5,5,'No',1,0,'C',true); $this->Cell(8,5,'Carnet',1,0,'C',true); $this->Cell(48,5,'Apellidos y nombres del alumno',1,0,'C',true); $this->Cell(7,5,'1',1,0,'C',true); $this->Cell(7,5,'2',1,0,'C',true); $this->Cell(7,5,'3',1,0,'C',true); $this->Cell(7,5,'4',1,0,'C',true); $this->Cell(7,5,'5',1,0,'C',true); $this->Cell(7,5,'6',1,0,'C',true); $this->Cell(7,5,'7',1,0,'C',true); $this->Cell(7,5,'8',1,0,'C',true); $this->Cell(7,5,'9',1,0,'C',true); $this->Cell(7,5,'10',1,0,'C',true); $this->Cell(7,5,'11',1,0,'C',true); $this->Cell(7,5,'12',1,0,'C',true); $this->Cell(7,5,'1',1,0,'C',true); $this->Cell(7,5,'2',1,0,'C',true); $this->Cell(7,5,'T',1,0,'C',true); $this->Cell(7,5,'1',1,0,'C',true); $this->Cell(7,5,'2',1,0,'C',true); $this->Cell(7,5,'3',1,0,'C',true); $this->Cell(7,5,'T',1,0,'C',true); $this->Cell(7,5,'F',1,0,'C',true); $this->Ln(); //Buscar los datos $datosAlumnos=$consultas->buscarAlumno($id_grado); if($datosAlumnos){ $contador=1; foreach($datosAlumnos as $fila){ $this->SetFont('Arial','I',6); $this->setX(7); $this->Cell(5,5,$contador,1,0,'C',false); $this->Cell(8,5,$fila['carnet'],1,0,'C',false); $this->SetFont('Arial','I',7); $this->Cell(48,5,$fila['apellidos'].', '.$fila['nombres'],1,0,'L',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',true); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',true); $this->Cell(7,5,'',1,0,'C',false); $this->Ln(); $contador++; } } } } ?>PKZYβGdoc/setcompression.htmnu[ SetCompression

SetCompression

SetCompression(boolean compress)

Descripcin

Activa o desactiva la compresion de pgina. Cuando esta activada, la representacin de cada pgina es comprimida, lo cual da una razn de compresin de cerca de 2 para el documento resultante.
La compresin esta en activo por defecto.

Nota: la extensin Zlib se requiere para esta caracterstica. Si no esta presente se cambiar a inactiva.

Parmetros

compress
Boleano indicando si la compresin debe ser activada.

PKZ:;tSS doc/getx.htmnu[ GetX

GetX

float GetX()

Descripcin

Retorna la abscisa de la posicin actual.

Vea adems

SetX, GetY, SetY
PKZ doc/image.htmnu[ Image

Image

Image(string file [, float x [, float y [, float w [, float h [, string type [, mixed link]]]]]])

Descripcin

Imprime una imagen en la pgina. Las dimensiones pueden establecerse de diferentes maneras:
  • mediante la especificacin explcita de ancho y alto (en unidades definidas por el usuario o en ppp)
  • mediante la indicacin de una sola de las dimensiones: la otra se calcular automticamente para mantener la proporcin original
  • sin indicar ninguna dimensin explcita. En este caso, la imagen se imprime a 96 puntos por pulgada
Los formatos admitidos son JPEG, PNG y GIF. La extensin GD es necesaria para GIF.

Para el JPEG, se admiten todas sus versiones:
  • escala de grises
  • color verdadero (24 bits)
  • CMYK (32 bits)
Para el PNG se permiten:
  • escala de grises de 8 bits como mximo (256 niveles)
  • color indexado
  • color verdadero (24 bits)
Para el GIF: en el caso de un GIF animado, slo ser mostrado el primer fotograma.

Se admite transparencias.

El formato puede ser especificado explcitamente o deducido a partir de la extensin del fichero.

Es posible asociar un enlace a la imagen.

Nota: si una imagen se utiliza varias veces, slo una copia ser incrustada en el archivo.

Parmetros

file
Nombre del archivo que contiene la imagen.
x
Abscisa de la esquina superior izquierda. Si no se especifica o es igual a null, se utilizar la abscisa actual.
y
Ordenada de la esquina superior izquierda. Si no se especifica o es igual a null, se utilizar la ordenada actual, adems, un salto de pgina es invocado primero si es necesario (en caso de que est habilitado el salto de pgina automtico) y, despus de la llamada, la ordenada actual se mueve a la parte inferior de la imagen.
w
Ancho de la imagen en la pgina. Existen tres posibilidades:
  • Si el valor es positivo, ste ser el ancho en la unidad de medida definida por el usuario.
  • Si el valor es negativo, el valor absoluto ser la resolucin horizontal en ppp.
  • Si no se especifica o es cero, se calcula automticamente
h
Alto de la imagen en la pgina. Existen tres posibilidades:
  • Si el valor es positivo, ste ser la altura en la unidad de medida definida por el usuario.
  • Si el valor es negativo, el valor absoluto ser la resolucin vertical en ppp.
  • Si no se especifica o es cero, se calcula automticamente
type
Formato de la imagen. Los posibles valores son (indiferente a maysculas): JPG, JPEG, PNG y GIF. Si no se especifica, el tipo se deduce de la extensin del fichero.
link
URL o identificador devuelto por el mtodo AddLink().

Ejemplo

// Inserta un logo en la esquina superior izquierda a 300 ppp
$pdf->Image('logo.png',10,10,-300);
// Inserta una imagen dinmica a travs de una URL
$pdf->Image('http://chart.googleapis.com/chart?cht=p3&chd=t:60,40&chs=250x100&chl=Hello|World',60,30,90,0,'PNG');

Vea adems

AddLink
PKZqDV>>doc/getpagewidth.htmnu[ GetPageWidth

GetPageWidth

float GetPageWidth()

Descripcin

Devuelve el ancho actual de la pgina.

Vea adems

GetPageHeight
PKZH„~;; doc/rect.htmnu[ Rect

Rect

Rect(float x, float y, float w, float h [, string style])

Descripcin

Produce un rectngulo. Este puede ser dibujado (solamente el borde), relleno (sin borde) o ambos.

Parmetros

x
Abscisa del la esquina superior izquierda.
y
Ordenada de la esquina superior izquierda.
w
Ancho.
h
Alto.
style
Estilo de interpretacin. Los posibles valores son:
  • D o una cadena vacia: draw. Este es el valor por defecto.
  • F: fill
  • DF o FD: draw and fill

Vea adems

SetLineWidth, SetDrawColor, SetFillColor
PKZFP??doc/setfillcolor.htmnu[ SetFillColor

SetFillColor

SetFillColor(int r [, int g, int b])

Descripcin

Define el color usado por todas las operaciones de relleno (rectngulos rellenos y fondos de celdas). Este puede ser expresado en componentes RGB o escala de grises. El mtodo puede ser invocado antes que la primera pgina sea creada y el valor es conservado de pgina a pgina.

Parmetros

r
Si g y b se establecen, componente rojo; si no, indica el nivel de gris. Valor entre 0 y 255.
g
Componente verde (entre 0 y 255).
b
Componente azul (entre 0 y 255).

Vea adems

SetDrawColor, SetTextColor, Rect, Cell, MultiCell
PKZ77doc/addfont.htmnu[ AddFont

AddFont

AddFont(string family [, string style [, string file]])

Descripcin

Importa una fuente TrueType, OpenType o Type1 y la hace disponible. Es necesario primero generar un archivo de definicin de fuente con la utilidad MakeFont.
El archivo de definicin (y el archivo de fuente mismo cuando es incorporado) debe estar presente en el directorio de fuentes. Si no puede ser encontrado, es generado el error "Could not include font definition file".

Parmetros

family
Familia de fuente. El nombre puede ser elegido de forma arbitraria.
style
Estilo de fuente. Los valores posibles son (case insensitive):
  • cadena vaca: regular
  • B: bold (negrita)
  • I: italic (cursiva)
  • BI o IB: bold italic (negrita cursiva)
El valor por defecto es regular.
file
El archivo de definicin de fuente.
Por defecto, el nombre es compuesto de la familia y estilo de fuente, en minsculas y sin espacios.

Ejemplo

$pdf->AddFont('Comic','I');
es equivalente a:
$pdf->AddFont('Comic','I','comici.php');

Vea adems

SetFont
PKZ ?e GetY

GetY

float GetY()

Descripcin

Retorna la ordenada de la posicin actual.

Vea adems

SetY, GetX, SetX
PKZ!&doc/addlink.htmnu[ AddLink

AddLink

int AddLink()

Descripcin

Crea un nueva referencia interna y retorna su identificador. Una referencia interna es un rea seleccionable la cual lo dirige a otro lugar dentro del documento.
Entonces, el identificador puede ser pasado a Cell(), Write(), Image() o Link(). El destino se define con SetLink().

Vea adems

Cell, Write, Image, Link, SetLink
PKZ?\doc/setauthor.htmnu[ SetAuthor

SetAuthor

SetAuthor(string author [, boolean isUTF8])

Descripcin

Define el autor del documento.

Parmetros

author
El nombre del autor.
isUTF8
Indica si la cadena est codificada en la norma ISO-8859-1 (false) o UTF-8 (true).
Valor por defecto: false.

Vea adems

SetCreator, SetKeywords, SetSubject, SetTitle
PKZ@EEdoc/setcreator.htmnu[ SetCreator

SetCreator

SetCreator(string creator [, boolean isUTF8])

Descripcin

Define el creador de el documento. Este es tpicamente el nombre de la aplicacin que genera el pdf.

Parmetros

creator
El nombre del creador.
isUTF8
Indica si la cadena est codificada en la norma ISO-8859-1 (false) o UTF-8 (true).
Valor por defecto: false.

Vea adems

SetAuthor, SetKeywords, SetSubject, SetTitle
PKZF doc/line.htmnu[ Line

Line

Line(float x1, float y1, float x2, float y2)

Descripcin

Traza una lnea entre dos puntos.

Parmetros

x1
Abscisa del primer punto.
y1
Ordenada del primer punto.
x2
Abscisa del segundo punto.
y2
Ordenada del segundo punto.

Vea adems

SetLineWidth, SetDrawColor
PKZ& & doc/multicell.htmnu[ MultiCell

MultiCell

MultiCell(float w, float h, string txt [, mixed border [, string align [, boolean fill]]])

Descripcin

Este mtodo permite imprimir texto con saltos de lnea. Estos pueden ser automticos (tan pronto como el texto alcanza el borde derecho de la celda) o explcito (via el carcter \n). Tantas celdas como sean necesarias son creadas, uno debajo de otra.
El texto puede ser alineado, centrado o justificado. El bloque de celda puede ser enmarcado y el fondo impreso.

Parmetros

w
Ancho de celdas. Si 0, estos se extienden hasta l mrgen derecha de la pgina.
h
Alto de las celdas.
txt
Cadena para imprimir.
border
Indica si los bordes deben ser dibujados al rededor del bloque la celda. El valor puede ser un nmero:
  • 0: no borde
  • 1: marco
o una cadena conteniendo algn o todos los siguientes carcteres (en cualquier orden):
  • L: izquierda
  • T: superior
  • R: derecha
  • B: inferior
Valor por defecto: 0.
align
Establece la alineacin de texto. Los posibles valores son:
  • L: alineacin a la izquierda
  • C: centrado
  • R: alineacin a la derecha
  • J: justificacin (valor por defecto)
fill
Indica si el fondo de la celda debe ser dibujado (true) o transparente (false). Valor por defecto: false.

Vea adems

SetFont, SetDrawColor, SetFillColor, SetTextColor, SetLineWidth, Cell, Write, SetAutoPageBreak
PKZz-cc doc/write.htmnu[ Write

Write

Write(float h, string txt [, mixed link])

Descripcin

Este mtodo imprime el texto desde la posicin actual. Cuando el mrgen derecho es alcanzado (o el carcter \n es alcanzado) se produce un salto de lnea y el texto continua desde el mrgen izquierdo. Una ves el mtodo termine, la posicin actual es dejada justo al final del texto.
Es posible poner una referencia sobre el texto.

Parmetros

h
Alto de lnea.
txt
Cadena a ser impresa.
link
URL o identificador regresado por AddLink().

Ejemplo

// Comienza con fuente regular
$pdf->SetFont('Arial','',14);
$pdf->Write(5,'Visit ');
// Then put a blue underlined link
$pdf->SetTextColor(0,0,255);
$pdf->SetFont('','U');
$pdf->Write(5,'www.fpdf.org','http://www.fpdf.org');

Vea adems

SetFont, SetTextColor, AddLink, MultiCell, SetAutoPageBreak
PKZwwdoc/output.htmnu[ Output

Output

string Output([string dest [, string name [, boolean isUTF8]]])

Descripcin

Enva el documento a un destino dado: una cadena, un fichero local o al navegador. En el ltimo caso, puede utilizarse la extensin -plug in- (si existe) o forzarse un cuadro de dilogo de descarga.
El mtodo invoca ante todo a Close() si es necesario cerrar el documento.

Parmetros

dest
Destino al que enviar el documento. Puede tener uno de los siguientes valores:
  • I: enva el fichero al navegador de forma que se usa la extensin (plug in) si est disponible.
  • D: enva el fichero al navegador y fuerza la descarga del fichero con el nombre especificado por name.
  • F: guarda el fichero en un fichero local de nombre name.
  • S: devuelve el documento como una cadena.
El valor por defecto es I.
name
El nombre del fichero. ste es ignorado en caso de destino S.
El valor por defecto es doc.pdf.
isUTF8
Indica si name es codificado en ISO-8859-1 (false) UTF-8 (true). Solo usa destinos I y D.
El valor por defecto es false.

Vea adems

Close
PKZb-Tdoc/settextcolor.htmnu[ SetTextColor

SetTextColor

SetTextColor(int r [, int g, int b])

Descripcin

Define el color usado por el texto. Este puede ser expresado en componentes RGB o escala de grises. El mtodo puede ser invocado antes que la primera pgina sea creada y el valor es retenido de pgina a pgina.

Parmetros

r
Si g y b son suministrados, componente rojo; si no, indica el nivel de grises. Valor entre 0 y 255.
g
Componente verde (entre 0 y 255).
b
Componente azul (entre 0 y 255).

Vea adems

SetDrawColor, SetFillColor, Text, Cell, MultiCell
PKZ\Ʈ,, doc/cell.htmnu[ Cell

Cell

Cell(float w [, float h [, string txt [, mixed border [, int ln [, string align [, boolean fill [, mixed link]]]]]]])

Descripcin

Imprime una celda (de rea rectangular) bordes opcionales, color de fondo y secuencia de carcteres La esquina superior izquierda de la celda corresponde a la posicin actual. El texto puede ser alineado o centrado. Despues de invocar, la posicin actual se desplaza a la derecha o la siguietne lnea. Es posible poner una referencia en el texto.
Si esta el salto de pgina automtico habilitado y la celda esta por fuera del lmite, es realizado un salto de pgina antes de producir la salida.

Parmetros

w
Ancho de Celda. Si es 0, la celda se extiende hasta la mrgen derecha.
h
Alto de celda. Valor por defecto: 0.
txt
cadena a ser impresa. Valor por defecto: cadena vacia.
border
Indica si los bordes deben se dibujados alrededor de la celda. El valor puede ser un nmero:
  • 0: sin borde
  • 1: marco
o una cadena que contenga una o una combinacin de los siguientes caracteres (en cualquier orden):
  • L: izquierda
  • T: superior
  • R: derecha
  • B: inferior
Valor por defecto: 0.
ln
Indica donde la posicin actula debera ir antes de invocar. Los valores posibles son:
  • 0: a la derecha
  • 1: al comienzo de la siguiente lnea
  • 2: debajo
Poner 1 es equivalente a poner 0 y llamar justo despues Ln(). Valor por defecto: 0.
align
Permite centrar o alinear el texto. Los posibles valores son:
  • L o una cadena vacia: alineacin izquierda (valor por defecto)
  • C: centro
  • R: alineacin derecha
fill
Indica si elfondo de la celda debe ser dibujada (true) o transparente (false). Valor por defecto: false.
link
URL o identificador retornado por AddLink().

Ejemplo

// Set font
$pdf->SetFont('Arial','B',16);
// Move to 8 cm to the right
$pdf->Cell(80);
// Texto centrado en una celda con cuadro 20*10 mm y salto de lnea
$pdf->Cell(20,10,'Title',1,1,'C');

Vea adems

SetFont, SetDrawColor, SetFillColor, SetTextColor, SetLineWidth, AddLink, Ln, MultiCell, Write, SetAutoPageBreak
PKZ4EEdoc/setlink.htmnu[ SetLink

SetLink

SetLink(int link [, float y [, int page]])

Descripcin

Define la pgina y posicin al que un enlace hace referencia.

Parmetros

link
El identificador de enlace retornado por AddLink().
y
La ordenada de la posicin objetivo; -1 indica la posicin actual. El valor por defecto es 0 (parte superior de la pgina).
page
El nmero de la pgina referenciada; -1 indica la pgina actual. Este es el valor por defecto.

Vea adems

AddLink
PKZXWWdoc/setkeywords.htmnu[ SetKeywords

SetKeywords

SetKeywords(string keywords [, boolean isUTF8])

Descripcin

Asocia las palabras claves con el documento, generalmente en la forma de 'palabra_clave1 palabra_clave2 ...'.

Parmetros

keywords
La lista de palabras claves.
isUTF8
Indica si la cadena est codificada en la norma ISO-8859-1 (false) o UTF-8 (true).
Valor por defecto: false.

Vea adems

SetAuthor, SetCreator, SetSubject, SetTitle
PKZp,Feedoc/setmargins.htmnu[ SetMargins

SetMargins

SetMargins(float left, float top [, float right])

Descripcin

Define los mrgenes izquierdo, superior, y derecho. Por defecto, son iguales a 1 cm. Invoque este mtodo para cambiarlas.

Parmetros

left
Mrgen izquierdo.
top
Mrgen superior.
right
Mrgen derecho. Valor por defecto es el mismo que el de la izquierda.

Vea adems

SetLeftMargin, SetTopMargin, SetRightMargin, SetAutoPageBreak
PKZ>O O doc/addpage.htmnu[ AddPage

AddPage

AddPage([string orientation [, mixed size [, int rotation]]])

Descripcin

Aade una nueva pgina al documento. Si la pgina ya est presente, el mtodo Footer() es invocado primero para producir el pie de pgina. Entonces es aadida la pgina, la posicin actual se establece en la esquina superior izquierda de acuerdo a los mrgenes izquierda y superior, y el Header() es invocado para mostrar el encabezado.
La fuente que fue fijada antes de ser invocada es restaurada automticamente. No es necesario invocar nuevamente SetFont() si desea continuar con la misma fuente. Esto tambin se aplica para colores y ancho de lneas.
El origen del sistema de coordenadas es la esquina superior izquierda y se incrementan hacia abajo.

Parmetros

orientation
Orientacin de pgina. Los valores posibles son (indiferente a maysculas):
  • P o Portrait (normal)
  • L o Landscape (apaisado)
El valor por defecto el mismo que que se ha pasado al constructor.
size
Formato de pgina. Puede ser uno de los siguientes valores (indiferente a maysculas):
  • A3
  • A4
  • A5
  • Letter
  • Legal
o un array conteniendo el ancho y el alto (en unidades definidas por el usuario).

El valor por defecto es el que fue pasado al constructor.
rotation
ngulo por el cual rotar la pgina. Debe ser un mltiplo de 90; valores positivos rotan la pgina en el sentido de las agujas del reloj. El valor por defecto es 0.

Vea adems

__construct, Header, Footer, SetMargins
PKZTdoc/setsubject.htmnu[ SetSubject

SetSubject

SetSubject(string subject [, boolean isUTF8])

Descripcin

Define el tema del documento.

Parmetros

subject
El tema.
isUTF8
Indica si la cadena est codificada en la norma ISO-8859-1 (false) o UTF-8 (true).
Valor por defecto: false.

Vea adems

SetAuthor, SetCreator, SetKeywords, SetTitle
PKZ)@@doc/getpageheight.htmnu[ GetPageHeight

GetPageHeight

float GetPageHeight()

Descripcin

Devuelve la altura actual de la pgina.

Vea adems

GetPageWidth
PKZ# LL doc/link.htmnu[ Link

Link

Link(float x, float y, float w, float h, mixed link)

Descripcin

Pone una referencia a un rea rectangular de la pgina. El texto o la imagen referenciada son generalmente puesta via Cell(), Write() o Image(), pero este mtodo puede ser til por ejemplo para definir un rea seleccionable dentro una imagen.

Parmetros

x
Abscisa de la esquina superior izquierda de el rectngulo.
y
Ordenada de la esquina superior izquierda del rectngulo.
w
Ancho del rectngulo.
h
Alto del rectngulo.
link
URL o identificador regresada por AddLink().

Vea adems

AddLink, Cell, Write, Image
PKZ,Uww doc/error.htmnu[ Error

Error

Error(string msg)

Descripcin

ste mtodo es llamado automticamente in caso de un error fatal. ste mtodo simplemente devuelve una excepcin con el mensaje correspondiente.
Una clase puede heredar ste mtodo para personalizar el tratamiento del error. Pero el mtodo nunca debe devolver, en tal caso, el resultado del documento puede ser errneo.

Parmetros

msg
El mensaje de error.

PKZVyydoc/settopmargin.htmnu[ SetTopMargin

SetTopMargin

SetTopMargin(float margin)

Descripcin

Define el mrgen superior. El mtodo puede ser invocado antes de la creacin de la primera pgina.

Parmetros

margin
El mrgen.

Vea adems

SetLeftMargin, SetRightMargin, SetAutoPageBreak, SetMargins
PKZsI{{doc/__construct.htmnu[ __construct

__construct

__construct([string orientation [, string unit [, mixed size]]])

Descripcin

Esta es la clase constructor. Permite establecer el formato de pgina, la orientacin y la unidad de medida usada en todos los mtodos (excepto para tamaos de fuentes).

Parmetros

orientation
Orientacin de pgina por defecto. Los posibles valores son (indiferente a maysculas):
  • P o Portrait (normal)
  • L o Landscape (apaisado)
Valor por defecto es P.
unit
Unidad de medida de usuario. Los posibles valores son:
  • pt: punto
  • mm: milimetro
  • cm: centimetro
  • in: pulgada
Un punto es igual a 1/72 de pulgada, es decir cerca de 0.35 mm (siendo una pulgada 2.54 cm). Esta es una unidad muy comn en tipografa; los tamaos de fuentes son expresados en esa unidad.

Valor por defecto es mm.
size
El formato usado por las pginas. Es puede ser uno de los siguientes valores (indiferente a maysculas):
  • A3
  • A4
  • A5
  • Letter
  • Legal
o un formato personalizado en la forma de un array de dos elementos conteniendo el ancho y el alto (expresado en la unidad dada por unit).

Valor por defecto es A4.

Ejemplo

Ejemplo con un formato de pgina personalizado en 100x150 mm:
$pdf = new FPDF('P','mm',array(100,150));

PKZ5  doc/setfont.htmnu[ SetFont

SetFont

SetFont(string family [, string style [, float size]])

Descripcin

Establece la fuente usada para imprimir cadenas de carcteres. Es obligatorio invocar este mtodo por lo menos una vez antes de imprimir texto.
La fuente puede ser una estndar o una adicionada via el mtodo AddFont(). La fuentes estndar usan codificacin cp1252 (Western Europe) de Windows.
El mtodo puede ser invocado antes que la primera pgina sea creada y es mantenido de pgina a pgina.
Si slo desea cambiar el tamao de la fuente actual, es ms simple invocar SetFontSize().

Nota: los archivos de definicin de fuente deben ser accesibles. Se buscan en este orden:
  • El directorio especificado por la constante FPDF_FONTPATH (si es que ha sido definida)
  • El directorio de fuentes incluido en el directorio que contiene fpdf.php (si es que existe)
  • Cualquier directorio accesible mediante include()
Ejemplo del primer casa:
define('FPDF_FONTPATH','/home/www/font');
require('fpdf.php');
Si el archivo correspondiente a la fuente requerida no es encuentra, se genera el error "Could not include font definition file".

Parmetros

family
Familia de fuente. Puede ser un nombre definido por AddFont() o una de las familias estndar (no sensible a maysculas o minsculas):
  • Courier (fixed-width)
  • Helvetica o Arial (sinnimo; sans serif)
  • Times (serif)
  • Symbol (symbolic)
  • ZapfDingbats (symbolic)
Tambien es posible pasar un cadena vacia. En este caso, se mantiene la familia actual.
style
Estilo de fuente. Los valores posibles son (no sensible a maysculas o minsculas):
  • cadena vacia: regular
  • B: bold
  • I: italic
  • U: underline
o cualquier combinacin. El valor por defecto es regular. Los estilos Bold e italic no aplican para Symbol y ZapfDingbats.
size
Tamao de fuente en puntos.
El valor por defecto es el tamao actual. Si ningn tamao ha sido especificado desde el comienzo del documento, toma el valor de 12.

Ejemplo

// Times regular 12
$pdf->SetFont('Times');
// Arial bold 14
$pdf->SetFont('Arial','B',14);
// Elimina bold
$pdf->SetFont('');
// Times bold, italic y underlined 14
$pdf->SetFont('Times','BIU');

Vea adems

AddFont, SetFontSize, Cell, MultiCell, Write
PKZ'doc/acceptpagebreak.htmnu[ AcceptPageBreak

AcceptPageBreak

boolean AcceptPageBreak()

Descripcin

En cualquier momento que un salto de pgina es encontrado, es invocado el mtodo, y el salto es emitido o no dependiendo del valor retornado. La implementacin por defecto retorna un valor de acuerdo a el modo seleccionado por SetAutoPageBreak().
Este mtodo es invocado automticamente y no debera ser llamado directamente por la aplicacin.

Ejemplo

El mtodo es anulado por una clase heredada con el propsito de obtener un diseo de tres columnas.
class PDF extends FPDF
{
var $col = 0;

function SetCol($col)
{
    // Move position to a column
    $this->col = $col;
    $x = 10+$col*65;
    $this->SetLeftMargin($x);
    $this->SetX($x);
}

function AcceptPageBreak()
{
    if($this->col<2)
    {
        // Go to next column
        $this->SetCol($this->col+1);
        $this->SetY(10);
        return false;
    }
    else
    {
        // Regrese a la primera columna y emita un salto de pgina
        $this->SetCol(0);
        return true;
    }
}
}

$pdf = new PDF();
$pdf->AddPage();
$pdf->SetFont('Arial','',12);
for($i=1;$i<=300;$i++)
    $pdf->Cell(0,5,"Line $i",0,1);
$pdf->Output();

Vea adems

SetAutoPageBreak
PKZN#&&doc/pageno.htmnu[ PageNo

PageNo

int PageNo()

Descripcin

Devuelve el nmero de pgina actual.

Vea adems

AliasNbPages
PKZj6 doc/close.htmnu[ Close

Close

Close()

Descripcin

Termina el documento pdf. No es necesario llamar explicitamente este mtodo debido a que Output() lo hace de forma automtica.
Si el documento no contiene pginas, es invocado AddPage() para prevenir obtener un documento invlido.

Vea adems

Output
PKZJIoodoc/setdrawcolor.htmnu[ SetDrawColor

SetDrawColor

SetDrawColor(int r [, int g, int b])

Descripcin

Define el color usado para las operaciones de graficacin (lineas, rectangulos, y bordes de celdas ). Este puede ser expresado en componentes RGB o en escala de grises. El mtodo puede ser invocado antes de que la primera pgina sea creada y el valor sea conservado de pgina a pgina.

Parmetros

r
Si g y b son suministrados, componente rojo; si no, si no indica nivel de grises. Valores entre 0 y 255.
g
Componente verde (entre 0 y 255)
b
Componente azul (entre 0 y 255)

Vea adems

SetFillColor, SetTextColor, Line, Rect, Cell, MultiCell
PKZwS doc/index.htmnu[ FPDF 1.82 Manual de Referencia

FPDF 1.82 Manual de Referencia

__construct - constructor
AcceptPageBreak - acepta o no un salto de pgina automtico
AddFont - aade una nueva fuente
AddLink - crea una referencia interna
AddPage - aade una nueva pgina
AliasNbPages - define un alias para el nmero de pginas
Cell - imprime un celda
Close - termina el documento
Error - error fatal
Footer - pie de pgina
GetPageHeight - devuelve la altura actual de la pgina
GetPageWidth - devuelve el ancho actual de la pgina
GetStringWidth - calcula la longitud de la cadena
GetX - obtiene la posicin actual de x
GetY - obtiene la posicin actual de y
Header - cabecera de pgina
Image - imprime una imagen
Line - dibuja un lnea
Link - pone una referencia
Ln - salto de lnea
MultiCell - imprime texto con saltos de lnea
Output - guarda o enva el documento
PageNo - nmero de pgina
Rect - dibuja un rectangulo
SetAuthor - establece el autor del documento
SetAutoPageBreak - establece el modo de salto de pagina automtico
SetCompression - cambia la compresin en activo o inactivo
SetCreator - establece el creador del documento
SetDisplayMode - establece el modo de presentacin
SetDrawColor - establece el color de graficacin
SetFillColor - establece el color de relleno
SetFont - establece la fuente
SetFontSize - establece el tamao de la fuente
SetKeywords - asocia las palabras claves con el documento
SetLeftMargin - establece el mrgen izquierdo
SetLineWidth - establece el ancho de la lnea
SetLink - establece el enlace de destino
SetMargins - establece los mrgenes
SetRightMargin - establece el mrgen derecho
SetSubject - establece el tema del documento
SetTextColor - establece el color del texto
SetTitle - establece el ttulo del documento
SetTopMargin - Establece el mrgen superior
SetX - establece la posicin actual de x
SetXY - establece la posicin actual de x y y
SetY - establece la posicin actual de y
Text - imprime una cadena
Write - imprime el siguiente texto
PKZDtrrdoc/footer.htmnu[ Footer

Footer

Footer()

Descripcin

Este mtodo es usado para generar el pie de pgina. Es automticamente invocado por AddPage() y Close() y no sebera ser invocado directamente por la aplicacin. La implementacin en FPDF es vacia, as que si desea un procesamiento especfico debe hacer subclase y sobreescribir el mtodo.

Ejemplo

class PDF extends FPDF
{
function Footer()
{
    // Go to 1.5 cm from bottom
    $this->SetY(-15);
    // Select Arial italic 8
    $this->SetFont('Arial','I',8);
    // Print centered page number
    $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');
}
}

Vea adems

Header
PKZ ttdoc/setautopagebreak.htmnu[ SetAutoPageBreak

SetAutoPageBreak

SetAutoPageBreak(boolean auto [, float margin])

Descripcin

Activa o desactiva el modo de salto de pgina automtico. Cuando es habilitado, el segundo parmetro es la distancia de la parte inferior de la pgina que define al lmite desencadenante. Por defecto, el modo esta activado y el mrgen es 2cm.

Parmetros

auto
Boleano indicando si el modo debera ser activado o desacticado.
margin
Distancia desde la parte inferior de la pgina

Vea adems

Cell, MultiCell, AcceptPageBreak
PKZ` doc/text.htmnu[ Text

Text

Text(float x, float y, string txt)

Descripcin

Imprime una cadena de carcteres. El origen es a la izquierda del primer carcter, sobre la lnea base. Este mtodo permite colocar una cadena precisamente en la pgina, pero es usualmente ms fcil usar Cell(), MultiCell() o Write() los cuales son los mtodos estndades para imprimir texto.

Parmetros

x
Abscisa del origen.
y
Ordenada del origen.
txt
Cadena a ser impresa.

Vea adems

SetFont, SetTextColor, Cell, MultiCell, Write
PKZ6gdoc/aliasnbpages.htmnu[ AliasNbPages

AliasNbPages

AliasNbPages([string alias])

Descripcin

Define un alias para el nmero total de pginas. Se sustituira en el momento que el documento se cierre.

Parmetros

alias
El alias. Valor por defecto: {nb}.

Ejemplo

class PDF extends FPDF
{
function Footer()
{
    // Go to 1.5 cm from bottom
    $this->SetY(-15);
    // Select Arial italic 8
    $this->SetFont('Arial','I',8);
    // Print current and total page numbers
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}

$pdf = new PDF();
$pdf->AliasNbPages();

Vea adems

PageNo, Footer
PKZg#doc/setleftmargin.htmnu[ SetLeftMargin

SetLeftMargin

SetLeftMargin(float margin)

Descripcin

Define el mrgen izquierdo. El mtodo puede ser invocado antes de la creacin de la primera pgina.
Si la abscisa actual esta fuera del rango de la pgina, esta es traida a la margen.

Parmetros

margin
El mrgen.

Vea adems

SetTopMargin, SetRightMargin, SetAutoPageBreak, SetMargins
PKZ "++ doc/ln.htmnu[ Ln

Ln

Ln([float h])

Descripcin

Ejecuta un salto de lnea. La abscisa actual regresa al mrgen izquierdo y la ordenada aumenta en la cantidad pasada como parmetro.

Parmetros

h
La altura del salto.
Por defecto, el valor es igual a la altura de la ltima celda impresa.

Vea adems

Cell
PKZsudoc/getstringwidth.htmnu[ GetStringWidth

GetStringWidth

float GetStringWidth(string s)

Descripcin

Devuelve la longitud de una cadena en la unidad del usuario. Una fuente debe ser seleccionada.

Parmetros

s
La cadena a la cual se le va a calcular la longitud.

PKZrrdoc/header.htmnu[ Header

Header

Header()

Descripcin

Este mtodo es usado para generar la cabecera de pgina. Es automticamente invocada por AddPage() y no deberia ser invocada directamente en la aplicacin. La implementacin en FPDF es vacia, asi que si desea un procesamiento especifico debe generar una subclase y sobreescribir el mtodo.

Ejemplo

class PDF extends FPDF
{
function Header()
{
    // Select Arial bold 15
    $this->SetFont('Arial','B',15);
    // Move to the right
    $this->Cell(80);
    // Framed title
    $this->Cell(30,10,'Title',1,0,'C');
    // Line break
    $this->Ln(20);
}
}

Vea adems

Footer
PKZn@ doc/sety.htmnu[ SetY

SetY

SetY(float y [, boolean resetX])

Descripcin

Establece la ordenada y de forma opcional mueve la abscisa al margen izquierdo. Si el valor pasado es negativo, esta es relativa a la parte inferior de la pgina.

Parmetros

y
El valor de la ordenada.
resetX
Indica si la abscisa debe ser reseteada. El valor por defecto es: true.

Vea adems

GetX, GetY, SetX, SetXY
PKZX."zzdoc/setrightmargin.htmnu[ SetRightMargin

SetRightMargin

SetRightMargin(float margin)

Descripcin

Define el mrgen derecho. El mtodo puede ser invocado antes de la creacin de la primera pgina.

Parmetros

margin
El mrgen.

Vea adems

SetLeftMargin, SetTopMargin, SetAutoPageBreak, SetMargins
PKZbdoc/setfontsize.htmnu[ SetFontSize

SetFontSize

SetFontSize(float size)

Descripcin

Define el tamao de la fuente actual.

Parmetros

size
El tamao (en puntos).

Vea adems

SetFont
PKZ8d.. doc/setx.htmnu[ SetX

SetX

SetX(float x)

Descripcin

Define la abscisa de la posicin actual. Si el valor pasado es negativo, esta es relativa a la derecha de la pgina.

Parmetros

x
El valor de la abscisa.

Vea adems

GetX, GetY, SetY, SetXY
PKZ Edoc/settitle.htmnu[ SetTitle

SetTitle

SetTitle(string title [, boolean isUTF8])

Descripcin

Define el ttulo de el documento.

Parmetros

title
El ttulo.
isUTF8
Indica si la cadena est codificada en la norma ISO-8859-1 (false) o UTF-8 (true).
Valor por defecto: false.

Vea adems

SetAuthor, SetCreator, SetKeywords, SetSubject
PKZ?IIdoc/setdisplaymode.htmnu[ SetDisplayMode

SetDisplayMode

SetDisplayMode(mixed zoom [, string layout])

Descripcin

Define la forma como el documento es presentado al espectador. El nivel de acercamiento puede ser establecido: la pginas pueden ser presentadas completamente en pantalla, ocupar todo el ancho de la ventana, usar el tamao real, ser graduado por un factor especfico de acercamiento o usar el visor por defecto (configurado en el men de Preferencias de Adobe Reader). El esquema de la pgina puede ser tambin especificado: sencillo al mismo tiempo, despliegue continuo, dos columnas o por defecto el visor.

Parmetros

zoom
El acercamiento a usar. Este puede ser uno de los siguiente valores:
  • fullpage: despliega la pgina completa en la pantalla
  • fullwidth: usa el ancho mximo de la pantalla
  • real: usa el tamao real (equivalente a un acercamiento de 100% )
  • default: usa el modo por defecto del visor
o un nmero indicando el factor de acercamiento a ser usado.
layout
El esquema de la pgina. Los posibles valores son:
  • single: despliega una pgina la tiempo
  • continuous: despliega pginas continuamente
  • two: despliega dos pginas en dos columnas
  • default: usa el modo por defecto del visor
El valor por defecto es default.

PKZT\doc/setlinewidth.htmnu[ SetLineWidth

SetLineWidth

SetLineWidth(float width)

Descripcin

Define el ancho de la lnea. Por defecto, el valor es igual a 0.2 mm. El mtodo puede ser llamado antes de la creacin de la primera pgina y el valor es retenido de pgina a pgina.

Parmetros

width
El ancho.

Vea adems

Line, Rect, Cell, MultiCell
PKZ{{ doc/setxy.htmnu[ SetXY

SetXY

SetXY(float x, float y)

Descripcin

Define la abscisa y ordenada de la posicin actual. Si los valores pasados son negativos, ellos son relativos respectivamente a la derecha y la parte inferior de la pgina.

Parmetros

x
El valor de la abscisa.
y
El valor de la ordenada.

Vea adems

SetX, SetY
PKZPƩcuadros_ingles_parcial.phpnu[AddExtGState(array('ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if(!empty($this->extgstates) && $this->PDFVersion<'1.4') $this->PDFVersion='1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach($this->extgstates as $k=>$extgstate) $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction='R') { if ($direction=='R') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',1,0,0,1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='L') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',-1,0,0,-1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='U') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,1,-1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='D') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,-1,1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); else $s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0) { $font_angle+=90+$txt_angle; $txt_angle*=M_PI/180; $font_angle*=M_PI/180; $txt_dx=cos($txt_angle); $txt_dy=sin($txt_angle); $font_dx=cos($font_angle); $font_dy=sin($font_angle); $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',$txt_dx,$txt_dy,$font_dx,$font_dy,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } //**************************************************************************** */ // Tabla coloreada function GenerarCuadro($id_grado) { //FONDO $this->Image('assets/img/logo_ceg_redondo2.png','185','10','17','17','PNG'); //datos del alumno $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(20,10); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20,15); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("Listado de alumnos - parciales 2025")); $this->setXY(95,23); //datos $consultas=new Grados2(); $Grado=$consultas->BuscarNG($id_grado); foreach($Grado as $grados){ $this->SetFont('Arial','B',12);$this->Cell(40,10,'Grado: '.$grados['nombre_corto']); } $cursosIngles=$consultas->BuscarCursosIngles($id_grado); $saltoLinea=0; foreach($cursosIngles as $CI){ //AQUÍ DEBE EMPEZAR EL CICLO if($saltoLinea>=244){ $this->AddPage(); $saltoLinea=-15; } $this->setXY(10,30+$saltoLinea); $this->SetFont('Arial','B',12);$this->Cell(40,10,'Clase: '.utf8_decode($CI['clase_ingles'])); //Empieza la cabecera $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial','I',6); $this->setXY(68,40+$saltoLinea); $textoA=$this->TextWithDirection(72,58+$saltoLinea,'PRESENT','U'); $this->Cell(7,20,'',1,0,'C',false); $textoA=$this->TextWithDirection(79,58+$saltoLinea,'ABSENT','U'); $this->Cell(7,20,'',1,0,'C',false); $textoA=$this->TextWithDirection(86,58+$saltoLinea,'EXCUSE','U'); $this->Cell(7,20,'',1,0,'C',false); $textoA=$this->TextWithDirection(93,58+$saltoLinea,'NO EXCUSE','U'); $this->Cell(7,20,'',1,0,'C',false); $this->Cell(112,20,'OBSERVATION',1,0,'C',false); $this->SetFont('Arial','',7); $this->setXY(7,60+$saltoLinea); $this->Cell(5,5,'No',1,0,'C',true); $this->Cell(8,5,'Carnet',1,0,'C',true); $this->Cell(48,5,'Apellidos y nombres del alumno',1,0,'C',true); $this->Cell(7,5,'1',1,0,'C',true); $this->Cell(7,5,'2',1,0,'C',true); $this->Cell(7,5,'3',1,0,'C',true); $this->Cell(7,5,'4',1,0,'C',true); $this->Cell(112,5,'5',1,0,'C',true); $this->Ln(); //Buscar los datos $datosAlumnos=$consultas->buscarAlumnoParIngles($CI['id_clase_ingles'],$id_grado); if($datosAlumnos){ $contador=1; foreach($datosAlumnos as $fila){ $this->SetFont('Arial','I',7); $this->setX(7); $this->Cell(5,6,$contador,1,0,'C',false); $this->Cell(8,6,$fila['carnet'],1,0,'C',false); $this->SetFont('Arial','I',7); $this->Cell(48,6,utf8_decode($fila['apellidos'].', '.$fila['nombres']),1,0,'L',false); $this->Cell(7,6,'',1,0,'C',false); $this->Cell(7,6,'',1,0,'C',false); $this->Cell(7,6,'',1,0,'C',false); $this->Cell(7,6,'',1,0,'C',false); $this->Cell(112,6,'',1,0,'C',false); $this->Ln(); $contador++; $saltoLinea+=6; } } $saltoLinea+=40; //AQUÍ DEBE TERMINAR EL CICLO } } } ?>PKZ鲅DD letras.phpnu[ en "veintidós". Puede convertir un número entre una y ciento veintiséis cifras como máximo. Ejemplos de uso: CifrasEnLetras::convertirEurosEnLetras(22.34) --> "veintidós euros con treinta y cuatro céntimos" CifrasEnLetras::convertirNumeroEnLetras("35,67") --> "treinta y cinco con sesenta y siete" Enlaces de referencia: http://es.wikipedia.org/wiki/Anexo:Lista_de_n%C3%BAmeros http://es.encarta.msn.com/encyclopedia_761577100/Signos_matem%C3%A1ticos.html http://es.wikipedia.org/wiki/Nombres_de_los_n%C3%BAmeros_en_espa%C3%B1ol Licencia: http://creativecommons.org/licenses/GPL/2.0/deed.es Este software está sujeto a la CC-GNU GPL */ //=============================================== class CifrasEnLetras { //--------------------------------------------- // CONSTANTES const PREFIJO_ERROR = 'Error: '; const COMA = ','; const MENOS = '-'; //--------------------------------------------- // ENUMERACIONES const NEUTRO = 'neutro'; const MASCULINO = 'masculino'; const FEMENINO = 'femenino'; //--------------------------------------------- // GLOBAL public static $SEPARADOR_SEIS_CIFRAS = " "; //--------------------------------------------- // LISTAS public static $listaUnidades = array( // Letras de los números entre el 0 y el 29 "cero", "un", "dos", "tres", "cuatro", "cinco", "seis", "siete", "ocho", "nueve", "diez", "once", "doce", "trece", "catorce", "quince", "dieciséis", "diecisiete", "dieciocho", "diecinueve", "veinte", "veintiún", "veintidós", "veintitrés", "veinticuatro", "veinticinco", "veintiséis", "veintisiete", "veintiocho", "veintinueve" ); public static $listaDecenas = array( // Letras de las decenas "", "diez", "veinte", "treinta", "cuarenta", "cincuenta", "sesenta", "setenta", "ochenta", "noventa" ); public static $listaCentenas = array ( // Letras de las centenas "", "cien", "doscientos", "trescientos", "cuatrocientos", "quinientos", "seiscientos", "setecientos", "ochocientos", "novecientos" ); public static $listaOrdenesMillonSingular = array ( // Letras en singular de los órdenes de millón "", "millón", "billón", "trillón", "cuatrillón", "quintillón", "sextillón", "septillón", "octillón", "nonillón", "decillón", "undecillón", "duodecillón", "tridecillón", "cuatridecillón", "quidecillón", "sexdecillón", "septidecillón", "octodecillón", "nonidecillón", "vigillón" ); public static $listaOrdenesMillonPlural = array ( // Letras en plural de los órdenes de millón "", "millones", "billones", "trillones", "cuatrillones", "quintillones", "sextillones", "septillones", "octillones", "nonillones", "decillones", "undecillones", "duodecillones", "tridecillones", "cuatridecillones", "quidecillones", "sexdecillones", "septidecillones", "octodecillones", "nonidecillones", "vigillones" ); // ORDINALES (Wikipedia: "Nombres de los números en español", "Número ordinal") public static $listaUnidadesOrdinales = array ( // Letras de los ordinales entre 0º y 19º "ningún", "primer", "segundo", "tercer", "cuarto", "quinto", "sexto", "séptimo", "octavo", "noveno", "décimo", "undécimo", "duodécimo", "decimotercer", "decimocuarto", "decimoquinto", "decimosexto", "decimoséptimo", "decimoctavo", "decimonoveno" ); public static $listaDecenasOrdinales = array ( // Letras de las decenas ordinales "", "décimo", "vigésimo", "trigésimo", "cuadragésimo", "quincuagésimo", "sexagésimo", "septuagésimo", "octogésimo", "nonagésimo" ); public static $listaCentenasOrdinales = array ( // Letras de las centenas ordinales "", "centésimo", "ducentésimo", "tricentésimo", "cuadringentésimo", "quingentésimo", "sexcentésimo", "septingentésimo", "octingentésimo", "noningentésimo" ); public static $listaPotenciasDiezOrdinales = array ( // Letras de las potencias de diez ordinales "", "décimo", "centésimo", "milésimo", "diezmilésimo", "cienmilésimo", "millonésimo" ); //--------------------------------------------- // MÉTODOS PRINCIPALES /* Convierte a letras los números entre 0 y 29 */ protected static function convertirUnidades($unidades, $genero='neutro') { if ($unidades == 1) { if ($genero == 'masculino') return 'uno'; elseif ($genero == 'femenino') return 'una'; } else if ($unidades == 21) { if ($genero == 'masculino') return 'veintiuno'; elseif ($genero == 'femenino') return 'veintiuna'; } return self::$listaUnidades[$unidades]; } /* Convierte a letras las centenas */ protected static function convertirCentenas($centenas, $genero='neutro') { $resultado = self::$listaCentenas[$centenas]; if ($genero == 'femenino') $resultado = str_replace('iento','ienta', $resultado); return $resultado; } /* Primer centenar: del cero al noventa y nueve */ public static function convertirDosCifras($cifras, $genero='neutro') { $unidad = $cifras % 10; $decena = intval($cifras / 10); if ($cifras < 30) return self::convertirUnidades($cifras, $genero); elseif ($unidad == 0) return self::$listaDecenas[$decena]; else return self::$listaDecenas[$decena].' y '.self::convertirUnidades($unidad, $genero); } /* Primer millar: del cero al novecientos noventa y nueve */ public static function convertirTresCifras($cifras, $genero='neutro') { $decenas_y_unidades = $cifras % 100; $centenas = intval($cifras / 100); if ($cifras < 100) return self::convertirDosCifras($cifras, $genero); elseif ($decenas_y_unidades == 0) return self::convertirCentenas($centenas, $genero); elseif ($centenas == 1) return 'ciento '.self::convertirDosCifras($decenas_y_unidades, $genero); else return self::convertirCentenas($centenas, $genero).' '.self::convertirDosCifras($decenas_y_unidades, $genero); } /* Primer millón: del cero al novecientos noventa y nueve mil noventa y nueve */ public static function convertirSeisCifras($cifras, $genero='neutro') { $primer_millar = $cifras % 1000; $grupo_miles = intval($cifras / 1000); $genero_miles = $genero=='masculino'? 'neutro': $genero; if ($grupo_miles == 0) return self::convertirTresCifras($primer_millar, $genero); elseif ($grupo_miles == 1) { if ($primer_millar == 0) return 'mil'; else return 'mil '.self::convertirTresCifras($primer_millar, $genero); } elseif ($primer_millar == 0) return self::convertirTresCifras($grupo_miles, $genero_miles).' mil'; else return self::convertirTresCifras($grupo_miles, $genero_miles).' mil '.self::convertirTresCifras($primer_millar, $genero); } /* Números enteros entre el cero y novecientos noventa y nueve mil novecientos noventa y nueve vigillones... etc, etc. Es decir entre el 0 y el (10^126)-1 o bien números entre 1 y 126 cifras. Las cifras por debajo del millón pueden ir en masculino o en femenino. */ public static function convertirCifrasEnLetras($cifras, $genero='neutro', $separadorGruposSeisCifras=null) { // Inicialización $cifras = trim($cifras); $numeroCifras = strlen($cifras); if ($separadorGruposSeisCifras == null) $separadorGruposSeisCifras = self::$SEPARADOR_SEIS_CIFRAS; // Comprobación if ($numeroCifras == 0) return self::PREFIJO_ERROR.'No hay ningún número'; for ($indiceCifra=0; $indiceCifra<$numeroCifras; $indiceCifra++) { $cifra = substr($cifras, $indiceCifra, 1); $esDecimal = strpos('0123456789', $cifra) !== false; if (!$esDecimal) return self::PREFIJO_ERROR.'Uno de los caracteres no es una cifra decimal'; } if ($numeroCifras > 126) return self::PREFIJO_ERROR.'El número es demasiado grande ya que tiene más de 126 cifras'; // Preparación $numeroGruposSeisCifras = intval($numeroCifras / 6) + (($numeroCifras % 6)? 1: 0); $cerosIzquierda = str_repeat('0', $numeroGruposSeisCifras*6 - $numeroCifras); $cifras = $cerosIzquierda.$cifras; $ordenMillon = $numeroGruposSeisCifras - 1; // Procesamiento $resultado = array(); for ($indiceGrupo=0; $indiceGrupo<$numeroGruposSeisCifras*6; $indiceGrupo+=6) { $seisCifras = substr($cifras, $indiceGrupo, 6); if ($seisCifras != 0) { if (count($resultado) > 0) $resultado[] = $separadorGruposSeisCifras; if ($ordenMillon == 0) { $resultado[] = self::convertirSeisCifras($seisCifras, $genero); } elseif ($seisCifras == 1) { $resultado[] = 'un '.self::$listaOrdenesMillonSingular[$ordenMillon]; } else { $resultado[] = self::convertirSeisCifras($seisCifras, 'neutro').' '. self::$listaOrdenesMillonPlural[$ordenMillon]; } } $ordenMillon--; } // Finalización if (count($resultado) == 0) $resultado[] = self::$listaUnidades[0]; return implode('', $resultado); } public static function convertirCifrasEnLetrasMasculinas($cifras) { return self::convertirCifrasEnLetras($cifras, "masculino"); } public static function convertirCifrasEnLetrasFemeninas($cifras) { return self::convertirCifrasEnLetras($cifras, "femenino"); } /* Expresa un número con decimales y signo en letras acompañado del tipo de medida para la parte entera y la parte decimal. - Los caracters no numéricos son ignorados. - Los múltiplos de millón tienen la preposición 'de' antes de la palabra. - El género masculino o femenino sólo puede influir en las cifras inferiores al millón. */ public static function convertirNumeroEnLetras( $cifras, $numeroDecimales=-1, $palabraEntera='', $palabraEnteraPlural='', $esFemeninaPalabraEntera=false, $palabraDecimal='', $palabraDecimalPlural='', $esFemeninaPalabraDecimal=false) { // Argumentos $cifras = is_float($cifras)? str_replace(".", self::COMA, $cifras): "$cifras"; $palabraEnteraPlural = ($palabraEnteraPlural=='')? $palabraEntera.'s': $palabraEnteraPlural; $palabraDecimalPlural = ($palabraDecimalPlural=='')? $palabraDecimal.'s': $palabraDecimalPlural; // Limpieza $cifras = self::dejarSoloCaracteresDeseados($cifras, '0123456789' . self::COMA . self::MENOS); // Comprobaciones $repeticionesMenos = substr_count($cifras, self::MENOS); $repeticionesComa = substr_count($cifras, self::COMA); if ($repeticionesMenos > 1 || ($repeticionesMenos == 1 && !self::empiezaPor($cifras, self::MENOS)) ) { return self::PREFIJO_ERROR . 'Símbolo negativo incorrecto o demasiados símbolos negativos'; } else if ($repeticionesComa > 1) { return self::PREFIJO_ERROR . 'Demasiadas comas decimales'; } // Negatividad $esNegativo = self::empiezaPor($cifras, self::MENOS); if ($esNegativo) $cifras = substr($cifras, 1); // Preparación $posicionComa = strpos($cifras, self::COMA); if ($posicionComa === false) $posicionComa = strlen($cifras); $cifrasEntera = substr($cifras, 0, $posicionComa); if ($cifrasEntera == "" || $cifrasEntera == self::MENOS) $cifrasEntera = "0"; $cifrasDecimal = substr($cifras, min($posicionComa + 1, strlen($cifras))); $esAutomaticoNumeroDecimales = $numeroDecimales < 0; if ($esAutomaticoNumeroDecimales) { $numeroDecimales = strlen($cifrasDecimal); } else { $cifrasDecimal = substr($cifrasDecimal, 0, min($numeroDecimales, strlen($cifrasDecimal))); $cerosDerecha = str_repeat('0', $numeroDecimales - strlen($cifrasDecimal)); $cifrasDecimal = $cifrasDecimal . $cerosDerecha; } // Cero $esCero = self::dejarSoloCaracteresDeseados($cifrasEntera,"123456789") == "" && self::dejarSoloCaracteresDeseados($cifrasDecimal,"123456789") == ""; // Procesar $resultado = array(); if ($esNegativo && !$esCero) $resultado[]= "menos "; $parteEntera = self::procesarEnLetras($cifrasEntera, $palabraEntera, $palabraEnteraPlural, $esFemeninaPalabraEntera); if (self::empiezaPor($parteEntera, self::PREFIJO_ERROR)) return $parteEntera; $resultado[]= $parteEntera; if ($cifrasDecimal != "") { $parteDecimal = self::procesarEnLetras($cifrasDecimal, $palabraDecimal, $palabraDecimalPlural, $esFemeninaPalabraDecimal); if (self::empiezaPor($parteDecimal, self::PREFIJO_ERROR)) return $parteDecimal; $resultado[]= " con "; $resultado[]= $parteDecimal; } return implode('', $resultado); } /* Convertir euros en letras Ejemplos: CifrasEnLetras::convertirEurosEnLetras("44276598801,2",2) --> "cuatrocientos noventa y ocho mil un euros con veinte céntimos" CifrasEnLetras::convertirEurosEnLetras(85009) --> "ochenta y cinco mil nueve euros" CifrasEnLetras::convertirEurosEnLetras(10200.35) --> "diez mil doscientos euros con treinta y cinco céntimos" */ public static function convertirEurosEnLetras($euros, $numeroDecimales=2) { return self::convertirNumeroEnLetras($euros, $numeroDecimales, "euro", "quetzales", false, "céntimo", "céntimos", false); } /* Separa las cifras en grupos de 6 con subrayados y los grupos de 6 en grupos de 2 con punto Ejemplos: CifrasEnLetras::formatearCifras("-4739249,2") --> "-4_739.249,2" */ public static function formatearCifras($cifras, $formato="") { $cifras = self::dejarSoloCaracteresDeseados("$cifras", "0123456789" . self::COMA . self::MENOS); if (strlen($cifras) == 0) return $cifras; $esNegativo = self::empiezaPor($cifras, self::MENOS); if ($esNegativo) $cifras = substr($cifras, 1); $posicionComa = strpos($cifras, self::COMA); $esDecimal = $posicionComa !== false; if (!$esDecimal) $posicionComa = strlen($cifras); $cifrasEntera = substr($cifras, 0, $posicionComa); $cifrasDecimal = ""; if ($esDecimal) $cifrasDecimal = substr($cifras, min($posicionComa + 1, strlen($cifras))); if ($cifrasEntera == "") $cifrasEntera = "0"; $resultado = array(); $numeroCifras = strlen($cifrasEntera); $par = true; $contador = 1; for ($indice=0; $indice<$numeroCifras; $indice+=3) { $indiceGrupo = $numeroCifras - $indice; $tresCifras = substr($cifras, max($indiceGrupo-3,0), min(3, $numeroCifras-$indice)); if ($indice > 0) { switch ($formato) { case 'html': $resultado[]= $par? ".": "$contador"; if (!$par) $contador++; break; default: $resultado[]= $par? '.': '_'; } $par = !$par; } $resultado[]= $tresCifras; } if ($esNegativo) $resultado[]= self::MENOS; $resultado = array_reverse($resultado); if ($esDecimal) { $resultado[]= self::COMA; $resultado[]= $cifrasDecimal; } return implode('', $resultado); } //--------------------------------------------- // MÉTODOS AUXILIARES /* Borra todos los caracteres del texto que no sea alguno de los caracteres deseados. Ejemplos: self::dejarSoloCaracteresDeseados("89.500.400","0123456789") --> "89500400" self::dejarSoloCaracteresDeseados("ABC-000-123-X-456","0123456789") --> "000123456" */ private static function dejarSoloCaracteresDeseados($texto, $caracteresDeseados) { $resultado = array(); for ($indice = 0; $indice < strlen($texto); $indice++) { $caracter = $texto[$indice]; if (strpos($caracteresDeseados, $caracter) !== false) $resultado[]= $caracter; } return implode('', $resultado); } /* Función auxiliar de convertirNumeroEnLetras para procesar por separado la parte entera y la decimal */ private static function procesarEnLetras($cifras, $palabraSingular, $palabraPlural, $esFemenina) { // Género $genero = "neutro"; if ($esFemenina) $genero = "femenino"; else if ($palabraSingular == "") $genero = "masculino"; // Letras $letras = self::convertirCifrasEnLetras($cifras, $genero); if (self::empiezaPor($letras, self::PREFIJO_ERROR)) return $letras; // Propiedades $esCero = $letras == self::convertirUnidades(0, $genero) || $letras == ""; $esUno = $letras == self::convertirUnidades(1, $genero); $esMultiploMillon = !$esCero && self::acabaPor($cifras, "000000"); // Palabra $palabra = ""; if ($palabraSingular != "") { if ($esUno || $palabraPlural == "") $palabra = $palabraSingular; else $palabra = $palabraPlural; } // Resultado $resultado = array(); $resultado[]= $letras; if ($palabra != "") { $resultado[]= $esMultiploMillon? " de ": " "; $resultado[]= $palabra; } return implode('', $resultado); } private static function empiezaPor($texto, $prefijo) { //return strstr($texto, $prefijo) !== false; return substr($texto, 0, strlen($prefijo)) === $prefijo; } private static function acabaPor($texto, $sufijo) { /*$largoTexto = strlen($texto); $largoSufijo = strlen($sufijo); if ($largoSufijo > $largoTexto) return false; return substr_compare($texto, $sufijo, -$largoSufijo) === 0;*/ return substr($texto, -strlen($sufijo)) == $sufijo; } } // class CifrasEnLetras ?> PKZl3GTGTcuadros_imprimir.phpnu[AddExtGState(array('ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if(!empty($this->extgstates) && $this->PDFVersion<'1.4') $this->PDFVersion='1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach($this->extgstates as $k=>$extgstate) $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction='R') { if ($direction=='R') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',1,0,0,1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='L') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',-1,0,0,-1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='U') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,1,-1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='D') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,-1,1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); else $s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0) { $font_angle+=90+$txt_angle; $txt_angle*=M_PI/180; $font_angle*=M_PI/180; $txt_dx=cos($txt_angle); $txt_dy=sin($txt_angle); $font_dx=cos($font_angle); $font_dy=sin($font_angle); $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',$txt_dx,$txt_dy,$font_dx,$font_dy,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } //**************************************************************************** */ // Tabla coloreada function GenerarCuadro($id_grado, $bimestre, $id_curso, $nombre_curso) { //FONDO $this->Image('assets/img/logo_ceg_redondo2.png','185','10','17','17','PNG'); //datos encabezado $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(20,10); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20,15); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("Registro de Resultados de Evaluación Bimestral")); $this->setXY(20,20); $this->SetFont('Arial','B',9);$this->Cell(40,10,"del Rendimiento Escolar - Ciclo Escolar 2025"); $this->setXY(160,25); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Bimestre: ".$bimestre); $this->setXY(160,31); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Maestro: ". utf8_decode($_SESSION['CEGS_nombre_corto'])); $this->setXY(160,37); date_default_timezone_set('America/Guatemala'); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Hora: ". date('d-m-Y h:i:s a', time())); $this->setXY(30,55); //datos $consultas=new Imprimir2(); $Grado=$consultas->BuscarNG($id_grado); foreach($Grado as $grados){ $this->SetFont('Arial','B',12);$this->Cell(40,10,$grados['nombre_corto']); } $this->setXY(20,75); $this->Cell(55,15,'',1,0,'C',false); $this->setXY(20,78); $this->SetFont('Arial','B',6); $this->Cell(40,10,utf8_decode($nombre_curso)); //Empieza la cabecera //Buscamos las actiidades $Actividades=$consultas->buscarActividades($id_curso, $bimestre); if($Actividades){ $cantAct=sizeof($Actividades); }else{ $cantAct=0; } $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial','I',6); $this->setXY(78,45); $espaciosEnc=0; if($Actividades){ foreach($Actividades as $fActividades){ $textoA=$this->TextWithDirection(82+$espaciosEnc,88,utf8_decode($fActividades['nombre']).'('.$fActividades['valor'].' pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $espaciosEnc=$espaciosEnc+6; } } $textoA=$this->TextWithDirection(82+$espaciosEnc,88,'Responsabilidad (5 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(88+$espaciosEnc,88,utf8_decode('Desempeño en clase (5 pts)'),'U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(94+$espaciosEnc,88,'Total zona y afectivo (70 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(100+$espaciosEnc,88,'Primer Parcial (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(106+$espaciosEnc,88,'Segundo Parcial (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(112+$espaciosEnc,88,'Mejoramiento (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(118+$espaciosEnc,88,utf8_decode('Total exámenes (30 pts)'),'U'); $this->Cell(6,45,$textoA,1,0,'C',false); $this->SetFont('Arial','',7); $this->setXY(78,90); $this->Cell($espaciosEnc,5,'Procedimental',1,0,'C',true); $this->Cell(12,5,'Afectivo',1,0,'C',true); $this->Cell(6,10,'',1,0,'C',true); $this->Cell(24,5,'Cognositivo',1,0,'C',true); $this->SetFont('Arial','',7); $this->setXY(17,95); $this->Cell(5,5,'No',1,0,'C',true); $this->Cell(8,5,'Carnet',1,0,'C',true); $this->Cell(48,5,'Apellidos y nombres del alumno',1,0,'C',true); for($i=0; $i<$cantAct; $i++){ $this->Cell(6,5,$i+1,1,0,'C',true); } $this->Cell(6,5,'1',1,0,'C',true); $this->Cell(6,5,'2',1,0,'C',true); $this->Cell(6,5,'T',1,0,'C',true); $this->Cell(6,5,'1',1,0,'C',true); $this->Cell(6,5,'2',1,0,'C',true); $this->Cell(6,5,'3',1,0,'C',true); $this->Cell(6,5,'T',1,0,'C',true); $this->Cell(6,5,'F',1,0,'C',true); $this->Ln(); //Buscar los datos $datosNotas=$consultas->buscarRegistroNotas($id_curso, $bimestre); if($datosNotas){ $contadorRojo=0; $contadorAmarillo=0; $contadorVerde=0; $notaMayor=0; $notaMenor=100; $totalAlumnos=0; $promedio=0; $totalNotaTodos=0; $contador=1; $carnetValidar=""; $auxGeneral=0; $contadorSalto=0; $totalZona=0; $posicionY=95.5; $punteoAux=0; foreach($datosNotas as $fila){ if($carnetValidar!=$fila['carnet']){ $totalZona=0; $this->SetFont('Arial','I',6); $this->setX(17); $this->Cell(5,5,$contador,1,0,'C',false); $this->Cell(8,5,$fila['carnet'],1,0,'C',false); $this->SetFont('Arial','I',7); $this->Cell(48,5,utf8_decode($fila['apellidos'].', '.$fila['nombres']),1,0,'L',false); if($fila['punteo']=="" || $fila['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila['punteo']); $contador++; $contadorSalto++; if($contadorSalto==($cantAct+6)){ $this->Ln(); $contadorSalto=0; } }else{ if($fila['punteo']=="" || $fila['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila['punteo']); $contadorSalto++; if(isset($datosNotas[$auxGeneral+1])){ if($datosNotas[$auxGeneral]['carnet']!=$datosNotas[$auxGeneral+1]['carnet']){ $notaSecundaria=$consultas->buscarNS($fila['carnet'], $id_curso, $bimestre); if($notaSecundaria){ $contadorTotal=0; $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; $notaFinal=0; foreach($notaSecundaria as $fila2){ if($contadorTotal==2){ $this->Cell(6,5,$totalZona,1,0,'C',true); } if($contadorTotal==2){ $primerP=intval($fila2['punteo']); } if($contadorTotal==3){ $segundoP=intval($fila2['punteo']); } if($contadorTotal==4){ $mejoramiento=intval($fila2['punteo']); } if($contadorTotal==5){ if($primerP>$segundoP){ if($segundoP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$mejoramiento; }else{ $totalEval=$primerP+$mejoramiento; } } }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($segundoP>$mejoramiento){ $totalEval=$segundoP+$mejoramiento; }else{ $totalEval=$segundoP+$mejoramiento; } } } $this->Cell(6,5,$totalEval,1,0,'C',true); $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; } if($fila2['punteo']=="" || $fila2['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila2['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila2['punteo']); $contadorSalto++; $contadorTotal++; $notaFinal=$fila2['punteo']; } $posicionX=128+$espaciosEnc; $posicionY+=5; if ($notaFinal<60){ $this->Image('assets/img/incorrecto.png',$posicionX,$posicionY,'4','4','PNG'); $contadorRojo++; }elseif($notaFinal<70){ $this->Image('assets/img/advertencia.png',$posicionX,$posicionY,'4','4','PNG'); $contadorAmarillo++; }else{ $this->Image('assets/img/check.png',$posicionX,$posicionY,'4','4','PNG'); $contadorVerde++; } if($notaFinal>$notaMayor){ $notaMayor=$notaFinal; } if($notaFinal<$notaMenor){ $notaMenor=$notaFinal; } $totalAlumnos++; $totalNotaTodos+=$notaFinal; $this->Ln(); } } }else{ $notaSecundaria=$consultas->buscarNS($fila['carnet'], $id_curso, $bimestre); if($notaSecundaria){ $contadorTotal=0; $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; $notaFinal=0; foreach($notaSecundaria as $fila2){ if($contadorTotal==2){ $this->Cell(6,5,$totalZona,1,0,'C',true); } if($contadorTotal==2){ $primerP=intval($fila2['punteo']); } if($contadorTotal==3){ $segundoP=intval($fila2['punteo']); } if($contadorTotal==4){ $mejoramiento=intval($fila2['punteo']); } if($contadorTotal==5){ if($primerP>$segundoP){ if($segundoP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$mejoramiento; }else{ $totalEval=$primerP+$mejoramiento; } } }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($segundoP>$mejoramiento){ $totalEval=$segundoP+$mejoramiento; }else{ $totalEval=$segundoP+$mejoramiento; } } } $this->Cell(6,5,$totalEval,1,0,'C',true); $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; } if($fila2['punteo']=="" || $fila2['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila2['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila2['punteo']); $contadorSalto++; $contadorTotal++; $notaFinal=$fila2['punteo']; } $posicionX=128+$espaciosEnc; $posicionY+=5; if ($notaFinal<60){ $this->Image('assets/img/incorrecto.png',$posicionX,$posicionY,'4','4','PNG'); $contadorRojo++; }elseif($notaFinal<70){ $this->Image('assets/img/advertencia.png',$posicionX,$posicionY,'4','4','PNG'); $contadorAmarillo++; }else{ $this->Image('assets/img/check.png',$posicionX,$posicionY,'4','4','PNG'); $contadorVerde++; } if($notaFinal>$notaMayor){ $notaMayor=$notaFinal; } if($notaFinal<$notaMenor){ $notaMenor=$notaFinal; } $totalAlumnos++; $totalNotaTodos+=$notaFinal; $this->Ln(); } } } $carnetValidar=$fila['carnet']; $auxGeneral++; } $this->setXY(20,295); $this->Cell(40,3,"Total Alumnos evaluados: ".$totalAlumnos,1,0,'C',false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "Criterio",1,0,"L",true); $this->Cell(15,3, "No.",1,0,"L",true); $this->Cell(15,3, "%.",1,0,"L",true);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 0 a 59",1,0,"L",false); $this->Cell(15,3, $contadorRojo,1,0,"L",false); $this->Cell(15,3, round(($contadorRojo*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 60 a 69",1,0,"L",false); $this->Cell(15,3, $contadorAmarillo,1,0,"L",false); $this->Cell(15,3, round(($contadorAmarillo*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 70 a 100",1,0,"L",false); $this->Cell(15,3, $contadorVerde,1,0,"L",false); $this->Cell(15,3, round(($contadorVerde*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, utf8_decode("Nota Máxima"),1,0,"L",false); $this->Cell(15,3, $notaMayor,1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, utf8_decode("Nota Mínima"),1,0,"L",false); $this->Cell(15,3, $notaMenor,1,0,"L",false);$this->Ln(); $this->setX(20); //calcular el promedio $promedio=round($totalNotaTodos/$totalAlumnos,0); $this->Cell(40,3, "Nota Promedio",1,0,"L",false); $this->Cell(15,3, $promedio,1,0,"L",false); } } } ?>PKZXY?VTVTcuadros_imprimir_inglesTI.phpnu[AddExtGState(array('ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if(!empty($this->extgstates) && $this->PDFVersion<'1.4') $this->PDFVersion='1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach($this->extgstates as $k=>$extgstate) $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction='R') { if ($direction=='R') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',1,0,0,1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='L') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',-1,0,0,-1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='U') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,1,-1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='D') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,-1,1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); else $s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0) { $font_angle+=90+$txt_angle; $txt_angle*=M_PI/180; $font_angle*=M_PI/180; $txt_dx=cos($txt_angle); $txt_dy=sin($txt_angle); $font_dx=cos($font_angle); $font_dy=sin($font_angle); $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',$txt_dx,$txt_dy,$font_dx,$font_dy,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } //**************************************************************************** */ // Tabla coloreada function GenerarCuadro( $bimestre, $id_curso, $nombre_curso, $nombreDocente) { //FONDO $this->Image('assets/img/logo_ceg_redondo2.png','185','10','17','17','PNG'); //datos encabezado $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(20,10); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20,15); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("Registro de Resultados de Evaluación Bimestral")); $this->setXY(20,20); $this->SetFont('Arial','B',9);$this->Cell(40,10,"del Rendimiento Escolar - Ciclo Escolar 2025"); $this->setXY(160,25); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Bimestre: ".$bimestre); $this->setXY(160,31); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Maestro: ". utf8_decode($nombreDocente)); $this->setXY(160,37); date_default_timezone_set('America/Guatemala'); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Hora: ". date('m-d-Y h:i:s a', time())); $this->setXY(30,55); //datos $consultas=new Imprimir2(); /*$Grado=$consultas->BuscarNG($id_grado); foreach($Grado as $grados){ $this->SetFont('Arial','B',12);$this->Cell(40,10,$grados['nombre_corto']); } */ $this->setXY(20,75); $this->Cell(55,15,'',1,0,'C',false); $this->setXY(20,78); $this->SetFont('Arial','B',6); $this->Cell(40,10,utf8_decode($nombre_curso)); //Empieza la cabecera //Buscamos las actiidades $Actividades=$consultas->buscarActividadesI($id_curso, $bimestre); $espaciosEnc=0; if($Actividades){ $cantAct=sizeof($Actividades); $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial','I',6); $this->setXY(78,45); foreach($Actividades as $fActividades){ $textoA=$this->TextWithDirection(82+$espaciosEnc,88,utf8_decode($fActividades['nombre']).'('.$fActividades['valor'].' pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $espaciosEnc=$espaciosEnc+6; } } $textoA=$this->TextWithDirection(82+$espaciosEnc,88,'Responsabilidad (5 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(88+$espaciosEnc,88,utf8_decode('Desempeño en clase (5 pts)'),'U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(94+$espaciosEnc,88,'Total zona y afectivo (70 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(100+$espaciosEnc,88,'Primer Parcial (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(106+$espaciosEnc,88,'Segundo Parcial (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(112+$espaciosEnc,88,'Mejoramiento (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(118+$espaciosEnc,88,utf8_decode('Total exámenes (30 pts)'),'U'); $this->Cell(6,45,$textoA,1,0,'C',false); $this->SetFont('Arial','',7); $this->setXY(78,90); $this->Cell($espaciosEnc,5,'Procedimental',1,0,'C',true); $this->Cell(12,5,'Afectivo',1,0,'C',true); $this->Cell(6,10,'',1,0,'C',true); $this->Cell(24,5,'Cognositivo',1,0,'C',true); $this->SetFont('Arial','',7); $this->setXY(17,95); $this->Cell(5,5,'No',1,0,'C',true); $this->Cell(8,5,'Carnet',1,0,'C',true); $this->Cell(48,5,'Apellidos y nombres del alumno',1,0,'C',true); if($Actividades){ for($i=0; $i<$cantAct; $i++){ $this->Cell(6,5,$i+1,1,0,'C',true); } } $this->Cell(6,5,'1',1,0,'C',true); $this->Cell(6,5,'2',1,0,'C',true); $this->Cell(6,5,'T',1,0,'C',true); $this->Cell(6,5,'1',1,0,'C',true); $this->Cell(6,5,'2',1,0,'C',true); $this->Cell(6,5,'3',1,0,'C',true); $this->Cell(6,5,'T',1,0,'C',true); $this->Cell(6,5,'F',1,0,'C',true); $this->Ln(); //Buscar los datos $datosNotas=$consultas->buscarRegistroNotasI($id_curso, $bimestre); if($datosNotas){ $contadorRojo=0; $contadorAmarillo=0; $contadorVerde=0; $notaMayor=0; $notaMenor=100; $totalAlumnos=0; $promedio=0; $totalNotaTodos=0; $contador=1; $carnetValidar=""; $auxGeneral=0; $contadorSalto=0; $totalZona=0; $posicionY=95.5; $punteoAux=0; foreach($datosNotas as $fila){ if($carnetValidar!=$fila['carnet']){ $totalZona=0; $this->SetFont('Arial','I',6); $this->setX(17); $this->Cell(5,5,$contador,1,0,'C',false); $this->Cell(8,5,$fila['carnet'],1,0,'C',false); $this->SetFont('Arial','I',7); $this->Cell(48,5,utf8_decode($fila['apellidos'].', '.$fila['nombres']),1,0,'L',false); if($fila['punteo']=="" || $fila['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila['punteo']); $contador++; $contadorSalto++; if($contadorSalto==($cantAct+6)){ $this->Ln(); $contadorSalto=0; } }else{ if($fila['punteo']=="" || $fila['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila['punteo']); $contadorSalto++; if(isset($datosNotas[$auxGeneral+1])){ if($datosNotas[$auxGeneral]['carnet']!=$datosNotas[$auxGeneral+1]['carnet']){ $notaSecundaria=$consultas->buscarNSI($fila['carnet'], $id_curso, $bimestre); if($notaSecundaria){ $contadorTotal=0; $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; $notaFinal=0; foreach($notaSecundaria as $fila2){ if($contadorTotal==2){ $this->Cell(6,5,$totalZona,1,0,'C',true); } if($contadorTotal==2){ $primerP=intval($fila2['punteo']); } if($contadorTotal==3){ $segundoP=intval($fila2['punteo']); } if($contadorTotal==4){ $mejoramiento=intval($fila2['punteo']); } if($contadorTotal==5){ if($primerP>$segundoP){ if($segundoP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$mejoramiento; }else{ $totalEval=$primerP+$mejoramiento; } } }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($segundoP>$mejoramiento){ $totalEval=$segundoP+$mejoramiento; }else{ $totalEval=$segundoP+$mejoramiento; } } } $this->Cell(6,5,$totalEval,1,0,'C',true); $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; } if($fila2['punteo']=="" || $fila2['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila2['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila2['punteo']); $contadorSalto++; $contadorTotal++; $notaFinal=$fila2['punteo']; } $posicionX=128+$espaciosEnc; $posicionY+=5; if ($notaFinal<60){ $this->Image('assets/img/incorrecto.png',$posicionX,$posicionY,'4','4','PNG'); $contadorRojo++; }elseif($notaFinal<70){ $this->Image('assets/img/advertencia.png',$posicionX,$posicionY,'4','4','PNG'); $contadorAmarillo++; }else{ $this->Image('assets/img/check.png',$posicionX,$posicionY,'4','4','PNG'); $contadorVerde++; } if($notaFinal>$notaMayor){ $notaMayor=$notaFinal; } if($notaFinal<$notaMenor){ $notaMenor=$notaFinal; } $totalAlumnos++; $totalNotaTodos+=$notaFinal; $this->Ln(); } } }else{ $notaSecundaria=$consultas->buscarNSI($fila['carnet'], $id_curso, $bimestre); if($notaSecundaria){ $contadorTotal=0; $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; $notaFinal=0; foreach($notaSecundaria as $fila2){ if($contadorTotal==2){ $this->Cell(6,5,$totalZona,1,0,'C',true); } if($contadorTotal==2){ $primerP=intval($fila2['punteo']); } if($contadorTotal==3){ $segundoP=intval($fila2['punteo']); } if($contadorTotal==4){ $mejoramiento=intval($fila2['punteo']); } if($contadorTotal==5){ if($primerP>$segundoP){ if($segundoP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$mejoramiento; }else{ $totalEval=$primerP+$mejoramiento; } } }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($segundoP>$mejoramiento){ $totalEval=$segundoP+$mejoramiento; }else{ $totalEval=$segundoP+$mejoramiento; } } } $this->Cell(6,5,$totalEval,1,0,'C',true); $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; } if($fila2['punteo']=="" || $fila2['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila2['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila2['punteo']); $contadorSalto++; $contadorTotal++; $notaFinal=$fila2['punteo']; } $posicionX=128+$espaciosEnc; $posicionY+=5; if ($notaFinal<60){ $this->Image('assets/img/incorrecto.png',$posicionX,$posicionY,'4','4','PNG'); $contadorRojo++; }elseif($notaFinal<70){ $this->Image('assets/img/advertencia.png',$posicionX,$posicionY,'4','4','PNG'); $contadorAmarillo++; }else{ $this->Image('assets/img/check.png',$posicionX,$posicionY,'4','4','PNG'); $contadorVerde++; } if($notaFinal>$notaMayor){ $notaMayor=$notaFinal; } if($notaFinal<$notaMenor){ $notaMenor=$notaFinal; } $totalAlumnos++; $totalNotaTodos+=$notaFinal; $this->Ln(); } } } $carnetValidar=$fila['carnet']; $auxGeneral++; } $this->setXY(20,295); $this->Cell(40,3,"Total Alumnos evaluados: ".$totalAlumnos,1,0,'C',false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "Criterio",1,0,"L",true); $this->Cell(15,3, "No.",1,0,"L",true); $this->Cell(15,3, "%.",1,0,"L",true);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 0 a 59",1,0,"L",false); $this->Cell(15,3, $contadorRojo,1,0,"L",false); $this->Cell(15,3, round(($contadorRojo*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 60 a 69",1,0,"L",false); $this->Cell(15,3, $contadorAmarillo,1,0,"L",false); $this->Cell(15,3, round(($contadorAmarillo*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 70 a 100",1,0,"L",false); $this->Cell(15,3, $contadorVerde,1,0,"L",false); $this->Cell(15,3, round(($contadorVerde*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, utf8_decode("Nota Máxima"),1,0,"L",false); $this->Cell(15,3, $notaMayor,1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, utf8_decode("Nota Mínima"),1,0,"L",false); $this->Cell(15,3, $notaMenor,1,0,"L",false);$this->Ln(); $this->setX(20); //calcular el promedio $promedio=round($totalNotaTodos/$totalAlumnos,0); $this->Cell(40,3, "Nota Promedio",1,0,"L",false); $this->Cell(15,3, $promedio,1,0,"L",false); } } } ?>PKZĆSXXBoletaNotas2023.phpnu[ Image('assets/img/fondo_boleta2023.jpg', '0', '0', '216', '280', 'JPG'); //datos del alumno $consultas = new Boleta2023(); $datosAlumno = $consultas->buscarAlumno($carnet); $this->SetFont('Arial', '', 12); $this->SetTextColor(20); $this->setXY(40, 47.5); $this->Cell(45, 10, $carnet); $this->Cell(50, 10, " " . utf8_decode($datosAlumno[0]['apellidos']) . ', ' . utf8_decode($datosAlumno[0]['nombres'])); $this->Ln(); $this->setXY(40, 55); $this->setFontSize(10); $this->Cell(40, 10, $datosAlumno[0]['nombre_corto']); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial', '', 11); $this->SetFillColor(70, 235, 189); $this->SetTextColor(255); $this->SetTextColor(20); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('', 'B'); $this->setXY(22, 80); // Cabecera $w = array(80, 18, 18, 18, 18, 18); $header = array('Curso', '1a', '2a', '3a', '4a', 'Total'); for ($i = 0; $i < count($header); $i++) $this->Cell($w[$i], 8, $header[$i], 1, 0, 'C', true); $this->Ln(); // Restauración de colores y fuentes $this->SetDrawColor(191, 191, 201); $this->SetFillColor(225, 228, 242); $this->SetTextColor(0); $this->SetFont('Arial', '', 10); $this->SetX(22); $notasAlumno = $consultas->buscarNotasAlumno($carnet); $notasAlumnoIngles = $consultas->buscarNotasAlumnoIngles($carnet); //inicio de colocación de notas $contadorSalto = 0; $contadorCurso = 0; $total = 0; $bim1 = 0; $bim2 = 0; $bim3 = 0; $bim4 = 0; $bandera = false; $bandera_graduando = false; foreach ($notasAlumno as $Fnota) { if (strpos($Fnota['nombreCurso'], "Laboratorio") !== false) { } else { if ($Fnota['nombreCurso'] != "APRESTAMIENTO/GRAFOMOTRICIDAD" && utf8_decode($Fnota['nombreCurso']) != "CALIGRAFÍA Y APRESTAMIENTO") { if ($contadorSalto == 0) { if (($Fnota['nombreCurso'] == "Artes Plásticas" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "Danza y Expresión Corporal" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "Formación Musical" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "ÁLGEBRA" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "Práctica Supervisada") ) { $bandera = true; } else { $bandera = false; } } if ($contadorSalto == 0 && $bandera == false) { $this->SetX(22); $this->SetTextColor(0); //$nombreAux = self::arreglar($Fnota['nombreCurso']); $this->Cell($w[$contadorSalto], 6, ' ' . utf8_decode($Fnota['nombreCurso']), 1, 0, 'L', false); if($Fnota['nombreCurso']=="Seminario"){ $bandera_graduando=true; } $contadorSalto++; } if ($contadorSalto == 1 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); $bandera_graduando = true; } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } if (utf8_decode($Fnota['nombreCurso']) != "Práctica Supervisada") { $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); } $total += intval($Fnota['punteo']); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim1 += $nota; } /* if ($Fnota['nombreCurso'] == "Práctica Supervisada") { $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $this->Ln(); } */ } if ($contadorSalto == 2 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } //$this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $total += intval($Fnota['punteo']); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim2 += $nota; } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); } if ($contadorSalto == 3 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } /*if($Fnota['nombreCurso']=="Seminario"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); }else{ $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); }*/ $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim3 += $nota; } /*$this->SetTextColor(0); $this->Cell($w[$contadorSalto],6,0,1,0,'C',false);*/ } if ($contadorSalto == 4 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } if ($Fnota['nombreCurso'] == "Seminario") { $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); } else { $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); } $total += intval($Fnota['punteo']); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim4 += $nota; $contadorCurso++; } /********************/ /*$this->SetTextColor(0); if($Fnota['nombreCurso']=="Seminario"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); }else{ $this->Cell($w[$contadorSalto],6,0,1,0,'C',false); }*/ /********************/ $this->SetTextColor(0); if ($Fnota['nombreCurso'] == "Seminario") { $promedio = $total; } else { $promedio = round($total / 4, 0); } $this->Cell($w[$contadorSalto], 6, $promedio, 1, 0, 'C', false); $contadorSalto = -1; $total = 0; $this->Ln(); } if ($contadorSalto == 3 && $bandera == true) { $contadorSalto = -1; $bandera = false; } $contadorSalto++; } } } /**PARA INGLES */ $contadorSalto = 0; $total = 0; if ($notasAlumnoIngles) { foreach ($notasAlumnoIngles as $Fnota) { if ($contadorSalto == 0) { $this->SetX(22); $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, ' ' . utf8_decode($Fnota['nombreCurso']), 1, 0, 'L', false); $contadorSalto++; } if ($contadorSalto == 1) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim1 += $nota; } if ($contadorSalto == 2) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim2 += $nota; } if ($contadorSalto == 3) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim3 += $nota; } if ($contadorSalto == 4) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim4 += $nota; $this->SetTextColor(0); $promedio = round($total / 4, 0); $this->Cell($w[$contadorSalto], 6, $promedio, 1, 0, 'C', false); $contadorSalto = -1; $total = 0; $contadorCurso++; $this->Ln(); } $contadorSalto++; } } //pie de página $this->SetX(22); $this->SetFont('Arial', 'B', 10); $this->Cell($w[0], 6, ' ' . 'Promedio', 1, 0, 'L', false); $this->Cell($w[1], 6, round($bim1 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[2], 6, round($bim2 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[3], 6, round($bim3 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[4], 6, round($bim4 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[4], 6, round((round($bim1 / $contadorCurso) + round($bim2 / $contadorCurso) + round($bim3 / $contadorCurso) + round($bim4 / $contadorCurso)) / 4, 0), 1, 0, 'C', false); if($bandera_graduando){ $this->Ln(); $this->Ln(); $this->Ln(); $this->SetX(22); $this->Cell(40,10,utf8_decode("El 50% restante de la nota de seminario se estará publicando en la 4a Unidad.")); } } function GenerarCuadroLab($carnet) { //FONDO $this->Image('assets/img/fondo_boleta2023.jpg', '0', '0', '216', '280', 'JPG'); //datos del alumno $consultas = new Boleta2023(); $datosAlumno = $consultas->buscarAlumno($carnet); $this->SetFont('Arial', '', 12); $this->SetTextColor(20); $this->setXY(40, 47.5); $this->Cell(45, 10, $carnet); $this->Cell(50, 10, " " . utf8_decode($datosAlumno[0]['apellidos']) . ', ' . utf8_decode($datosAlumno[0]['nombres'])); $this->Ln(); $this->setXY(40, 55); $this->setFontSize(10); $this->Cell(40, 10, $datosAlumno[0]['nombre_corto']); $this->SetFont('Arial', 'B', 12); $this->setXY(85, 73); $this->Cell(50, 10, "Primer Laboratorio"); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial', '', 11); $this->SetFillColor(70, 235, 189); $this->SetTextColor(255); $this->SetTextColor(20); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('', 'B'); $this->setXY(40, 85); $this->Cell(120, 8, " " . utf8_decode("Laboratorio"), 1, 0, 'L', true); $this->Cell(15, 8, " " . utf8_decode("Nota"), 1, 0, 'L', true); $datosLaboratorio = $consultas->buscarNotasLab($carnet); $this->Ln(); $promedioLab = 0; foreach ($datosLaboratorio as $datosL) { if ($datosL['bimestre'] == "1") { $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120, 7, " " . utf8_decode($datosL['nombre']), 1, 0, 'L', false); $this->SetFontSize(9); if ($datosL['punteo'] < 60 && $datosL['punteo'] > 0) { $this->SetTextColor(204, 4, 41); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } elseif ($datosL['punteo'] >= 60 && $datosL['punteo'] < 70) { $this->SetTextColor(177, 4, 204); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } else { $this->SetTextColor(59, 58, 58); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } $promedioLab += intval($datosL['punteo']); $this->Ln(); } } $this->SetXY(85, 105); $this->SetFont('Arial', 'B', 12); $this->Cell(50, 50, "Segundo Laboratorio"); $this->SetXY(40, 135); $this->Cell(120, 8, " " . utf8_decode("Laboratorio"), 1, 0, 'L', true); $this->Cell(15, 8, " " . utf8_decode("Nota"), 1, 0, 'L', true); $this->SetXY(40, 143); foreach ($datosLaboratorio as $datosL) { if ($datosL['bimestre'] == "2") { $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120, 7, " " . utf8_decode($datosL['nombre']), 1, 0, 'L', false); $this->SetFontSize(9); if ($datosL['punteo'] < 60 && $datosL['punteo'] > 0) { $this->SetTextColor(204, 4, 41); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } elseif ($datosL['punteo'] >= 60 && $datosL['punteo'] < 70) { $this->SetTextColor(177, 4, 204); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } else { $this->SetTextColor(59, 58, 58); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } $promedioLab += intval($datosL['punteo']); $this->Ln(); } } /*$this->SetXY(85, 150); $this->SetFont('Arial', 'B', 12); $this->Cell(50, 50, "Tercer Laboratorio"); $this->SetXY(40, 180); $this->Cell(120, 8, " " . utf8_decode("Laboratorio"), 1, 0, 'L', true); $this->Cell(15, 8, " " . utf8_decode("Nota"), 1, 0, 'L', true); $this->SetXY(40, 188); foreach ($datosLaboratorio as $datosL) { if ($datosL['bimestre'] == "3") { $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120, 7, " " . utf8_decode($datosL['nombre']), 1, 0, 'L', false); $this->SetFontSize(9); if ($datosL['punteo'] < 60 && $datosL['punteo'] > 0) { $this->SetTextColor(204, 4, 41); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } elseif ($datosL['punteo'] >= 60 && $datosL['punteo'] < 70) { $this->SetTextColor(177, 4, 204); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } else { $this->SetTextColor(59, 58, 58); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } $promedioLab += intval($datosL['punteo']); $this->Ln(); } } $promedioLab = round($promedioLab / 12, 0); $this->SetFont('Arial', 'B', 12); $this->SetXY(40, 225); $this->Cell(135, 8, " " . utf8_decode("Promedio final"), 1, 0, 'L', true); $this->Ln(); $this->SetX(40); $this->Cell(135, 8, $promedioLab, 1, 0, 'C', false);*/ } public function arreglar($cadena) { //Para E $cadena = str_replace( array('É'), array(utf8_encode('É')), $cadena ); $cadena = str_replace( array('Ó'), array(utf8_encode('Ó')), $cadena ); return $cadena; } } ?>PKZB{33tutorial/tuto2.phpnu[Image('logo_pb.png',10,8,33); // Arial bold 15 $this->SetFont('Arial','B',15); // Movernos a la derecha $this->Cell(80); // Ttulo $this->Cell(30,10,'Title',1,0,'C'); // Salto de lnea $this->Ln(20); } // Pie de pgina function Footer() { // Posicin: a 1,5 cm del final $this->SetY(-15); // Arial italic 8 $this->SetFont('Arial','I',8); // Nmero de pgina $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C'); } } // Creacin del objeto de la clase heredada $pdf = new PDF(); $pdf->AliasNbPages(); $pdf->AddPage(); $pdf->SetFont('Times','',12); for($i=1;$i<=40;$i++) $pdf->Cell(0,10,'Imprimiendo lnea nmero '.$i,0,1); $pdf->Output(); ?> PKZ>\tutorial/makefont.phpnu[ PKZ&&tutorial/tuto4.htmnu[ Columnas mltiples

Columnas mltiples

Este ejemplo es una variante del anterior en el que se mostrar como disponer texto en varias columnas.
<?php
require('fpdf.php');

class PDF extends FPDF
{
protected $col = 0; // Columna actual
protected $y0;      // Ordenada de comienzo de la columna

function Header()
{
    // Cabacera
    global $title;

    $this->SetFont('Arial','B',15);
    $w = $this->GetStringWidth($title)+6;
    $this->SetX((210-$w)/2);
    $this->SetDrawColor(0,80,180);
    $this->SetFillColor(230,230,0);
    $this->SetTextColor(220,50,50);
    $this->SetLineWidth(1);
    $this->Cell($w,9,$title,1,1,'C',true);
    $this->Ln(10);
    // Guardar ordenada
    $this->y0 = $this->GetY();
}

function Footer()
{
    // Pie de pgina
    $this->SetY(-15);
    $this->SetFont('Arial','I',8);
    $this->SetTextColor(128);
    $this->Cell(0,10,'Pgina '.$this->PageNo(),0,0,'C');
}

function SetCol($col)
{
    // Establecer la posicin de una columna dada
    $this->col = $col;
    $x = 10+$col*65;
    $this->SetLeftMargin($x);
    $this->SetX($x);
}

function AcceptPageBreak()
{
    // Mtodo que acepta o no el salto automtico de pgina
    if($this->col<2)
    {
        // Ir a la siguiente columna
        $this->SetCol($this->col+1);
        // Establecer la ordenada al principio
        $this->SetY($this->y0);
        // Seguir en esta pgina
        return false;
    }
    else
    {
        // Volver a la primera columna
        $this->SetCol(0);
        // Salto de pgina
        return true;
    }
}

function ChapterTitle($num, $label)
{
    // Ttulo
    $this->SetFont('Arial','',12);
    $this->SetFillColor(200,220,255);
    $this->Cell(0,6,"Captulo $num : $label",0,1,'L',true);
    $this->Ln(4);
    // Guardar ordenada
    $this->y0 = $this->GetY();
}

function ChapterBody($file)
{
    // Abrir fichero de texto
    $txt = file_get_contents($file);
    // Fuente
    $this->SetFont('Times','',12);
    // Imprimir texto en una columna de 6 cm de ancho
    $this->MultiCell(60,5,$txt);
    $this->Ln();
    // Cita en itlica
    $this->SetFont('','I');
    $this->Cell(0,5,'(fin del extracto)');
    // Volver a la primera columna
    $this->SetCol(0);
}

function PrintChapter($num, $title, $file)
{
    // Aadir captulo
    $this->AddPage();
    $this->ChapterTitle($num,$title);
    $this->ChapterBody($file);
}
}

$pdf = new PDF();
$title = '20000 Leguas de Viaje Submarino';
$pdf->SetTitle($title);
$pdf->SetAuthor('Julio Verne');
$pdf->PrintChapter(1,'UN RIZO DE HUIDA','20k_c1.txt');
$pdf->PrintChapter(2,'LOS PROS Y LOS CONTRAS','20k_c2.txt');
$pdf->Output();
?>

[Demo]

El mtodo clave usado es AcceptPageBreak(). Permite aceptar o no el salto automtico de lnea. Evitndolo y alterando la posicin actual y el margen, se consigue la disposicin deseada en columnas.
Por lo dems, poco cambia; se han aadido dos propiedades (atributos) a la clase para almacenar el nmero de columna y la posicin donde empiezan las columnas, y la llamada a MultiCell() incluye un ancho de 6 centmetros. PKZtutorial/20k_c1.txtnu[The year 1866 was marked by a bizarre development, an unexplained and downright inexplicable phenomenon that surely no one has forgotten. Without getting into those rumors that upset civilians in the seaports and deranged the public mind even far inland, it must be said that professional seamen were especially alarmed. Traders, shipowners, captains of vessels, skippers, and master mariners from Europe and America, naval officers from every country, and at their heels the various national governments on these two continents, were all extremely disturbed by the business. In essence, over a period of time several ships had encountered "an enormous thing" at sea, a long spindle-shaped object, sometimes giving off a phosphorescent glow, infinitely bigger and faster than any whale. The relevant data on this apparition, as recorded in various logbooks, agreed pretty closely as to the structure of the object or creature in question, its unprecedented speed of movement, its startling locomotive power, and the unique vitality with which it seemed to be gifted. If it was a cetacean, it exceeded in bulk any whale previously classified by science. No naturalist, neither Cuvier nor Lacpde, neither Professor Dumeril nor Professor de Quatrefages, would have accepted the existence of such a monster sight unseen -- specifically, unseen by their own scientific eyes. Striking an average of observations taken at different times -- rejecting those timid estimates that gave the object a length of 200 feet, and ignoring those exaggerated views that saw it as a mile wide and three long--you could still assert that this phenomenal creature greatly exceeded the dimensions of anything then known to ichthyologists, if it existed at all. Now then, it did exist, this was an undeniable fact; and since the human mind dotes on objects of wonder, you can understand the worldwide excitement caused by this unearthly apparition. As for relegating it to the realm of fiction, that charge had to be dropped. In essence, on July 20, 1866, the steamer Governor Higginson, from the Calcutta & Burnach Steam Navigation Co., encountered this moving mass five miles off the eastern shores of Australia. Captain Baker at first thought he was in the presence of an unknown reef; he was even about to fix its exact position when two waterspouts shot out of this inexplicable object and sprang hissing into the air some 150 feet. So, unless this reef was subject to the intermittent eruptions of a geyser, the Governor Higginson had fair and honest dealings with some aquatic mammal, until then unknown, that could spurt from its blowholes waterspouts mixed with air and steam. Similar events were likewise observed in Pacific seas, on July 23 of the same year, by the Christopher Columbus from the West India & Pacific Steam Navigation Co. Consequently, this extraordinary cetacean could transfer itself from one locality to another with startling swiftness, since within an interval of just three days, the Governor Higginson and the Christopher Columbus had observed it at two positions on the charts separated by a distance of more than 700 nautical leagues. Fifteen days later and 2,000 leagues farther, the Helvetia from the Compagnie Nationale and the Shannon from the Royal Mail line, running on opposite tacks in that part of the Atlantic lying between the United States and Europe, respectively signaled each other that the monster had been sighted in latitude 42 degrees 15' north and longitude 60 degrees 35' west of the meridian of Greenwich. From their simultaneous observations, they were able to estimate the mammal's minimum length at more than 350 English feet; this was because both the Shannon and the Helvetia were of smaller dimensions, although each measured 100 meters stem to stern. Now then, the biggest whales, those rorqual whales that frequent the waterways of the Aleutian Islands, have never exceeded a length of 56 meters--if they reach even that. One after another, reports arrived that would profoundly affect public opinion: new observations taken by the transatlantic liner Pereire, the Inman line's Etna running afoul of the monster, an official report drawn up by officers on the French frigate Normandy, dead-earnest reckonings obtained by the general staff of Commodore Fitz-James aboard the Lord Clyde. In lighthearted countries, people joked about this phenomenon, but such serious, practical countries as England, America, and Germany were deeply concerned. In every big city the monster was the latest rage; they sang about it in the coffee houses, they ridiculed it in the newspapers, they dramatized it in the theaters. The tabloids found it a fine opportunity for hatching all sorts of hoaxes. In those newspapers short of copy, you saw the reappearance of every gigantic imaginary creature, from "Moby Dick," that dreadful white whale from the High Arctic regions, to the stupendous kraken whose tentacles could entwine a 500-ton craft and drag it into the ocean depths. They even reprinted reports from ancient times: the views of Aristotle and Pliny accepting the existence of such monsters, then the Norwegian stories of Bishop Pontoppidan, the narratives of Paul Egede, and finally the reports of Captain Harrington -- whose good faith is above suspicion--in which he claims he saw, while aboard the Castilian in 1857, one of those enormous serpents that, until then, had frequented only the seas of France's old extremist newspaper, The Constitutionalist. PKZ tutorial/tuto6.phpnu[/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE); foreach($a as $i=>$e) { if($i%2==0) { // Text if($this->HREF) $this->PutLink($this->HREF,$e); else $this->Write(5,$e); } else { // Etiqueta if($e[0]=='/') $this->CloseTag(strtoupper(substr($e,1))); else { // Extraer atributos $a2 = explode(' ',$e); $tag = strtoupper(array_shift($a2)); $attr = array(); foreach($a2 as $v) { if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3)) $attr[strtoupper($a3[1])] = $a3[2]; } $this->OpenTag($tag,$attr); } } } } function OpenTag($tag, $attr) { // Etiqueta de apertura if($tag=='B' || $tag=='I' || $tag=='U') $this->SetStyle($tag,true); if($tag=='A') $this->HREF = $attr['HREF']; if($tag=='BR') $this->Ln(5); } function CloseTag($tag) { // Etiqueta de cierre if($tag=='B' || $tag=='I' || $tag=='U') $this->SetStyle($tag,false); if($tag=='A') $this->HREF = ''; } function SetStyle($tag, $enable) { // Modificar estilo y escoger la fuente correspondiente $this->$tag += ($enable ? 1 : -1); $style = ''; foreach(array('B', 'I', 'U') as $s) { if($this->$s>0) $style .= $s; } $this->SetFont('',$style); } function PutLink($URL, $txt) { // Escribir un hiper-enlace $this->SetTextColor(0,0,255); $this->SetStyle('U',true); $this->Write(5,$txt,$URL); $this->SetStyle('U',false); $this->SetTextColor(0); } } $html = 'Ahora puede imprimir fcilmente texto mezclando diferentes estilos: negrita, itlica, subrayado, o todos a la vez!

Tambin puede incluir enlaces en el texto, como www.fpdf.org, o en una imagen: pulse en el logotipo.'; $pdf = new PDF(); // Primera pgina $pdf->AddPage(); $pdf->SetFont('Arial','',20); $pdf->Write(5,'Para saber qu hay de nuevo en este tutorial, pulse '); $pdf->SetFont('','U'); $link = $pdf->AddLink(); $pdf->Write(5,'aqu',$link); $pdf->SetFont(''); // Segunda pgina $pdf->AddPage(); $pdf->SetLink($link); $pdf->Image('logo.png',10,12,30,0,'','http://www.fpdf.org'); $pdf->SetLeftMargin(45); $pdf->SetFontSize(14); $pdf->WriteHTML($html); $pdf->Output(); ?> PKZEB B tutorial/tuto4.phpnu[SetFont('Arial','B',15); $w = $this->GetStringWidth($title)+6; $this->SetX((210-$w)/2); $this->SetDrawColor(0,80,180); $this->SetFillColor(230,230,0); $this->SetTextColor(220,50,50); $this->SetLineWidth(1); $this->Cell($w,9,$title,1,1,'C',true); $this->Ln(10); // Guardar ordenada $this->y0 = $this->GetY(); } function Footer() { // Pie de pgina $this->SetY(-15); $this->SetFont('Arial','I',8); $this->SetTextColor(128); $this->Cell(0,10,'Pgina '.$this->PageNo(),0,0,'C'); } function SetCol($col) { // Establecer la posicin de una columna dada $this->col = $col; $x = 10+$col*65; $this->SetLeftMargin($x); $this->SetX($x); } function AcceptPageBreak() { // Mtodo que acepta o no el salto automtico de pgina if($this->col<2) { // Ir a la siguiente columna $this->SetCol($this->col+1); // Establecer la ordenada al principio $this->SetY($this->y0); // Seguir en esta pgina return false; } else { // Volver a la primera columna $this->SetCol(0); // Salto de pgina return true; } } function ChapterTitle($num, $label) { // Ttulo $this->SetFont('Arial','',12); $this->SetFillColor(200,220,255); $this->Cell(0,6,"Captulo $num : $label",0,1,'L',true); $this->Ln(4); // Guardar ordenada $this->y0 = $this->GetY(); } function ChapterBody($file) { // Abrir fichero de texto $txt = file_get_contents($file); // Fuente $this->SetFont('Times','',12); // Imprimir texto en una columna de 6 cm de ancho $this->MultiCell(60,5,$txt); $this->Ln(); // Cita en itlica $this->SetFont('','I'); $this->Cell(0,5,'(fin del extracto)'); // Volver a la primera columna $this->SetCol(0); } function PrintChapter($num, $title, $file) { // Aadir captulo $this->AddPage(); $this->ChapterTitle($num,$title); $this->ChapterBody($file); } } $pdf = new PDF(); $title = '20000 Leguas de Viaje Submarino'; $pdf->SetTitle($title); $pdf->SetAuthor('Julio Verne'); $pdf->PrintChapter(1,'UN RIZO DE HUIDA','20k_c1.txt'); $pdf->PrintChapter(2,'LOS PROS Y LOS CONTRAS','20k_c2.txt'); $pdf->Output(); ?> PKZPX?tutorial/tuto2.htmnu[ Cabecera, pie, salto de pgina e imagen

Cabecera, pie, salto de pgina e imagen

Aqu tenemos un ejemplo de dos pginas con cabacera, pie de pgina y logotipo:
<?php
require('fpdf.php');

class PDF extends FPDF
{
// Cabecera de pgina
function Header()
{
    // Logo
    $this->Image('logo_pb.png',10,8,33);
    // Arial bold 15
    $this->SetFont('Arial','B',15);
    // Movernos a la derecha
    $this->Cell(80);
    // Ttulo
    $this->Cell(30,10,'Title',1,0,'C');
    // Salto de lnea
    $this->Ln(20);
}

// Pie de pgina
function Footer()
{
    // Posicin: a 1,5 cm del final
    $this->SetY(-15);
    // Arial italic 8
    $this->SetFont('Arial','I',8);
    // Nmero de pgina
    $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
}
}

// Creacin del objeto de la clase heredada
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',12);
for($i=1;$i<=40;$i++)
    $pdf->Cell(0,10,'Imprimiendo lnea nmero '.$i,0,1);
$pdf->Output();
?>

[Demo]

Este ejemplo hace uso de los mtodos Header() y Footer() para procesar las cabeceras y pies de pginas. Se llaman automticamente. Ya existen en la clase FPDF origuinal, pero no hacen nada. Por ello, tenemos que heredar la clase y sobreescribirlos.

El logotipo se imprime con el mtodo Image() especificando su esquina superior izquierda y su anchura. La altura se calcula automticamente respetando las proporciones de la imagen.

Para imprimir el nmero de pgina, se le pasa un valor nulo (null) como ancho de la celda. Eso significa que la celda se extender hasta el margen derecho de la pgina; puede ser til centrar el texto. El nmero actual de la pgina se devuelve por el mtodos PageNo(); mientras que el nmero total de pginas se obtiene mediante un valor especial de {nb} que ser sustituido cuando se cierre el documento (suponiendo que usted antes utilizara AliasNbPages()).
Observe el uso del mtodo SetY() que le permite especificar la posicin en una ubicacin absoluta respecto del origen de coordenadas de la pgina, empezando por el principio o por el final.

Otra caracterstica interesante se usa en el ejemplo: el salto automtico de pgina. Tan pronto como una celda cruza el lmite mximo de la pgina (a 2 cm del final, por defecto), se ejecuta un salto y se recupera la fuente. Aunque la cabecera y el pie usan su propia fuente (Arial), el cuerpo del documento continua con Times. Este mecanismo automtico de recuperacin tambin se aplica a los colores y al ancho de lnea. El lmite que fuerza los saltos de pgina puede establecerse con SetAutoPageBreak(). PKZxMe e tutorial/tuto5.phpnu[Cell(40,7,$col,1); $this->Ln(); // Datos foreach($data as $row) { foreach($row as $col) $this->Cell(40,6,$col,1); $this->Ln(); } } // Una tabla ms completa function ImprovedTable($header, $data) { // Anchuras de las columnas $w = array(40, 35, 45, 40); // Cabeceras for($i=0;$iCell($w[$i],7,$header[$i],1,0,'C'); $this->Ln(); // Datos foreach($data as $row) { $this->Cell($w[0],6,$row[0],'LR'); $this->Cell($w[1],6,$row[1],'LR'); $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R'); $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R'); $this->Ln(); } // Lnea de cierre $this->Cell(array_sum($w),0,'','T'); } // Tabla coloreada function FancyTable($header, $data) { // Colores, ancho de lnea y fuente en negrita $this->SetFillColor(255,0,0); $this->SetTextColor(255); $this->SetDrawColor(128,0,0); $this->SetLineWidth(.3); $this->SetFont('','B'); // Cabecera $w = array(40, 35, 45, 40); for($i=0;$iCell($w[$i],7,$header[$i],1,0,'C',true); $this->Ln(); // Restauracin de colores y fuentes $this->SetFillColor(224,235,255); $this->SetTextColor(0); $this->SetFont(''); // Datos $fill = false; foreach($data as $row) { $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill); $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill); $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill); $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill); $this->Ln(); $fill = !$fill; } // Lnea de cierre $this->Cell(array_sum($w),0,'','T'); } } $pdf = new PDF(); // Ttulos de las columnas $header = array('Pas', 'Capital', 'Superficie (km2)', 'Pobl. (en miles)'); // Carga de datos $data = $pdf->LoadData('paises.txt'); $pdf->SetFont('Arial','',14); $pdf->AddPage(); $pdf->BasicTable($header,$data); $pdf->AddPage(); $pdf->ImprovedTable($header,$data); $pdf->AddPage(); $pdf->FancyTable($header,$data); $pdf->Output(); ?> PKZ 1{11tutorial/tuto5.htmnu[ Tablas

Tablas

Este tutorial se explicar como crear tablas fcilmente.
<?php
require('fpdf.php');

class PDF extends FPDF
{
// Cargar los datos
function LoadData($file)
{
    // Leer las lneas del fichero
    $lines = file($file);
    $data = array();
    foreach($lines as $line)
        $data[] = explode(';',trim($line));
    return $data;
}

// Tabla simple
function BasicTable($header, $data)
{
    // Cabecera
    foreach($header as $col)
        $this->Cell(40,7,$col,1);
    $this->Ln();
    // Datos
    foreach($data as $row)
    {
        foreach($row as $col)
            $this->Cell(40,6,$col,1);
        $this->Ln();
    }
}

// Una tabla ms completa
function ImprovedTable($header, $data)
{
    // Anchuras de las columnas
    $w = array(40, 35, 45, 40);
    // Cabeceras
    for($i=0;$i<count($header);$i++)
        $this->Cell($w[$i],7,$header[$i],1,0,'C');
    $this->Ln();
    // Datos
    foreach($data as $row)
    {
        $this->Cell($w[0],6,$row[0],'LR');
        $this->Cell($w[1],6,$row[1],'LR');
        $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R');
        $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R');
        $this->Ln();
    }
    // Lnea de cierre
    $this->Cell(array_sum($w),0,'','T');
}

// Tabla coloreada
function FancyTable($header, $data)
{
    // Colores, ancho de lnea y fuente en negrita
    $this->SetFillColor(255,0,0);
    $this->SetTextColor(255);
    $this->SetDrawColor(128,0,0);
    $this->SetLineWidth(.3);
    $this->SetFont('','B');
    // Cabecera
    $w = array(40, 35, 45, 40);
    for($i=0;$i<count($header);$i++)
        $this->Cell($w[$i],7,$header[$i],1,0,'C',true);
    $this->Ln();
    // Restauracin de colores y fuentes
    $this->SetFillColor(224,235,255);
    $this->SetTextColor(0);
    $this->SetFont('');
    // Datos
    $fill = false;
    foreach($data as $row)
    {
        $this->Cell($w[0],6,$row[0],'LR',0,'L',$fill);
        $this->Cell($w[1],6,$row[1],'LR',0,'L',$fill);
        $this->Cell($w[2],6,number_format($row[2]),'LR',0,'R',$fill);
        $this->Cell($w[3],6,number_format($row[3]),'LR',0,'R',$fill);
        $this->Ln();
        $fill = !$fill;
    }
    // Lnea de cierre
    $this->Cell(array_sum($w),0,'','T');
}
}

$pdf = new PDF();
// Ttulos de las columnas
$header = array('Pas', 'Capital', 'Superficie (km2)', 'Pobl. (en miles)');
// Carga de datos
$data = $pdf->LoadData('paises.txt');
$pdf->SetFont('Arial','',14);
$pdf->AddPage();
$pdf->BasicTable($header,$data);
$pdf->AddPage();
$pdf->ImprovedTable($header,$data);
$pdf->AddPage();
$pdf->FancyTable($header,$data);
$pdf->Output();
?>

[Demo]

Siendo una tabla un conjunto de celdas, lo natural es construirla de ellas. El primer ejemplo es el ms bsico posible: celdas con bordes simples, todas del mismo tamao y alineadas a la izquierda. El resultado es algo rudimentario, pero es muy rpido de conseguir.

La segunda tabla tiene algunas mejoras: cada columna tiene su propio ancho, los ttulos estn centrados y el texto se alinea a la derecha. Ms an, las lneas horizontales se han eliminado. Esto se consigue mediante el parmetro border del mtodo Cell(), que especifica qu bordes de la celda deben imprimirse. En este caso, queremos que sean los de la izquierda (L) y los de la derecha (R). Seguimos teniendo el problema de la lnea horizontal de fin de tabla. Hay dos posibilidades: o comprobar si estamos en la ltima lnea en el bucle, en cuyo caso usaremos LRB para el parmtro border; o, como hemos hecho aqu, aadir la lnea una vez que el bucle ha terminado.

La tercera tabla es similar a la segunda, salvo por el uso de colores. Simplemente hemos especificado los colores de relleno, texto y lnea. El coloreado alternativo de las filas se consigue alternando celdas transparentes y coloreadas. PKZd\tutorial/tuto7.phpnu[AddFont('Calligrapher','','calligra.php'); $pdf->AddPage(); $pdf->SetFont('Calligrapher','',35); $pdf->Cell(0,10,'Enjoy new fonts with FPDF!'); $pdf->Output(); ?> PKZcTtutorial/calligra.ttfnu[0OS/2y5 Ncmape\cvt fpgm^\dglyf<vhdmxe bheadg+u6hhea n$$hmtxV3locaI{maxpyH name2%dhpost;J;prepH_<HHS0S0ka@ e:cZ(+@s( W{- S : c  Z (+ @s (Generated by Fontographer 3.5Generated by Fontographer 3.5CalligrapherCalligrapherRegularRegularAltsys Fontographer 3.5 Calligrapher RegularAltsys Fontographer 3.5 Calligrapher RegularCalligrapher RegularCalligrapher RegularAltsys Fontographer 3.5 5/26/92Altsys Fontographer 3.5 5/26/92Calligrapher RegularCalligrapher Regular@,vE %E#ah#h`D-,E %E#ah#h`D-, 8@68-, @868-,Fv Gh#Fah X %#8%6e8Y-@2 =@Fv/7?<a#@ ] xv??'?>32&'%'".'76544 7"('0-*z BK( ^8 +%- L%;8?" "7 u * F@+&CJ$0G 7  (56&/ %G* %!5202+*5#,Cj~@3URM- J-&)!dg`8796<==?32?4.#"#'7632%767>7#"&54>32654&#"'7632 8 H@\J* -?D^I54R&@F;b/ ,!, voId+<WK2) 0.%3!AgT*QA9OA2)(%3)H<(M!= )?KbS"C@0C% qEV`3)W%*%-T'X#- *#[)+@Pp@6@?)3?+! X8K+6(6(4< "" JM>;/+6(J  ,"E4ILshF=J"*"!#:U{# &2%H+ ")V,/  ):Qjq(2";H@] xv?v?..10+72T  9+!@  .]/xv?v?/..10 +./.54>?+< (   !*$%$/ "N9&'2t/5|WA ?FpoHY\9!@  .] /xv?v?/..10+>54./6?    $8 &$ 3) P07b$KC @@oH+Uw]8/"M8&=#V=@<2%$ ;'*,5,4,,;,5!1*T/.,54,/26]7x$Fv/7v?v?</<<<??99<9999..............10>$+&#"&'.'7>7#"/567327&=263>7>7V  $ 0   % D J $ :+    (% !%'!+   /) P@$    9Fv/7?7 6 /.C $ &  5#y;@  = ?]@xv?v?<<<<9<<..10 +.+73? 3;(FSg)P15n : w + *@  ;]Fv/7?O@ 6 B??..10 +#7>7>O#"[a'eM'%/-~܍.xG0(@% %-,CD??/.....101 +#".54>?32>54.#?67>329H;g90. (7(& 4AT+9 9G@45koU"6X'"+=%23'0m< AF,@ FGxv??/<<<...10 +7=4.#"'?>32    $1 HW05<8    SL/=@,' ,L0/.-H!M???<<9<........100 +%.#"'?>545.#"'>32?O)VT( ,<7 n l0G*;S8:Bc& +9HE  ` J :K-IGf QF1+@0-( #FO??............102+%'7>7654&#"'767654&#"'7>32K2;F"(- m9@m  -%&c/.((0O(3S 2$/ /VZ0l@2. 0.0-S1+*&+,=;'-   -/0T] UxFv/7v?v?/73?    36](dM+, )#&k!,.*+;.CV"8 " $ Q: F,1@! J*&FWxv??)a?<........10-!+#".''>54/>?;264 !3'*$+<<6<%#"[V -#,3:5,@Y',I3'.7. HBH54HU M8)@, 6(Y92 ZB??/<.....109 +%#".454>?32>54/&/?632E-8e;F B 218  B> &17 1\YdYU_H  95h3 U:  :-cM N@   [Z] Dxv?v?6?<<.99..10!+7"#/"&/?3267 )G PJ$6$, K@K4Q>09 +'pI EG6GI@$ *#*0;>7-'04CFv/7??/?7654/7>324&/3267> $*F 0'FH; 77Y_I Y5; (l33  #/"*"&*<=.7,>O /<*= * 1/-2 $n!<!(3# L5&@ /  '3M ??/<......106/+'?>54.#"#".54>32:: C  218   D? #0:E-8dQ_<:4h2X>   9-c/0^Ye; :@  `]Fv/7?6 "G@! # `]7c & !$  7 /-5}B7=p $ & +"/)F@b]xv?v?/<.ĹN ć.N 10+%5% )~P_/b)4@cd?j5;; "/2q,r/Fv/7??/////<`?<...10A/+#"&5#"&546327332654&#"32673#"&546324&#"326X 9>Y|V&8O=/J~Hs'Q2hݥ(!4F*$2C cEg$6iMt+(NSӠ՛%1Z:'4a-1@@0./a2.u 0t1  Bxv?? ?<<*?.....102+%'"&/>?>76%'%U m *&<4?"   9H,0lhZM:(5.) *0>w/X9 & '.QF`(JA@I/#C#K;>5 >;z Fv/7??/32./?>54.#323>54]%1 `? =I  B=}AlwU,5. )(/ %*  !C#)(!<- GnNt /B$;. .> ! &(/ LK  2#<2,@+&2-30}3#{~r??.....103+%#"#.54>7>32.#"327< 27& P; " -Z4-2 /T%8L @5')i("Ud:>&(L: '<* ' #NM8G "8M@"6=9+. 201./.& Fv/7??<//<<<<<<<...109+#"/45/"7>3:72>54.#&"#326:*_S//g5  0) 3Gm=&@.SEAu-23 ?$D'=E>?0~9E;M 15;c@`9@O543)  &/ 8/%%%5:%.-&$--&./&98"0&%  Fv/7?<732637#267#/2637`(:c|9I:+&!Z&LS1Z]BBBEK4 C|-+#%/BVG)&D  H3}@8+'+)'# ## $ , $ ,2z  $Dx+Fv/7v??/<<</C?<0@ (6 ??/.....10@+#".'4>3.#"32654/&/7>322 6A>ly:+UILR53)S6,/G58 '/M 5&JE.O'/ #cRW{X.)  5 #;Y-1@wN1+ E$F Y@Y63(Y:':1Z Z%ZAZ4ML"OQP?>C}?>@$YGFDCEUVURQPONMLK >;1K]-,3Fv/7?v?/?326?=? "$  A0**  I9  'H%&;v;&&!!) +7% ,#$ U9+# '(0ߔ*9I 4J>F;;?@ " !g6@ GxFv/7v??/<@'&"!% % "!%Fv/7??/<<<.....10(+'>5'4.#"'6?632f    HD  6T&Fmju=&- -!+/:HJ)Dk@.;3:8   )E'vEEE.1D*C1?.x;Fv/7v??/<<.T4x ............10E;+%#"&'./?654'.'?327467&5/.#"'7>32.8  "Q.A%-  I5$=h` mN K&2 [#. R%! -$wE]~$ /*  g  LF*$ 9&hD%P@& I& d%""!  Fv/7??/<<?<?......10&+%!7=4&'4'.#"'7>32263D')%  0<$ *8&, 848W/M(</ ,( Q *BB@A=965$ )//m9],xv?=?j( 5(7$F?/C *#9# 92!pyR";Dr-.  95FF6XC' U #)"0?5M2w/%-\P--6 ".L8yJID)@1<+h @p@5, ;/+) ;;?<? AA!"#$?$] ,x,Fv/7v?v?/?32>54.#"'7>32YVa8{V />1-$+=3(>",F@. ($Y/Lwo @&p 1^.]B";N:Q!:,,V@>5OC *i:)L@!&  &GxFv/7v??/<<<54.#?4&5">?6321 :T9$1* S>U G;.B8/Mqe6+J/  7%=::1 . C70D9@5*'1A&LEDEA??9........10E+#".54>7>32'7654&/.#" 32670,{@a8pLiCC)K!'y[=#  :M< ?83b)/-S/)W<=:D>+ Ab@-6%%#AB?ByB, #"!1#"!,~Ux%Fv/7v??/<<<32327c IY!@8AR )(#$CF)5wYWX!$.#" 2$ R@VH)" +4*As;<M`K; >!#  65A$M?E@>, 37#@@@0)7#) Fv/7??/9.....10@ +%#".546?332654./.54>32'&#"= -60DM*,H*2< V( 3? +3 9CYrD@L "Q 2?J4961% *%(H6(0&1 .4-^7 ,1 ,< >0*#[ H@  z 6 UxFv/7v??</<?<<....10+#7"?2$h',=WS-+6>mEAf xgZ2B<2- $1)@-,+*$2]?v?.......102+ #".54?32>='5?$ *@E:++$KNC-/${ -X2+D#-,4'.`7axi> 7arZ?|/-K!HfG# \vfYQ>'!,/&@ - ]U?v?........100+/.'7>32?>5?U[  $" @R.9  )(Z3 *)#6E0  #ac!  V 4Gh:-cbp5[1@;&$ N>:8A\),xv??...........10\;+/.'/./&#"'76327>?7>?:M?)  8' ;= ( V  65&w&1*<%/ +3&g( " %5( ,j}W!#   $ i!u#-!LAAF 0$<$CnbE##R4XNwIgB_"  SD\RKv}?AJ@2&!51/*:: &B BBA%??:]?99.........10B&+327'"&/'7>7/.#"'7632>?9-bVI# #%? u ) (+]'7@)+  .= & &2@4v "*x^ 3   E  A3&T< '% l>d27 97"S7@@30 *#*  7,x Fv/7v??/<<<9........108 +<74.#"'7632>54&'?-$;.("8" .L(>0  sI@&819968D8^F><:.(OS:Lf1F)UX"S7Z"$Z-0  H;H@"3)&%!<""7(???<<............10<+%#".54>?+".54?32673232>HG=9+wKLYW"&.0:?<X+NVKH"@:J2=,.)K^I #&8edd(/`   #NJaI'6 ]BM@#N   ]Fv/7?32Ey $9>$) # 6, * /%5?D+H'/ # 6D)Z)-*$ETK@ %,#8&P- ** 9v?67632654.#'7632 +.^97O    D "Q F$G1V C38)CO4Sr8M72  &a<2ZZ!g=8F%..,,@# ,-*-,??.....10- +%#".54>32.#"3271R?NR *]4A,! ;% A,( P$=t$#'gP  E !TJ  &<'@;-+& =*G??........10=&+%#"&54?32>54.54? 37D9Qfl!   "5 #1 >YvV& ')"*S:2/F( *#`   ?J/-3@-.*. &&  Fv/7??/...10. +%#".54>32'767654&#"32?;(5.@ P>iM&7> ! *(, + M$!ZG#& d5/ SV9oY!2%!" %-.(,M\Ac@0*.';*%u12#  3%$2#"!#;.!Bx*Fv/7v??/<<32  0 7 " 5 Z $!C/## *  A>/  ) Q)1\"=!G+5:E$ %dWB@LC960" TSQ=X5|XF7)??/<<..............10X0+'7654.#"#"#.54>?232?>54&/.54>33267d+-D :$ &! (_AQXYQ! &)#:R ,'"!#3.'I>K6 -D25$  ,0 +   D)UB1"0  3 ,%" (4']u 9<G@* 5/ -/.-(.D Fv/7?329"! *,f% I+*";%D3 C&>g;C".] 49WG^&(4 / D*E%f(F)?"?[P@+&%G@  %$$% GxFv/7v??/32V   (- GC )  7@ dC  # )6"oO-"+&?@" %%&% Fv/7??/<<9......10'+#"./6?4.#"'7632V   (- +E!   dC  #  |~Kl0>QaRF"E]@*?<41,#7' E}FCF!"! GxFv/7v??/<<<<...............10F+74674&/&#"'?632#"./7>54&?327%A'   c   qT  `|>tn*%G  11@*5)#Dv"M@ 2%Qj3" 3@ GxFv/7v??/<<<.....10!+74674&/&#"'?632EH  c   L%6>|>tn*%G  11*5)#P6@+$#"B60*(QG="!?<?632>3236  */K0%-\! ?E /TJ 7b(2" F(>7+@&* 0!G?<32>6( 6W3 $   7?E F"#?1=*m]$ ,h*r 2D)ACAEUFp/+-@% $#7,(,???<.......10, +#".54>73274.#"##'76320QEQ&K B; /T2 (U71Gq2-1\iA,=<%(h$ L#7Y946&(4M@!+%-$!,--5 0(%Fv/7??</<54.#"/4.#"'76327632Cu<60 #3&  D"  &r)# l2%;YF !<(+_"4,.2IO r&T)&%)L@!**  )()$ xFv/7v??/<<32,OG=0 R)'2@?]6D(*w_^ KB+P E,V5Z32q  -# Y ;4^,2 "'&23,,570 C-?#   !   $&FN,$+ %" - 3_zm/\@,,+"&"&00}-%, +"Fv/7??/<?<<<9........100"+327#".57#"#??326z!6) #! 47((?,6 E0( & _[wPG7.<J@ $!,=<::72;:7]DxFv/7v?5>7.&*! %'$      %EA#O/,##3X q4U$cJ 0G.xi9*&@%!+)U?32!=/&$ -& 36##*.  2NV0C3C',=&H1& !$K.@IB?$D4#!:(L',??6327>54/67)Y#` *  &)$   3/, B9/%#A"# T0;*, ~<~3a-33?" % )_}Z.Up! 'H:(m?'.+'76327654&'7327"%3* 6g%&+&!I02 & e 65 f 6#I8L O  G<R  9EGO'*H :.h.1B@00(2 2111!xFv/7v??/......102+74&5#"./.#"'?>3232>? "T     3 ,  %(8#0yC /j .<(0G9" "  %&3_<6Q3B@+ !"4.404?+4N3,>HH-":6 =-,#?@ qD?HH-":6 =-,#HH>+4ET5@ ]xv ?v???9910 +#".#"'>323267://[($://[('/+ &#S'/+ &#r&$&$I<A}@1:9-6   BA-B?}B3{)    )~Fv/7 ??/<999.......10B+%#2#"'732654.54>7>32.#"327< 27&(2'5,  &M; " -Z4-2 /T%8L 75')i(",*'   QVc:>&(L: '<* ' #NGI(G `}&(y&1 r&2$r&8E&DsE&DCE&DE&DE&DE&DIBv@-)4     BC@C0$ 09$Fv/7 ??//?9999....10C+%2#"'732654".54>324.#"3271?3(2'5,  &%C/ *]4A,! /% A,( P$0 '*'   J1C$#'gP 8 !TJ  &Hn&HC&H&Hs &&C)&/&>&Q&RU&RC&R&Rx&Rn.&X.&XC.&X.&XP0;@,2-&&<<,<62 *21*']Fv/7?v?/<<32.';2?/&!/-(>54OP#5,I#" $, " 'W" E! %I 2JC>z6P"h1 $@5i3+ !0G kCr@8:3!  /?=>&D=BL9830c=0/Fv/7??/<<<<?<<<<<9...........10D+%/"#>=#7;7574>32'.#"263'.+326?k+/(7K#F1$ p [7A2 &$  , )+z&4[*J}9+"4ek.p .hT! #==3;z0/; ( 8Fr@(0D&&>33G6!t6A-3&9Fv/7?6?////D9999.....10G+.##"&'>73267654&/.5467.546324'.'> ~68#ADf596!lNj v_#0!(7E7B, n>)fA32l04^,2 "'&23,,570 DK'\'  Z $!C/## *$JpY &FN,$+ %" -!Q+4Gm8>/ rQ)1\"=!G+5:E$rA    %.v@5%%%)YY ,*) +*&" qrFv/7??//<9:rq 1M@%1%$YY .Y(Y!F$  +  qrFv/7??///?//<<102+#"&546324&#"326'#"&54632#.#"3267ڙۘNzzzzm cCZrn^E` L7&6<<6*5gϤΥzzz;IU~_b|PJ#)N@>S*&>2 @B  } Y   Fv/74??7>7236323273263263#263#26377(:(   1FtVAW+&!@  * 2 S1ZO3 @ZP +CMY{|- )4  ) *0AdQVxE ( /.DTM@RJ8.&$H3#!7TNUUU=;??9?................10U+#"'#7.54>763>7.#"'7>327>.'32>54&+8 YVa8[C'Z />1 -" L`%+;7. ($Y/LF.)v 33(>"%/Drwo @&9d 1^.]B";N:LTk*3"1 **7%5%%,V@&Fsm&*%d&JwC@A?<-%$# 70,*77#"  :%$c :C-Fv/754&'?w1/ s)0tM8# ]<,+(1 .-+-`^C N0CQ,<$mC6'C#"N'UX"GNO"'n,.  .A^@'("%#!1B^B-A??<7@?<]x"Fv/7v=?v?/5>7.&*! %'$EH     %EA#O/,##)#(%6)3X q4"$ $cJ 0G.xiF m&+9&K !=m&-)V@'  Fv/7? ?</<<1@<9.....10 +4.#"'7632#'#73+E!   Su0=Pgf |~Kl0>QaRYYxMm&6 ]0G@("% ''Fv/7B?<+A?/9<9.......101+'.#"327#".54>?'&#"'7632]I !) 6  +(6 ! )#?*7#+)" $2$  7% XL10u#&'@   D?#C?.......10' +#"&546?3274.#"'7632 {0*>$ ' $0=  1#*p(>~X+&D1#_ !#"&V_bp@5LC5&<42!32>32'267654&#"327267;(5.@ 2F$8 6, * /%5?D+H'/ # 6D)J$UM&7> ! *(, 4 M$>G#&d5/ 5/ %,#8&P- ** 9a3*H!2%!".-.(+(# ?M7F@>$4.'2=/2=2=?.!!+)7$GCtGEGG G=28??!ZOFv/7??/?G?<999999........10G+#"'#7'.54>7>7&##"#'76327>4.'332#$!0Q2,'Q&K '5/?(U6;'n  w* ;M%/3&O-1\'>pA,=<%( 6M#+4 bU#73 <2P@% $ 32V3 * ]Fv/7J?vI?<//.99...103+'.'7632#"#.54>?32>7b !$ 'e {n); ((C04I99 %'%@O 2.CX!.E5/TI-* -585T E5D@  x Fv/7vL? K?</99....10 +'&'7632? !$3c #)**)r >CKvu\F@Fv/7?<N?</<C7>C7>}&$Cy&$ y&2 c@P][UL:! ICB5C[-[-F\-_Y 9Td(dQFZYRP-Z[Rcb  -_^RQ\L?Fv/7??</<<?<76332>54.#"'7>3273263263#267#/2637(:c|9Wa8{V />1 -$+=3(>6F@. ($Y/F"Z& 2 S1Z]BBBEK4 C|-+# B&p 1^.]B";N:Q!:,,EB!:%aC *VG) _a@/UMH?0%$#83/H,P,*7_`\`Z` u`t`!``<???<<...............10`+%#".'"#".54>733275'4.##"#'76327>32'267654&#"327267;(5.@ !kQEQ&K H ; ,T2 (U712 #+M&7> ! *(, 4 M!aG#&d5/ "giA,=<%(h(L(R94&!$!2%!".-% 1c,^$@T?<S?<....10+%!5!,,iX^$@T?<S?<....10+%!5!XXi#+2@ )&%]xvV?7 6 /,. @ 7 3. 67 # & %4"# *  *##%@ ]xvV?vA?....10 +.'&54?. 6 7 31  *## *#%@ ]xvV?vA?....10 +'7654/767 6 /,. @7 # & %4"#@ ?327'4&#"32678N)*K879978N)*K8795U==[Z+ 0@ ]Fv/7^?m&$`m&(}&$`r&(`}&(C}&,3m&,9r&,}&,C2 }&2 m&2#@ ?32GC )  7@ P)6"oO-"+-$,@`?< ?<@..10+#'#73$u0=Pgf-YYx3F7@ kk]xv a?323267F( 0$~ ##&(27(HE*@  1 ]c?vb??..10+#"326E)_!r"`8-Y/F!6 &@Y ]d?vP?<..10 +#"'732676Z=)"*d,I=BK&%X* 0@ ]Fv/76??~@,AABCDEF2G<HTI(JJJKL0LHL`MMMMMN N$N<NTNlNOOOOP P P6PLPbPzPPPPPQQQ4QLQLQLR~STU>U>VWXY|YZNZf\ ]N]d]d]|]^_``(`@`aabbdetf\ffgfgfg~ggghhhhhhhjdkllFlmn(nnnnnoFpPpPpPpPpPpPpppppppqq,qDq\qtqqqqr r$r<rTrs$sttXtu:uvvvvvvvvvvvvvvvvvvvvvvvv8  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~$$  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~8N@~1BSax}    " & 0 :!"""""""""+"H"`"e% 1AR`x}    & 0 9!"""""""""+"H"`"d%N   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghjikmlnoqprsutvwxzy{}|~ 2DC<H#x #)H+9+y#X/#+U*g   ;6X/X/X/ |V`2F4:(*1 9j%W;];X?#E4;[tc0S%"3f,/U;?;XEV`1 %EEEEEESffffF  >1V$t[fFc:j] 1"DE%f + ( ,X#####US+```4444  # %%%X  FDKPUW[`kp~g.<=?/hiquxcjw>HcnCrsyGFtL6nrZ72NMbMO"TZJ]\]^_ ly{ mnvz|}j9co! e8V?Ad7bQR &q03GA #]:+1a%(UYmTr!,;I}ykQfhPK:<@V_mpGHx72*m)LUPu<5Vf^JH-3H!B%Alts@                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            PKZX 0WWtutorial/calligra.znu[x\W}/~ι{wfgfl_.%Y%ٲq`jnfL@ Bh!ˋc ҾsJ+?owf_9@n:vL|=C_{{‡_c?z #Wxɡ6\8zG}'[G,ןƯSG]{W::~}ű'}in{}ʃ.ǯzݵC _<~@@މwSD{M$,m <oǨbX"bc{E +#担b1F}-/N=OV|x~>|w>=p-ZI@0x-(@ЁL`8  xqI|4Ȁ,ȁ<("(2*!P 0 `10:`L.)0 f,`,5`-Xփ `#6-`+`'KB^n`ކu Fpƫ oo7w?  _#/''_Oπg߀_///ooOb>x #'$ ) p8+U"p\ KXxUćS/aN= fW06c\yr\?G;<.wA} _R| L!pB[~#"+ѓ}X^ ^@^~-,42zZ~=σX,:x|`#&̟,Xw/nE &@|=7ys%MXRi-,|?y/ r)rk.F?1@ϠNm̓),m,]-&0Џ~, sX;><_ k]` Aryiy } X|sl%oū2|i9^ [N`9怿߁σaف=x3|m0参O"bMp;8q q';M/!n!nDC@A}7^%X`nF(5u @N?x'cXO\[:ouC7/זx}A}}^}Px&/;! .b]g!_`~𷨌h=V8 +@HsOҙ>[#OFOÖf?=}lr.ɑO.cV" C;?c!nہΩ{ cUlhq-uG؟Nk, =B!C)@fIY\VO'SPG V*J~* ]d0t2iw ~ #x:ʼn뮿n߾p8rԶ> xU=xʥ<ia',ш;w|M,MY|4;f! b!]&c#rlEx!; *%(>HcvL8k|FU!)%)*ǖ"K0t9=?:c}k|)gLߓmnx ĿBix|0_؁ǽWWw'??=]rʮ}{滖">=moݿgkAYX,hDA{,>eݮjHC@}P!1Nս;$֦qU)Ohu=裊i*ߡȐi0 jiV!ָV{vaKКzYLL;lLgcT`6WF\QH;/gRekrNU]YQBi>I_Gb@Zw2ɷO}O#a2g!Qm]G W 8oLf&6e9tmAn$ QSMNsfK d\z x3pHՋ: %38:pĻ kغlr@c2#Fڣ-ԙl<Dp>1a!o`x\<\Q9mxœuD-^nB)Vߟi66#ɫ.ČfGx*W,:=6l/HRHg] R ɽ/Hчp4 Zn 3rî2”L'':|{ib QmN'B +b5<Il1\H$,dBaQ!G[s2XM`w;3&cțVQM$Lq[Fn-١`Ddnxzt&km-QHP~"'O}"hB,L "!rL#[.6@DȧЏ 82~$#l? F'fe>:lDKb炰b"Lb/! h}"ݥ v*UmAIldV7_0ndU?oͧ0^}e , q} {)PI| B,6YN@swFl>Ip#7~gs}Qj݌OT{w^Xq҈a # |$|DObT}gSOA٨] JpIfP%j*lVJMm֒>S}=tqW X. VJl `md]Thׯ7[mnۙ Xo5h{sw w`'aHIX6k ARt"ڬQ#ȶJgj>V 1^WHQIZi@8@0 N!_{|flF08ۄ^vh؇L=- /< m'{?p0Nּ`eѓjyK 3͸붖_B 8`"Tg]8c|!7N Z\Qį+Dv_G?8~?Z"Cb"A]Mӛ}^=W…4XDPgZ~2:*Z\̌Lg[b&+3=Vr9gkf0)jph`XmÓz=Uwڮ$`ͽW, *ZV  X0l!%i h>7߬~a @K.$6"&SKY4O- m֒;7Kȓ_&.RPDze 7a>tp|ӖObPO| 8@-d &tĀ3R$}woqhv9gmxa]qW༩ =8hï#<'p7x`#!s$"#6:mMJP }xF;/r,7"5 nm1I96o1SfCz>鈁s2lIeQ佁=KJy1Z6HGwER9G&\°PpFц"O ygSVPJ8:g8²[6Y ,{xc%i[`S#d'l 4W;bNb!6T%U0uO2Q -cIǫX̛obTE$dVcȮh檬U] 풃S/E@z%HZeZr33yC:#o0⃳vWLFkc#A;e'̎yʨLdh5mf2k w_fh$z0S!F2,)h_dT+\B{~!Jxrx*:xoFm39­0X㎉&RI4^93.̝I/膜߬ZfL"b[=XFX2"ńC@y 0Q$Bu uJ {k%pUKuooۄןKo%3'cfڒ ʟr/CUpF=ݺ,}Ebxt"{(|P]Ya}8 HLE# EKt=vc#M5˰Iy?vKLgسD}cT.nTFp$aOTkPYU{|Y7ozϽ݈31 ׌J:ަnmfӉL y ϢhU)X>*G#>ij8I˕S/ 9?ЕpS^փa*y֣8M\῜#ݥGbUCԯ.]g)c?x-Z4T=9)- Ȱ Y)/y{ƪ?V j/f&w߼33b*&hu{o߼G/?O:/3xO(;huzVnobnzC?~C{ƲY~'e%{=V1@8X\ծ2y6LH\O< uëfq#ʫװ㇂,6[`|9,#T5miß6o,}{Rnˤj9Sޓ̻DL"Fo" ZBGX,#yez @g4Z$LX8Fl A-@v1.p*,xl$)$"VgƇ)&]^6~~``iL"NFJ(O?Hګ!`Ar6Ut<$Y*(o{`˂w:{  ˪'bdVx0ۙ@įe] )hf2WV}ylq-;K fx#dk,F|l,$Y1~yh|p24[ACW0_XV>|Bj)΍aFYmy0?@_LPPtUkg tT`Fh9ʈ*y3Rz m?i&|GH1f2'd M${ޖ J5(n[5eAP@{̽;Cw LJr4i,z^Ƒh``Mc?B&ő2x K0žQS= hĬ8gh8lA2+r)Cl @>xӐaȣPI11ύܝb WsarҖw|+`盚m5S`ޤR= S+n)Kܺ9g^iە6?ù8&y.gj^ěp==eF8'٦Cs@j[Br4iz@ lI7nM4rtMmΫ]d1qnsCNn+msܒ5YHD+vȍkC`p-}.`L"z=f)`Z̛8]qj*HBA[]P0(K X:v:g˪[8SvW)^iPAnp⌦~=8g9 XH a߸1L4Mffx$x`&ؼt 'COg34M7zWsM@Vxo~+mc_;incma?Em0 =;1TcR`^`:57ěn1( ҫGK]Qm8;~'֫CYNʼnL V+"YU)'vW`ub.T2$kIo-l3X皫ֿk.wR0ńZH/8\ij֍{'"%m 4.Gm|d1)ޓ 8ʭtSZԍӶxo'|htkx > t6b|nO#dI\!Dϒ>7W $%2?8E{'/|X9xSUuHG`ggR6N̩}|iP!k߸ۊ`Bd#~UiDf%:fis L`lC7/ IqYDYq|蚐EȲvJ@ E2}$n`%3T褫broɉ $9ev!2$ED^M44~ur4n7iYkN+/cIJxÚ#ߜG6}ot݁7o96k{z&AsZc~)3-<0m|iũFXr% ]qK<ž#^}Wv {::kۣ`x皤.H\2yAVDR-EU\eČ&A? _ ' '. kXI8jD4VXAs4^AOvm# =ڠ7j1PHFL$BkF~87VK5ӁmFvH&-ٲ)7*9Dp$9>7Y8Y_ 2#m_9#X9Q6m[|ִ{VjOfsAc:_h=ƱL4(,Ȥ ihXBSa;GE>j ^uX hLӳK(b=ƶ{eDhqabx/Hd*Q:Fō;-4荭}щR%ȅkh)G.>|8WE"%bɅYFOn\{pM@wi.8TIc0i!/1' sfN֟DG/GyuWv6eLtނ#θ-ٞ,}H]g[}:JOIzCw y%DS8| GHP6ؘh}[ /g#W>Ks3z?|W̍0DXD֭)A}8?\#;#HiLAMרrbZ G:6hvj48kfCR PS4.= o yGu3rM 86.ywɕn㿾f*L ?.ǝ1TX^xcJ Ab٤u;S?@Cğ[Fap}~eטŖh9^BsQ5zv-%P-[EBU+"LAiөF%+&ndd*IoDQ5݌4ѝ-.f-ݓ/Rs-ߺ^h[&#iZQ)H\%BF};k6-|wYG ?>4[J2X5GR4Џ& \_ƀ5opwIx/jl1VfLkV bE^8drA|pVcM'HzjaHwc3 `OFF3ixǮЦHECHW3v{=ZTF`bV/%'49)U`''Dzbews> ;nwmnܪtaix*+Y 1ۢfOr1 lNM\M%QK@0#L;D2Ad{x 2{dSfn}"㲞O\svr/eV;Nu%6o$9;rq!1|Cb&wQT5H6ى¶'챺V|CjC*MBҧk{@piYUVkQPƶcuPRy% ^/gvtWSV47l@i'u!|T5Õy \I {ڌ:U~ѫvi5p"?qiKSV%WڰO=l 9auW+5XuCrw!F:EԃD<9^O [guΩձ`oDv;[W(%tn6Iڳdž?FĨdԤvTx.!Md r(S:;`Qp5,vORd5&cD!/-} ]P[ `"UlSE;2ic9×`Z?3ڪ%D۷m1&޶yy_νVx#}WCT?%RBrS[~f38`NauZ 4$(BVW$U,(~) O64_id&$]K\\ ATC 3Dw^1N2x= dvi*Ci3Z eFiNํ͹ -SenU! 2ꂻ弼S[slў#B*nIɘSo%߱&ͨUVD3'J] m(g0u#xWMay筜,i]YN˩KsRԀ7ߺ.°].Ǐy 0zngxÀ`@%YEe~8H :Cti|S-^v]U|܊c?{V*PiLOe$DJ:.8 Wom!t v6'\X*h(D&o; iTHCd*74t׽B3 β kCJ؀u&]-5_7y* * z~_mGFܢKI$1m.m}Kr/xxc͠ճdBӭZ!P~eaG8z3XlRts=y)̍INFL^"q`s#z$/b逦v/rLX;Dzd0n_KH j_ 5w`>cΑKքwDƅ?ȫ7߳BfUW&v:!pY&[7@fh#3"tPZF, xrn{}$9lzMgl+jWaH>׼*[uhոdCs25(Ny❜VM "|ԧ^Ik匇Y9a^)`2 vAo Х8;VCtC. \{MjLhCYuZAlB}oa_gN7#M ʥN'=կ~ >zah% |^qTQA>ө$3pN~50۰M4 jQdwSh: ( dP6 FӈqՉfhQˤpB3XX01JV|2OXFfܩJ>bTl7)_VthyLw1ċ$D޻^k /Z(D5o$+-_XD6(fƩ3m$l K,-9L`*)(Rb ȥ5֦@ C=' PU=7KF^.HN2Y!rMY5%縻$?=J6験I-brm܈Jsk*h(]=KE ߲BvBG1P .:BC x^<:0/f#XYg`0oS"w{{ q%sL)jbwkf AxNn$HnTLD@TINȂ*;-xzK_ LSh)"+~;\GH\^BjcX5n2^麲E2 `RF/OPmM FH;孔10)X{sb.C@HJA_ $dL'sbvݘ.zM¹*ิ[6!5CH) TLiȞ{T5H^1$ELd&p&٬ckZ8;$g67bc jC.ol=XN}巗^a 9 @'bc8nuG.AݻOg(rO HoQL7#2<DF9=oۺg=[]tϑ%Q h[wRgor܇Po'`~s^zwA#]ͳ8s7:QlgWꁣуA(䨳cU[ ' R]:C >B~Y¹5>zjț"5ς =8з&N:܊wwKOF%B+a rwR _H2IXXuEӽ{JT9Wt]YvccWJN졶Hg a;M1 ;> ]=1 `߻&2k'RC?[內>Ys_!xfQO;V^Gu"A'#^u޺Zk*uWg+ڜZ-{w , z3tݍ3aDQoG(e^zu#k/tݺKz}@{Xb^z~i{zmufN3,ѮO]AO/3jyvO2#h$s]NK=?PtOJ\5_mgq)<m88uN`n ! =Lfri9GDzu!E|yG #һYSi* @ eQ,*̙ppTR'\|s/5vkl~r @w0w3N<깫О{ 'aNл Px1qW{ {t* iTKR{~~@G=/gK+85 xg 1p3_w JCL/xZ_iz{@{=iWsJ"GF(5TWk6,nВn։ӌvp!!hrФM#T$s4^dF[.nkF: RHSb5 ưM0F{p]X`gv$CB1Β*Cb8<׀[.vqBHV=\Ts}tV!/}!J{SrT>urBf{ Ƚ 'Vx9\=$n0ߢ)D6PpEa1RK| w`L:p8W\~m50n–Bz9ctJV'V48dP6B,Fy0v-bwDZNyW03 J:+[q0`9f3 ńu^LƁW:L6Ymx$jBRQҚd-o"*l?FZ-e!~.Υ׈u\;3ySٜ8 4|H)׼a!!-k R 72ֈ,g;1d4ىJ(w7,5vhVŪ s+=f 9w Bޠ©z/bNb6%8j7ë귇pb9쩻]^뒬9?$MApT]eB)S#RL?Rɲ3X :-e y4|0 VBG3qGԌiV891G7?Ucϑ;g}{ D>`NdX+h}-k9e P, 9ĭ6 n~c@|.Dvtjk@lm'msNa1]u"#ºH{G{1okغFcZy>w${Up5aSƑ! "KˀvT0m5ضH&xKX986{h ԙٰ2f`ryUwJaa%1&?*,ibÏf,AՆd**O==4k~GIg_G2+pnuR1:Cr~eEoiOVu}kvZlɲlI,;,ٖ/-;^;+&8 P֡P8@JBfBh3R p Z Ό}}-7Ug2NsͿK(mMjqP :#i{ b-2+-#}J}ܹW@e|W(rp S'ʚF]jVꚊJr{E6TTjmJVSaHjkJlʝVD4$wbӍe8ݥ*ԅk<7^m-V"SRg][+<|*sᜱ1_^/ܙI0x;xdj+Go^+ vC9T8]}RS}}#ld3.SYC6xh)Ifrʺyzwԭz$~ؓVSġqAbf&ǓC}۷:a}:*J.yJL)iJAے4j;7| yv9tSl|OGtWΩ4ʬ^-ڽTl"s/YT* _*_/h9Vq絢K_U~lϳ!x.6+-`4jJ,JA HAGl|l]q^-kXX1)JΤ@~#ž"ӎ|Nuc߫Xzm_) Y-t*d8tL@}qL6ZfҴ3`QOuʄ0-cJ@ G"8V٨Ȣ =yWQe}*`58)OS m00+!:ىɴ]k.c$,4eKtɦds_)c@cx<+l9E9}a508s1^_pz}ZnhY3Eѓ[W[-ie.ŃufoZm,4Ԑx``Y +G.WW:t>=whD?3L.~dhȤj;;'BZjZjRSGY9 SAE\ޢM?-twU)lI 4z1#]q?sΡ&s$[|&0|,GVN1r lKWw:Qc?>jPٶXeΏD@cyHtNwHY'jrp3/\ҩ<;KKA*V/=y=b*wj= ;މzƔLtoS1rA\%TC3xW>O=|/2<~jZo}AI>,Lc m ʶUUo) q*F|=#Vt˯o/ lH=2/~eKYr_14: ^@SnJf""ڐϛbv Wj<РW)vnPg%iQQNT-w̑r#6 Z |VFөQ22xc⪵0˽10N]Lt):1V2H`1ǂif:x{h>e3S/8|U <vHz-Q%3'}>x6=傃C/zvGz{9DAF?5n"vTɰ"6k&b`XIOہNkx,q}8z#KD>h;u">ϾH> -S_Ql@C$oۅx;T:wmMaof^ݽ__kN:`uIrʟL q#͛=gG-'P%2+8[@t5O!]wY,Y&$kVltDShlrZmq[߲%. D\yZ;=Kf ڴWM8a%Z۩RsYF8VJ|<00.?Ǐ ?OOmrZ [g`j @xa5"kWp=)#\(NgW|u2& ?g/I& h 'hTB )|cPK@M-`#aАgs ڀK< _bPFjby|6}^=MW>׍h|), (p󱬇HC`TX ,c7K[O{u;TYYwiaJҚ3쟉==` ȓxmź>nߙb:}X=2{V8Ȟ%_b,Í鿋*g}E!|i>3CCm+93Eڞi X0j)-gGڰp>=X/ӫ@gY:ξx@mϾ:C^ gug9̳~&9)ٷ9ey-! 8.0zr7-=|rr?ݝ^Ucha;w]7A00!,X( PŔ Vp/8ΧJO}?>%<|0!p Af3<P>PR5 @ oC@: D kik& hFd |ԉZvL׎wHayiN|{2tc{nX}C@>\uY N% .G/HòXeg#q _qe1 u{"DZWX `E?e)zl Ms`m: fp`#o`#Hp| Cm054?r84k "拰 tso`ǥفǯ](87cX*C@w(nl=({{Pa/Ҹ؋yE'dPG3 ҀOp ?ဝм9NuZ0y q<"ii%>^_rU=1t/{lbӞ˶NxFņGTq2n|2=pOD1imRN;߶ioۿs,?`?&;'ME+ћ{_Ei«BidY7|Uhƛ-Ս84hed0 Iʊ TZ1:]ʗ v Xߵ ́W e8Q&=PVBfO@g3u(@ * TX$4cC+N\gg(4/jj),*A9*X kP0 alj>G(gu\?p#~ o_ 'z5w{p|Cp3ǵ}8[o&xgm}p>OO ^_ca_AddPage(); $pdf->SetFont('Arial','B',16); $pdf->Cell(40,10,'Hola, Mundo!'); $pdf->Output(); ?> PKZ:tutorial/tuto3.phpnu[SetFont('Arial','B',15); // Calculamos ancho y posicin del ttulo. $w = $this->GetStringWidth($title)+6; $this->SetX((210-$w)/2); // Colores de los bordes, fondo y texto $this->SetDrawColor(0,80,180); $this->SetFillColor(230,230,0); $this->SetTextColor(220,50,50); // Ancho del borde (1 mm) $this->SetLineWidth(1); // Ttulo $this->Cell($w,9,$title,1,1,'C',true); // Salto de lnea $this->Ln(10); } function Footer() { // Posicin a 1,5 cm del final $this->SetY(-15); // Arial itlica 8 $this->SetFont('Arial','I',8); // Color del texto en gris $this->SetTextColor(128); // Nmero de pgina $this->Cell(0,10,'Pgina '.$this->PageNo(),0,0,'C'); } function ChapterTitle($num, $label) { // Arial 12 $this->SetFont('Arial','',12); // Color de fondo $this->SetFillColor(200,220,255); // Ttulo $this->Cell(0,6,"Captulo $num : $label",0,1,'L',true); // Salto de lnea $this->Ln(4); } function ChapterBody($file) { // Leemos el fichero $txt = file_get_contents($file); // Times 12 $this->SetFont('Times','',12); // Imprimimos el texto justificado $this->MultiCell(0,5,$txt); // Salto de lnea $this->Ln(); // Cita en itlica $this->SetFont('','I'); $this->Cell(0,5,'(fin del extracto)'); } function PrintChapter($num, $title, $file) { $this->AddPage(); $this->ChapterTitle($num,$title); $this->ChapterBody($file); } } $pdf = new PDF(); $title = '20000 Leguas de Viaje Submarino'; $pdf->SetTitle($title); $pdf->SetAuthor('Julio Verne'); $pdf->PrintChapter(1,'UN RIZO DE HUIDA','20k_c1.txt'); $pdf->PrintChapter(2,'LOS PROS Y LOS CONTRAS','20k_c2.txt'); $pdf->Output(); ?> PKZvhtutorial/paises.txtnu[Austria;Vienna;83859;8075 Belgium;Brussels;30518;10192 Denmark;Copenhagen;43094;5295 Finland;Helsinki;304529;5147 France;Paris;543965;58728 Germany;Berlin;357022;82057 Greece;Athens;131625;10511 Ireland;Dublin;70723;3694 Italy;Roma;301316;57563 Luxembourg;Luxembourg;2586;424 Netherlands;Amsterdam;41526;15654 Portugal;Lisbon;91906;9957 Spain;Madrid;504790;39348 Sweden;Stockholm;410934;8839 United Kingdom;London;243820;58862 PKZư.cctutorial/index.htmnu[ Tutoriales

Tutoriales

PKZȧtutorial/20k_c2.txtnu[During the period in which these developments were occurring, I had returned from a scientific undertaking organized to explore the Nebraska badlands in the United States. In my capacity as Assistant Professor at the Paris Museum of Natural History, I had been attached to this expedition by the French government. After spending six months in Nebraska, I arrived in New York laden with valuable collections near the end of March. My departure for France was set for early May. In the meantime, then, I was busy classifying my mineralogical, botanical, and zoological treasures when that incident took place with the Scotia. I was perfectly abreast of this question, which was the big news of the day, and how could I not have been? I had read and reread every American and European newspaper without being any farther along. This mystery puzzled me. Finding it impossible to form any views, I drifted from one extreme to the other. Something was out there, that much was certain, and any doubting Thomas was invited to place his finger on the Scotia's wound. When I arrived in New York, the question was at the boiling point. The hypothesis of a drifting islet or an elusive reef, put forward by people not quite in their right minds, was completely eliminated. And indeed, unless this reef had an engine in its belly, how could it move about with such prodigious speed? Also discredited was the idea of a floating hull or some other enormous wreckage, and again because of this speed of movement. So only two possible solutions to the question were left, creating two very distinct groups of supporters: on one side, those favoring a monster of colossal strength; on the other, those favoring an "underwater boat" of tremendous motor power. Now then, although the latter hypothesis was completely admissible, it couldn't stand up to inquiries conducted in both the New World and the Old. That a private individual had such a mechanism at his disposal was less than probable. Where and when had he built it, and how could he have built it in secret? Only some government could own such an engine of destruction, and in these disaster-filled times, when men tax their ingenuity to build increasingly powerful aggressive weapons, it was possible that, unknown to the rest of the world, some nation could have been testing such a fearsome machine. The Chassepot rifle led to the torpedo, and the torpedo has led to this underwater battering ram, which in turn will lead to the world putting its foot down. At least I hope it will. But this hypothesis of a war machine collapsed in the face of formal denials from the various governments. Since the public interest was at stake and transoceanic travel was suffering, the sincerity of these governments could not be doubted. Besides, how could the assembly of this underwater boat have escaped public notice? Keeping a secret under such circumstances would be difficult enough for an individual, and certainly impossible for a nation whose every move is under constant surveillance by rival powers. So, after inquiries conducted in England, France, Russia, Prussia, Spain, Italy, America, and even Turkey, the hypothesis of an underwater Monitor was ultimately rejected. After I arrived in New York, several people did me the honor of consulting me on the phenomenon in question. In France I had published a two-volume work, in quarto, entitled The Mysteries of the Great Ocean Depths. Well received in scholarly circles, this book had established me as a specialist in this pretty obscure field of natural history. My views were in demand. As long as I could deny the reality of the business, I confined myself to a flat "no comment." But soon, pinned to the wall, I had to explain myself straight out. And in this vein, "the honorable Pierre Aronnax, Professor at the Paris Museum," was summoned by The New York Herald to formulate his views no matter what. I complied. Since I could no longer hold my tongue, I let it wag. I discussed the question in its every aspect, both political and scientific, and this is an excerpt from the well-padded article I published in the issue of April 30. "Therefore," I wrote, "after examining these different hypotheses one by one, we are forced, every other supposition having been refuted, to accept the existence of an extremely powerful marine animal. "The deepest parts of the ocean are totally unknown to us. No soundings have been able to reach them. What goes on in those distant depths? What creatures inhabit, or could inhabit, those regions twelve or fifteen miles beneath the surface of the water? What is the constitution of these animals? It's almost beyond conjecture. "However, the solution to this problem submitted to me can take the form of a choice between two alternatives. "Either we know every variety of creature populating our planet, or we do not. "If we do not know every one of them, if nature still keeps ichthyological secrets from us, nothing is more admissible than to accept the existence of fish or cetaceans of new species or even new genera, animals with a basically 'cast-iron' constitution that inhabit strata beyond the reach of our soundings, and which some development or other, an urge or a whim if you prefer, can bring to the upper level of the ocean for long intervals. "If, on the other hand, we do know every living species, we must look for the animal in question among those marine creatures already cataloged, and in this event I would be inclined to accept the existence of a giant narwhale. "The common narwhale, or sea unicorn, often reaches a length of sixty feet. Increase its dimensions fivefold or even tenfold, then give this cetacean a strength in proportion to its size while enlarging its offensive weapons, and you have the animal we're looking for. It would have the proportions determined by the officers of the Shannon, the instrument needed to perforate the Scotia, and the power to pierce a steamer's hull. "In essence, the narwhale is armed with a sort of ivory sword, or lance, as certain naturalists have expressed it. It's a king-sized tooth as hard as steel. Some of these teeth have been found buried in the bodies of baleen whales, which the narwhale attacks with invariable success. Others have been wrenched, not without difficulty, from the undersides of vessels that narwhales have pierced clean through, as a gimlet pierces a wine barrel. The museum at the Faculty of Medicine in Paris owns one of these tusks with a length of 2.25 meters and a width at its base of forty-eight centimeters! "All right then! Imagine this weapon to be ten times stronger and the animal ten times more powerful, launch it at a speed of twenty miles per hour, multiply its mass times its velocity, and you get just the collision we need to cause the specified catastrophe. "So, until information becomes more abundant, I plump for a sea unicorn of colossal dimensions, no longer armed with a mere lance but with an actual spur, like ironclad frigates or those warships called 'rams,' whose mass and motor power it would possess simultaneously. "This inexplicable phenomenon is thus explained away--unless it's something else entirely, which, despite everything that has been sighted, studied, explored and experienced, is still possible!" PKZ//tutorial/tuto6.htmnu[ Enlaces y texto flotante

Enlaces y texto flotante

Este tutorial explica cmo incluir enlaces (internos y externos) y muestra una nueva manera de imprimir texto. Tambin incluye un intrprete rudimentario de HTML.
<?php
require('fpdf.php');

class PDF extends FPDF
{
protected $B = 0;
protected $I = 0;
protected $U = 0;
protected $HREF = '';

function WriteHTML($html)
{
    // Intrprete de HTML
    $html = str_replace("\n",' ',$html);
    $a = preg_split('/<(.*)>/U',$html,-1,PREG_SPLIT_DELIM_CAPTURE);
    foreach($a as $i=>$e)
    {
        if($i%2==0)
        {
            // Text
            if($this->HREF)
                $this->PutLink($this->HREF,$e);
            else
                $this->Write(5,$e);
        }
        else
        {
            // Etiqueta
            if($e[0]=='/')
                $this->CloseTag(strtoupper(substr($e,1)));
            else
            {
                // Extraer atributos
                $a2 = explode(' ',$e);
                $tag = strtoupper(array_shift($a2));
                $attr = array();
                foreach($a2 as $v)
                {
                    if(preg_match('/([^=]*)=["\']?([^"\']*)/',$v,$a3))
                        $attr[strtoupper($a3[1])] = $a3[2];
                }
                $this->OpenTag($tag,$attr);
            }
        }
    }
}

function OpenTag($tag, $attr)
{
    // Etiqueta de apertura
    if($tag=='B' || $tag=='I' || $tag=='U')
        $this->SetStyle($tag,true);
    if($tag=='A')
        $this->HREF = $attr['HREF'];
    if($tag=='BR')
        $this->Ln(5);
}

function CloseTag($tag)
{
    // Etiqueta de cierre
    if($tag=='B' || $tag=='I' || $tag=='U')
        $this->SetStyle($tag,false);
    if($tag=='A')
        $this->HREF = '';
}

function SetStyle($tag, $enable)
{
    // Modificar estilo y escoger la fuente correspondiente
    $this->$tag += ($enable ? 1 : -1);
    $style = '';
    foreach(array('B', 'I', 'U') as $s)
    {
        if($this->$s>0)
            $style .= $s;
    }
    $this->SetFont('',$style);
}

function PutLink($URL, $txt)
{
    // Escribir un hiper-enlace
    $this->SetTextColor(0,0,255);
    $this->SetStyle('U',true);
    $this->Write(5,$txt,$URL);
    $this->SetStyle('U',false);
    $this->SetTextColor(0);
}
}

$html = 'Ahora puede imprimir fcilmente texto mezclando diferentes estilos: <b>negrita</b>, <i>itlica</i>,
<u>subrayado</u>, o  <b><i><u>todos a la vez</u></i></b>!<br><br>Tambin puede incluir enlaces en el
texto, como <a href="http://www.fpdf.org">www.fpdf.org</a>, o en una imagen: pulse en el logotipo.';

$pdf = new PDF();
// Primera pgina
$pdf->AddPage();
$pdf->SetFont('Arial','',20);
$pdf->Write(5,'Para saber qu hay de nuevo en este tutorial, pulse ');
$pdf->SetFont('','U');
$link = $pdf->AddLink();
$pdf->Write(5,'aqu',$link);
$pdf->SetFont('');
// Segunda pgina
$pdf->AddPage();
$pdf->SetLink($link);
$pdf->Image('logo.png',10,12,30,0,'','http://www.fpdf.org');
$pdf->SetLeftMargin(45);
$pdf->SetFontSize(14);
$pdf->WriteHTML($html);
$pdf->Output();
?>

[Demo]

El nuevo mtodo para imprimir texto es Write(). Se parece mucho a MultiCell(); las diferencias son:
  • El lmite de la lnea est en el margen derecho y la siguiente lnea empieza en el izquierdo
  • La posicin actual se establece al final del texto
As que le permite escribir un texto, alterar el estilo de la fuente, y continuar en el punto exacto donde lo dej. Sin embargo, no puede justificar el texto simultneamente a derecha y a izquierda.

Este mtodo se usa en la primera pgina para aadir un enlace que apunta a la segunda pgina. El principio de la frase se escribe en un estilo normal, despus cambiamos a subrayado y la terminamos. El enlace se crea con AddLink(), que devuelve el identificador del enlace. El identificador se pasa como tercer parmetro a Write(). Una vez que la segunda pgina se ha creado, usamos SetLink() para hacer que el enlace apunte al principio de la pgina actual.

Deespus ponemos una imagen con un enlace en ella. Un enlace externo apunta a una URL. La URL se pasa como el ltimo parmetro de Image().

Finalmente, el margen izquierdo se modifica despus de la imagen con SetLeftMargin() y se escribe texto en formato HTML. Se utiliza un intrprete HTML para esto, basado en les expresiones regulares. Las etiquetas reconocidas son <b>, <i>, <u>, <a> y <br>; las dems se ignoran. El intrprete tambin usa el mtodo Write(). Se pone un enlace externo de la misma manera que uno interno (como tercer parmetro de Write()). Observe que Cell() tambin permite incluir enlaces. PKZ?2#2#tutorial/tuto3.htmnu[ Saltos de lnea y colores

Saltos de lnea y colores

Continuemos con un ejemplo que imprime prrafos justificados. Tambin ilustra el uso de colores.
<?php
require('fpdf.php');

class PDF extends FPDF
{
function Header()
{
    global $title;

    // Arial bold 15
    $this->SetFont('Arial','B',15);
    // Calculamos ancho y posicin del ttulo.
    $w = $this->GetStringWidth($title)+6;
    $this->SetX((210-$w)/2);
    // Colores de los bordes, fondo y texto
    $this->SetDrawColor(0,80,180);
    $this->SetFillColor(230,230,0);
    $this->SetTextColor(220,50,50);
    // Ancho del borde (1 mm)
    $this->SetLineWidth(1);
    // Ttulo
    $this->Cell($w,9,$title,1,1,'C',true);
    // Salto de lnea
    $this->Ln(10);
}

function Footer()
{
    // Posicin a 1,5 cm del final
    $this->SetY(-15);
    // Arial itlica 8
    $this->SetFont('Arial','I',8);
    // Color del texto en gris
    $this->SetTextColor(128);
    // Nmero de pgina
    $this->Cell(0,10,'Pgina '.$this->PageNo(),0,0,'C');
}

function ChapterTitle($num, $label)
{
    // Arial 12
    $this->SetFont('Arial','',12);
    // Color de fondo
    $this->SetFillColor(200,220,255);
    // Ttulo
    $this->Cell(0,6,"Captulo $num : $label",0,1,'L',true);
    // Salto de lnea
    $this->Ln(4);
}

function ChapterBody($file)
{
    // Leemos el fichero
    $txt = file_get_contents($file);
    // Times 12
    $this->SetFont('Times','',12);
    // Imprimimos el texto justificado
    $this->MultiCell(0,5,$txt);
    // Salto de lnea
    $this->Ln();
    // Cita en itlica
    $this->SetFont('','I');
    $this->Cell(0,5,'(fin del extracto)');
}

function PrintChapter($num, $title, $file)
{
    $this->AddPage();
    $this->ChapterTitle($num,$title);
    $this->ChapterBody($file);
}
}

$pdf = new PDF();
$title = '20000 Leguas de Viaje Submarino';
$pdf->SetTitle($title);
$pdf->SetAuthor('Julio Verne');
$pdf->PrintChapter(1,'UN RIZO DE HUIDA','20k_c1.txt');
$pdf->PrintChapter(2,'LOS PROS Y LOS CONTRAS','20k_c2.txt');
$pdf->Output();
?>

[Demo]

El mtodo GetStringWidth() le permite determinar la longitud de una cadena en el tipo de letra actual, y se usa aqu para calcular la posicin y ancho del borde que rodea al ttulo. Despus se establecen los colores (mediante SetDrawColor(), SetFillColor() y SetTextColor()) y el borde de la lnea se establece en 1 mm (en contra de los 0,2 por defecto) con SetLineWidth(). Finalmente, imprimimos la celda (el ltimo parmetro a 1 indica que debe colorearse el fondo).

El mtodo usado para imprimir los prrafos es MultiCell(). Cada vez que la lnea llega al extremo derecho de la celda o aparece un carcter de fin de lnea, se ejecuta un salto de lnea y se crea automticamente otra celda debajo de la actual. El texto se encuentra justificado por defecto.

Se definen dos propiedades del documento: ttulo (SetTitle()) y autor (SetAuthor()). Las propiedades pueden verse de dos maneras. La primera es abrir el documento directamente con Adobe Reader, vaya al men Archivo y seleccione la opcin Propiedades del documento. La segunda, tambin disponible desde el plug-in, es hacer clic con el botn derecho y seleccione Propiedades del documento. PKZqXE E tutorial/logo.pngnu[PNG  IHDRhG8pPLTEKYXgrevtHQm{ijT;Ec_K5fq/6M!%2|LÓZpGۯZdOJM٣chO]jjsl}rX;zeRlc>pL=/_n~T]yxp|ϛ^wkN\\W[Ra=JxESmtRNS@fbKGDH&IDATxksH#L!,mJ"U\SƢF`lgl(A@2ق[HoEL ]ܤUmK +bF()4iR hSbKUDLZӴ3g1pGbۻ%Q1vHJ }⡐HG_}B &MG&#Uʚ>HEP(EiǯGj8Q$W_'P @L,dtz~ٍTX$ d)VmXSfDgr/$Ql]TMm:ف,7#BAJ ZHVa#0ً{Iڧ#- ɞtpǩGm)74i / #]G.;,ڡ*FV8rC D^:T<95мTcߝd*"r;+'R9!W Zz׽r@T*@.ϗ!]{!Yl AT>%0$cB+ ba~Xz,Ґ!jw=%9YBYh dG# $oC1DؐƳ ?_f,]_7%R}JeR5:Hh9i7zk"&6.@d6h""*qyZAheIƔoқv!uP@5#@!b69ܭNQV2J]* ڀZ 4ҙ%nw["VGR };OuPWDÓ CS\ A04j sm[d ez qb0NHp2׋RfVgA@mW;d zO9%|* l۶0nqH^;PQ Xy笎C' [$iK}[ɵ;N,6_)ukTɠ)GW~ԴuY p(qoE/R8\.CKaŭݒNAɽDx $~64R1A00p`Y&mۈ r'HR]'`$ Iy3G#y"b0vG1$XΘ5R$\ip*3'$8+%0=rwej8V`ڞnB*!=%I('Z3XեKEpNjr¤[Qxv脁'[S@0P&MB#ՒfȆV3Zǜ&o'$#@jJuP`Vu 899,'Descent'=>-234,'CapHeight'=>899,'Flags'=>32,'FontBBox'=>'[-173 -234 1328 899]','ItalicAngle'=>0,'StemV'=>70,'MissingWidth'=>800); $up = -200; $ut = 20; $cw = array( chr(0)=>800,chr(1)=>800,chr(2)=>800,chr(3)=>800,chr(4)=>800,chr(5)=>800,chr(6)=>800,chr(7)=>800,chr(8)=>800,chr(9)=>800,chr(10)=>800,chr(11)=>800,chr(12)=>800,chr(13)=>800,chr(14)=>800,chr(15)=>800,chr(16)=>800,chr(17)=>800,chr(18)=>800,chr(19)=>800,chr(20)=>800,chr(21)=>800, chr(22)=>800,chr(23)=>800,chr(24)=>800,chr(25)=>800,chr(26)=>800,chr(27)=>800,chr(28)=>800,chr(29)=>800,chr(30)=>800,chr(31)=>800,' '=>282,'!'=>324,'"'=>405,'#'=>584,'$'=>632,'%'=>980,'&'=>776,'\''=>259,'('=>299,')'=>299,'*'=>377,'+'=>600, ','=>259,'-'=>432,'.'=>254,'/'=>597,'0'=>529,'1'=>298,'2'=>451,'3'=>359,'4'=>525,'5'=>423,'6'=>464,'7'=>417,'8'=>457,'9'=>479,':'=>275,';'=>282,'<'=>600,'='=>600,'>'=>600,'?'=>501,'@'=>800,'A'=>743, 'B'=>636,'C'=>598,'D'=>712,'E'=>608,'F'=>562,'G'=>680,'H'=>756,'I'=>308,'J'=>314,'K'=>676,'L'=>552,'M'=>1041,'N'=>817,'O'=>729,'P'=>569,'Q'=>698,'R'=>674,'S'=>618,'T'=>673,'U'=>805,'V'=>753,'W'=>1238, 'X'=>716,'Y'=>754,'Z'=>599,'['=>315,'\\'=>463,']'=>315,'^'=>600,'_'=>547,'`'=>278,'a'=>581,'b'=>564,'c'=>440,'d'=>571,'e'=>450,'f'=>347,'g'=>628,'h'=>611,'i'=>283,'j'=>283,'k'=>560,'l'=>252,'m'=>976, 'n'=>595,'o'=>508,'p'=>549,'q'=>540,'r'=>395,'s'=>441,'t'=>307,'u'=>614,'v'=>556,'w'=>915,'x'=>559,'y'=>597,'z'=>452,'{'=>315,'|'=>222,'}'=>315,'~'=>600,chr(127)=>800,chr(128)=>800,chr(129)=>800,chr(130)=>0,chr(131)=>0, chr(132)=>0,chr(133)=>780,chr(134)=>0,chr(135)=>0,chr(136)=>278,chr(137)=>0,chr(138)=>0,chr(139)=>0,chr(140)=>1064,chr(141)=>800,chr(142)=>0,chr(143)=>800,chr(144)=>800,chr(145)=>259,chr(146)=>259,chr(147)=>470,chr(148)=>470,chr(149)=>500,chr(150)=>300,chr(151)=>600,chr(152)=>278,chr(153)=>990, chr(154)=>0,chr(155)=>0,chr(156)=>790,chr(157)=>800,chr(158)=>800,chr(159)=>754,chr(160)=>282,chr(161)=>324,chr(162)=>450,chr(163)=>640,chr(164)=>518,chr(165)=>603,chr(166)=>0,chr(167)=>519,chr(168)=>254,chr(169)=>800,chr(170)=>349,chr(171)=>0,chr(172)=>0,chr(173)=>432,chr(174)=>800,chr(175)=>278, chr(176)=>0,chr(177)=>0,chr(178)=>0,chr(179)=>0,chr(180)=>278,chr(181)=>614,chr(182)=>0,chr(183)=>254,chr(184)=>278,chr(185)=>0,chr(186)=>305,chr(187)=>0,chr(188)=>0,chr(189)=>0,chr(190)=>0,chr(191)=>501,chr(192)=>743,chr(193)=>743,chr(194)=>743,chr(195)=>743,chr(196)=>743,chr(197)=>743, chr(198)=>1060,chr(199)=>598,chr(200)=>608,chr(201)=>608,chr(202)=>608,chr(203)=>608,chr(204)=>308,chr(205)=>308,chr(206)=>308,chr(207)=>308,chr(208)=>0,chr(209)=>817,chr(210)=>729,chr(211)=>729,chr(212)=>729,chr(213)=>729,chr(214)=>729,chr(215)=>0,chr(216)=>729,chr(217)=>805,chr(218)=>805,chr(219)=>805, chr(220)=>805,chr(221)=>0,chr(222)=>0,chr(223)=>688,chr(224)=>581,chr(225)=>581,chr(226)=>581,chr(227)=>581,chr(228)=>581,chr(229)=>581,chr(230)=>792,chr(231)=>440,chr(232)=>450,chr(233)=>450,chr(234)=>450,chr(235)=>450,chr(236)=>283,chr(237)=>283,chr(238)=>283,chr(239)=>283,chr(240)=>0,chr(241)=>595, chr(242)=>508,chr(243)=>508,chr(244)=>508,chr(245)=>508,chr(246)=>508,chr(247)=>0,chr(248)=>508,chr(249)=>614,chr(250)=>614,chr(251)=>614,chr(252)=>614,chr(253)=>0,chr(254)=>0,chr(255)=>597); $enc = 'cp1252'; $uv = array(0=>array(0,128),128=>8364,130=>8218,131=>402,132=>8222,133=>8230,134=>array(8224,2),136=>710,137=>8240,138=>352,139=>8249,140=>338,142=>381,145=>array(8216,2),147=>array(8220,2),149=>8226,150=>array(8211,2),152=>732,153=>8482,154=>353,155=>8250,156=>339,158=>382,159=>376,160=>array(160,96)); $file = 'calligra.z'; $originalsize = 33948; $subsetted = true; ?> PKZ[btutorial/tuto1.htmnu[ Ejemplo bsico

Ejemplo bsico

Comencemos con el clsico ejemplo:
<?php
require('fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,'Hola, Mundo!');
$pdf->Output();
?>

[Demo]

Despus de incluir el fichero de la clase, creamos el objeto FDPF. El constructor se usa aqu con sus valores por defecto: las pginas son de tamao a4 alargado y la unidad de medida es el milmetro. Se podra haber declarado explcitamente con:
$pdf = new FPDF('P','mm','A4');
Es posible usar el formato apaisado (L), otros formatos de pgina (como A3 y A5) y otras unidades de medida (pt, cm, in).

Por el momento no hemos creado ninguna pgina, as que aadiremos una con AddPage(). El origen de coordenadas est en la esquina superior izquierda y la posicin actual est por defecto situada a 1 cm de los bordes; los mrgenes pueden cambiarse con SetMargins().

Antes de que podamos imprimir texto, es obligatorio escoger una fuente con SetFont(). Escogemos Arial en negrita de tamao 16:
$pdf->SetFont('Arial','B',16);
Podramos haber especificado itlica con I, subrayado con U o normal con una cadena vaca (o cualquier combinacin de las anteriores). Observe que el tamao de la fuente se detemina en puntos, no en milmetros (ni en cualquier otra unidad establecida por el usuario); es la nica excepcin. Las otras fuentes incorporadas son Times, Courier, Symbol y ZapfDingbats.

Ahora podemos imprimir una celda con Cell(). Una celda es una superficie rectangular, con borde si se quiere, que contiene texto. Se imprime en la posicin actual. Especificamos sus dimensiones, el texto (centrado o alineado), si queremos dibujar o no los bordes, y dnde se ubicar la posicin actual despus de imprimir la celda (a la derecha, debajo o al principio de la siguiente lnea). Para aadir el borde, deberemos hacer esto:
$pdf->Cell(40,10,'Hola, Mundo!',1);
Para aadir una nueva celda a continuacin, con el texto centrado e ir a la siguiente lnea, escribiremos:
$pdf->Cell(60,10,'Hecho con FPDF.',0,1,'C');
Nota: el salto de lnea puede provocarse tambin mediante Ln(). Este mtodo le permite especificar adems la altura del salto.

Finalmente, el documento se cierra y se enva al navegador con Output(). Tambin podramos haberlo guardado en un fichero.

Cuidado: en caso de que el PDF se enve al navegador, nada ms debe enviarse, ni antes ni despus (el ms mnimo espacio en blanco o retorno de carro tambin cuenta). Si se enva algn dato antes, obtendr el mensaje de error: "Some data has already been output, can't send PDF file". Si se enva despus, su navegador puede que muestre nicamente una pgina en blanco. PKZ6_#_#tutorial/tuto7.htmnu[ Aadiendo nuevas fuentes y codificaciones

Aadiendo nuevas fuentes y codificaciones

Este tutorial explica cmo usar fuentes TrueType, OpenType y Type1 de forma que usted no se vea limitado a las fuentes incorporadas en FPDF. El otro punto de inters es que pueda elegir la codificacin de la fuente, lo que le permitir usar otros idiomas aparte de los europeos occidentales (ya que las fuentes estndar tienen muy pocos caracteres disponibles).

Para OpenType, slo es compatible el formato basado en TrueType (no as el basado en el Type1).
Para Type1, es necesario el archivo AFM correspondiente. Por lo general, ste es provedo con la fuente.

Aadir una nueva fuente requiere dos pasos:
  • Generacin del fichero de definicin de la fuente
  • Declaracin de la fuente en el script

Generacin del fichero de definicin de la fuente

El primer paso consiste en generar un fichero PHP que contenga toda la informacin que necesita FPDF; adems, el fichero de la fuente deber comprimirse. Para hacer esto, se distribuye un script auxiliar en el directorio makefont del paquete: makefont.php. Contiene la siguiente funcin:

MakeFont(string fontfile [, string enc [, boolean embed [, boolean subset]]])
fontfile

Ubicacin del fichero .ttf, .otf o .pfb.

enc

Nombre de la codificacin. Valor por defecto: cp1252.

embed

Si se incorpora o no la fuente. Valor por defecto: true.

subset

Si un subconjunto de la fuente o no. Valor por defecto: true.

El primer parmetro es el nombre del fichero de la fuente. La extensin debe ser .ttf, .otf o .pfb y determina el tipo de fuente. Si tiene una fuente Type1 en formato ASCII (.pfa), puede convertirla a formato binario (.pfb) con t1utils.

Para las fuentes Type1, el archivo .afm correspondiente debe estar presente en el mismo directorio.

La codificacin define la asociacin entre un cdigo (de 0 a 255) y un carcter. Los primeros 123 son fijos y se corresponden con los caracteres ASCII; los siguientes son variables. Las codificaciones se almacenan en ficheros .map. Estn disponibles:
  • cp1250 (Europa Central)
  • cp1251 (cirlico)
  • cp1252 (Europa Occidental)
  • cp1253 (griego)
  • cp1254 (turco)
  • cp1255 (hebreo)
  • cp1257 (bltico)
  • cp1258 (vietnamita)
  • cp874 (tailands)
  • ISO-8859-1 (Europa Occidental)
  • ISO-8859-2 (Europa Central)
  • ISO-8859-4 (bltico)
  • ISO-8859-5 (cirlico)
  • ISO-8859-7 (griego)
  • ISO-8859-9 (turco)
  • ISO-8859-11 (tailands)
  • ISO-8859-15 (Europa Occidental)
  • ISO-8859-16 (Europa Central)
  • KOI8-R (ruso)
  • KOI8-U (ucraniano)
Por supuesto, la fuente debe contener los caracteres adecuados a la codificacin escogida.

Existen dos formas de usar una nueva fuente: incluirla en el PDF o no. Cuando una fuente no se incluye, se busca en el sistema. La ventaja es que el fichero PDF es ms pequeo; sin embargo, si la fuente no est disponible en el sistema, se usa otra como sustituta. As que es aconsejable asegurarse de que la fuente en cuestin est instalada en los sistemas de los clientes. Si el fichero est destinado a una audiencia numerosas, es mejor incluir la fuente.

El ltimo parmetro indica si el subconjunto deber ser usado o no, es decir, si o no, los caracteres del mtodo de codificado deben mantenerse en la fuente embebida. Como consecuencia, si la fuente original fue grande, el tamao del archivo PDF puede ser altamente reducido.

Despus de llamar a la funcin (puede crear un nuevo fichero e incluir makefont.php), se crear un fichero .php con el mismo nombre que la fuente. Puede renombrarlo si lo desea. En caso de incluir la fuente, el fichero se comprime y da lugar a un segundo fichero con extensin .z (excepto si la funcin de compresin no est disponible, puesto que requiere la biblioteca Zlib para PHP). Tambin puede renombrarlo, pero, en este caso, tendr que modificar la variable $file en el fichero .php consecuentemente.

Ejemplo:
<?php
require('makefont/makefont.php');

MakeFont('c:\\Windows\\Fonts\\comic.ttf','cp1252');
?>
que devuelve los ficheros comic.php y comic.z.

Entonces tendr que copiar los ficheros generados en el directorio de fuentes. Si el fichero de la fuente no pudo ser comprimido, copie la fuente en lugar del .z.

Otra forma de invocar a MakeFont() es a travs de la lnea de comandos:

php makefont\makefont.php c:\Windows\Fonts\comic.ttf cp1252

Por ltimo, para las fuentes TrueType y OpenType, tambin puede generar los archivos en lnea en lugar de hacerlo manualmente.

Declaracin de la fuente en el script

El segundo paso es el ms simple. Slo necesita llamar al mtodo AddFont():
$pdf->AddFont('Comic','','comic.php');
Y la fuente queda disponible (en los estilos normal y subrayado), lista para usar como las otras. Si hubiramos trabajado con la Comic Sans MS Bold (comicbd.ttf), hubisemos escrito:
$pdf->AddFont('Comic','B','comicbd.php');

Ejemplo

Veamos ahora un ejemplo completo. Vamos a utilizar la fuente Calligrapher. El primer paso es la generacin de los archivos de la fuente:
<?php
require('makefont/makefont.php');

MakeFont('calligra.ttf','cp1252');
?>
El script nos devolver el siguiente informe:

Warning: character Euro is missing
Warning: character zcaron is missing
Font file compressed: calligra.z
Font definition file generated: calligra.php

El carcter del euro no est en la fuente (es muy antigua). Otro carcter tampoco se encuentra en la fuente.

Alternativamente, podramos haber utilizado la lnea de comandos:

php makefont\makefont.php calligra.ttf cp1252

o haber usado el generado en lnea.

Podemos copiar estos dos ficheros en el directorio de fuentes (font) y escribir el script:
<?php
require('fpdf.php');

$pdf = new FPDF();
$pdf->AddFont('Calligrapher','','calligra.php');
$pdf->AddPage();
$pdf->SetFont('Calligrapher','',35);
$pdf->Write(10,'Enjoy new fonts with FPDF!');
$pdf->Output();
?>

[Demo]

PKZ2KyyBoletaNotas2024.phpnu[ Image('assets/img/fondo_boleta_2024.jpg', '0', '0', '217', '281', 'JPG'); //datos del alumno $consultas = new Boleta2024(); $datosAlumno = $consultas->buscarAlumno($carnet); $this->SetFont('Arial', '', 12); $this->SetTextColor(20); $this->setXY(40, 47.5); $this->Cell(45, 10, $carnet); $this->Cell(50, 10, " " . utf8_decode($datosAlumno[0]['apellidos']) . ', ' . utf8_decode($datosAlumno[0]['nombres'])); $this->Ln(); $this->setXY(40, 55); $this->setFontSize(10); $this->Cell(40, 10, $datosAlumno[0]['nombre_corto']); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial', '', 11); $this->SetFillColor(0, 87, 69); $this->SetTextColor(255); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('', 'B'); $this->setXY(22, 80); // Cabecera $w = array(80, 18, 18, 18, 18, 18); $header = array('Curso', '1a', '2a', '3a', '4a', 'Total'); for ($i = 0; $i < count($header); $i++) $this->Cell($w[$i], 8, $header[$i], 1, 0, 'C', true); $this->Ln(); // Restauración de colores y fuentes $this->SetDrawColor(191, 191, 201); $this->SetFillColor(225, 228, 242); $this->SetTextColor(0); $this->SetFont('Arial', '', 10); $this->SetX(22); $notasAlumno = $consultas->buscarNotasAlumno($carnet); $notasAlumnoIngles = $consultas->buscarNotasAlumnoIngles($carnet); $notasEA = $consultas->buscarNotasEscualArte($carnet); /* INICIO DE AJUSTE POR ÁLGEBRA QUE SE UNE CON MATEMÁTICAS */ $contador = 0; $data[] = null; $notaAlgebra = 0; $notaAlgebra2 = 0; $notaAlgebra3 = 0; $notaAlgebra4 = 0; foreach ($notasAlumno as $FNotas) { if ($FNotas['nombreCurso'] == 'ÁLGEBRA') { if ($contador == 0) { $notaAlgebra+=$FNotas['punteo']; } if ($contador == 1) { $notaAlgebra2+=$FNotas['punteo']; } if ($contador == 2) { $notaAlgebra3+=$FNotas['punteo']; } if ($contador == 3) { $notaAlgebra4+=$FNotas['punteo']; $contador = -1; } $contador++; } } $notaAlgebra = round($notaAlgebra*0.1, 0); $notaAlgebra2 = round($notaAlgebra2*0.1, 0); $notaAlgebra3 = round($notaAlgebra3*0.1, 0); $notaAlgebra4 = round($notaAlgebra4*0.1, 0); /* FIN DE AJUSTE POR ÁLGEBRA QUE SE UNE CON MATEMÁTICAS*/ //inicio de colocación de notas $contadorSalto = 0; $contadorCurso = 0; $total = 0; $bim1 = 0; $bim2 = 0; $bim3 = 0; $bim4 = 0; $bandera = false; $bandera_graduando = false; foreach ($notasAlumno as $Fnota) { if (strpos($Fnota['nombreCurso'], "Laboratorio") !== false) { } else { if ($Fnota['nombreCurso'] != "APRESTAMIENTO/GRAFOMOTRICIDAD" && utf8_decode($Fnota['nombreCurso']) != "CALIGRAFÍA Y APRESTAMIENTO" && $Fnota['nombreCurso']!="CALIGRAFÍA") { if ($contadorSalto == 0) { if (($Fnota['nombreCurso'] == "Artes Plásticas" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "Danza y Expresión Corporal" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "Formación Musical" && $Fnota['punteo'] == 0) || ($Fnota['nombreCurso'] == "ÁLGEBRA") || ($Fnota['nombreCurso'] == "Práctica Supervisada") || ($Fnota['nombreCurso']=="LÓGICA MATEMÁTICA")){ $bandera = true; } else { $bandera = false; } } if ($contadorSalto == 0 && $bandera == false) { $this->SetX(22); $this->SetTextColor(0); //$nombreAux = self::arreglar($Fnota['nombreCurso']); $this->Cell($w[$contadorSalto], 6, ' ' . utf8_decode($Fnota['nombreCurso']), 1, 0, 'L', false); if ($Fnota['nombreCurso'] == "Seminario") { $bandera_graduando = true; } $contadorSalto++; } if ($contadorSalto == 1 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if($Fnota['nombreCurso']=='Matemáticas' || $Fnota['nombreCurso']=='Matemática 4' || $Fnota['nombreCurso']=='Matemática 5' || $Fnota['nombreCurso']=='Matemática IV' || $Fnota['nombreCurso']=='Matemática V' || $Fnota['nombreCurso']=='Matemática Comercial' || $Fnota['nombreCurso']=='Cálculo Mercantil y Financiero' || $Fnota['nombreCurso']=='Estadística' || $Fnota['nombreCurso']=='Matemática' || $Fnota['nombreCurso']=='MATEMÁTICA APLICADA'){ $nota = $nota + $notaAlgebra; if($nota > 100){ $nota = 100; } } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); $bandera_graduando = true; } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } if (utf8_decode($Fnota['nombreCurso']) != "Práctica Supervisada") { $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); } $total += intval($nota); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim1 += $nota; } /* if ($Fnota['nombreCurso'] == "Práctica Supervisada") { $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $this->Ln(); } */ } if ($contadorSalto == 2 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if($Fnota['nombreCurso']=='Matemáticas' || $Fnota['nombreCurso']=='Matemática 4' || $Fnota['nombreCurso']=='Matemática 5' || $Fnota['nombreCurso']=='Matemática IV' || $Fnota['nombreCurso']=='Matemática V' || $Fnota['nombreCurso']=='Matemática Comercial' || $Fnota['nombreCurso']=='Cálculo Mercantil y Financiero' || $Fnota['nombreCurso']=='Estadística' || $Fnota['nombreCurso']=='Matemática' || $Fnota['nombreCurso']=='MATEMÁTICA APLICADA'){ $nota = $nota + $notaAlgebra2; if($nota > 100){ $nota = 100; } } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } //$this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); $total += intval($nota); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim2 += $nota; } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); } if ($contadorSalto == 3 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if($Fnota['nombreCurso']=='Matemáticas' || $Fnota['nombreCurso']=='Matemática 4' || $Fnota['nombreCurso']=='Matemática 5' || $Fnota['nombreCurso']=='Matemática IV' || $Fnota['nombreCurso']=='Matemática V' || $Fnota['nombreCurso']=='Matemática Comercial' || $Fnota['nombreCurso']=='Cálculo Mercantil y Financiero' || $Fnota['nombreCurso']=='Estadística' || $Fnota['nombreCurso']=='Matemática' || $Fnota['nombreCurso']=='MATEMÁTICA APLICADA'){ $nota = $nota + $notaAlgebra3; if($nota > 100){ $nota = 100; } } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } /*if($Fnota['nombreCurso']=="Seminario"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); }else{ $this->Cell($w[$contadorSalto],6,$nota,1,0,'C',false); }*/ $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim3 += $nota; } /*$this->SetTextColor(0); $this->Cell($w[$contadorSalto],6,0,1,0,'C',false);*/ } if ($contadorSalto == 4 && $bandera == false) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if($Fnota['nombreCurso']=='Matemáticas' || $Fnota['nombreCurso']=='Matemática 4' || $Fnota['nombreCurso']=='Matemática 5' || $Fnota['nombreCurso']=='Matemática IV' || $Fnota['nombreCurso']=='Matemática V' || $Fnota['nombreCurso']=='Matemática Comercial' || $Fnota['nombreCurso']=='Cálculo Mercantil y Financiero' || $Fnota['nombreCurso']=='Estadística' || $Fnota['nombreCurso']=='Matemática' || $Fnota['nombreCurso']=='MATEMÁTICA APLICADA'){ $nota = $nota + $notaAlgebra4; if($nota > 100){ $nota = 100; } } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { if ($Fnota['nombreCurso'] == "Seminario") { $this->SetTextColor(0); } else { $this->SetTextColor(252, 3, 3); } } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } if ($Fnota['nombreCurso'] == "Seminario") { $this->Cell($w[$contadorSalto], 6, "", 1, 0, 'C', false); } else { $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); } $total += intval($nota); if ($Fnota['nombreCurso'] != "Seminario" && $Fnota['nombreCurso'] != "Práctica Supervisada") { $bim4 += $nota; $contadorCurso++; } /********************/ /*$this->SetTextColor(0); if($Fnota['nombreCurso']=="Seminario"){ $this->Cell($w[$contadorSalto],6,"",1,0,'C',false); }else{ $this->Cell($w[$contadorSalto],6,0,1,0,'C',false); }*/ /********************/ $this->SetTextColor(0); if ($Fnota['nombreCurso'] == "Seminario") { $promedio = $total; } else { $promedio = round($total / 4, 0); } $this->Cell($w[$contadorSalto], 6, $promedio, 1, 0, 'C', false); $contadorSalto = -1; $total = 0; $this->Ln(); } if ($contadorSalto == 3 && $bandera == true) { $contadorSalto = -1; $bandera = false; } $contadorSalto++; } } } /**PARA INGLES */ $contadorSalto = 0; $total = 0; if ($notasAlumnoIngles) { foreach ($notasAlumnoIngles as $Fnota) { if ($contadorSalto == 0) { $this->SetX(22); $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, ' ' . utf8_decode($Fnota['nombreCurso']), 1, 0, 'L', false); $contadorSalto++; } if ($contadorSalto == 1) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim1 += $nota; } if ($contadorSalto == 2) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim2 += $nota; } if ($contadorSalto == 3) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim3 += $nota; } if ($contadorSalto == 4) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($Fnota['punteo']); $bim4 += $nota; $this->SetTextColor(0); $promedio = round($total / 4, 0); $this->Cell($w[$contadorSalto], 6, $promedio, 1, 0, 'C', false); $contadorSalto = -1; $total = 0; $contadorCurso++; $this->Ln(); } $contadorSalto++; } } /**PARA ESCUELA DE ARTE */ $contadorSalto = 0; $total = 0; if ($notasEA) { foreach ($notasEA as $Fnota) { if ($contadorSalto == 0) { $this->SetX(22); $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, ' Escuela de Arte', 1, 0, 'L', false); $contadorSalto++; } if ($contadorSalto == 1) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); $bim1 += $nota; } if ($contadorSalto == 2) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); $bim2 += $nota; } if ($contadorSalto == 3) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); $bim3 += $nota; } if ($contadorSalto == 4) { $nota = 0; if ($Fnota['punteo'] != 0 || $Fnota['punteo'] != "") { $nota = $Fnota['punteo']; } if ($nota == 0) { $this->SetTextColor(0); } elseif ($nota < 60) { $this->SetTextColor(252, 3, 3); } elseif ($nota < 70) { $this->SetTextColor(119, 3, 252); } else { $this->SetTextColor(0); } $this->SetTextColor(0); $this->Cell($w[$contadorSalto], 6, $nota, 1, 0, 'C', false); $total += intval($nota); $bim4 += $nota; $this->SetTextColor(0); $promedio = round($total / 4, 0); $this->Cell($w[$contadorSalto], 6, $promedio, 1, 0, 'C', false); $contadorSalto = -1; $total = 0; $contadorCurso++; $this->Ln(); } $contadorSalto++; } } //pie de página $this->SetX(22); $this->SetFont('Arial', 'B', 10); $this->Cell($w[0], 6, ' ' . 'Promedio', 1, 0, 'L', false); $this->Cell($w[1], 6, round($bim1 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[2], 6, round($bim2 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[3], 6, round($bim3 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[4], 6, round($bim4 / $contadorCurso, 0), 1, 0, 'C', false); $this->Cell($w[4], 6, round((round($bim1 / $contadorCurso) + round($bim2 / $contadorCurso) + round($bim3 / $contadorCurso) + round($bim4 / $contadorCurso)) / 4, 0), 1, 0, 'C', false); /*if ($bandera_graduando) { $this->Ln(); $this->Ln(); $this->Ln(); $this->SetX(22); $this->Cell(40, 10, utf8_decode("La nota de seminario se estará publicando la siguiente unidad")); }*/ } function GenerarCuadroLab($carnet) { //FONDO $this->Image('assets/img/fondo_boleta_2024.jpg', '0', '0', '217', '281', 'JPG'); //datos del alumno $consultas = new Boleta2024(); $datosAlumno = $consultas->buscarAlumno($carnet); $this->SetFont('Arial', '', 12); $this->SetTextColor(20); $this->setXY(40, 47.5); $this->Cell(45, 10, $carnet); $this->Cell(50, 10, " " . utf8_decode($datosAlumno[0]['apellidos']) . ', ' . utf8_decode($datosAlumno[0]['nombres'])); $this->Ln(); $this->setXY(40, 55); $this->setFontSize(10); $this->Cell(40, 10, $datosAlumno[0]['nombre_corto']); $this->SetFont('Arial', 'B', 12); $this->setXY(85, 73); $this->Cell(50, 10, "Primer Laboratorio"); // Colores, ancho de línea y fuente en negrita $this->SetFont('Arial', '', 11); $this->SetFillColor(0, 87, 69); $this->SetTextColor(255); $this->SetDrawColor(191, 191, 201); $this->SetLineWidth(.1); $this->SetFont('', 'B'); $this->setXY(40, 85); $this->Cell(120, 8, " " . utf8_decode("Laboratorio"), 1, 0, 'L', true); $this->Cell(15, 8, " " . utf8_decode("Nota"), 1, 0, 'L', true); $datosLaboratorio = $consultas->buscarNotasLab($carnet); $this->Ln(); $promedioLab = 0; if ($datosLaboratorio) { foreach ($datosLaboratorio as $datosL) { if ($datosL['bimestre'] == "1") { $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120, 7, " " . utf8_decode($datosL['nombre']), 1, 0, 'L', false); $this->SetFontSize(9); if ($datosL['punteo'] < 60 && $datosL['punteo'] > 0) { $this->SetTextColor(204, 4, 41); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } elseif ($datosL['punteo'] >= 60 && $datosL['punteo'] < 70) { $this->SetTextColor(177, 4, 204); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } else { $this->SetTextColor(59, 58, 58); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } $promedioLab += intval($datosL['punteo']); $this->Ln(); } } } $this->SetXY(85, 105); $this->SetFont('Arial', 'B', 12); $this->Cell(50, 50, "Segundo Laboratorio"); $this->SetXY(40, 135); $this->SetTextColor(255); $this->Cell(120, 8, " " . utf8_decode("Laboratorio"), 1, 0, 'L', true); $this->Cell(15, 8, " " . utf8_decode("Nota"), 1, 0, 'L', true); $this->SetXY(40, 143); if($datosLaboratorio){ foreach ($datosLaboratorio as $datosL) { if ($datosL['bimestre'] == "2") { $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120, 7, " " . utf8_decode($datosL['nombre']), 1, 0, 'L', false); $this->SetFontSize(9); if ($datosL['punteo'] < 60 && $datosL['punteo'] > 0) { $this->SetTextColor(204, 4, 41); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } elseif ($datosL['punteo'] >= 60 && $datosL['punteo'] < 70) { $this->SetTextColor(177, 4, 204); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } else { $this->SetTextColor(59, 58, 58); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } $promedioLab += intval($datosL['punteo']); $this->Ln(); } } } $this->SetXY(85, 150); $this->SetFont('Arial', 'B', 12); $this->SetTextColor(255); $this->Cell(50, 50, "Tercer Laboratorio"); $this->SetXY(40, 180); $this->Cell(120, 8, " " . utf8_decode("Laboratorio"), 1, 0, 'L', true); $this->Cell(15, 8, " " . utf8_decode("Nota"), 1, 0, 'L', true); $this->SetXY(40, 188); foreach ($datosLaboratorio as $datosL) { if ($datosL['bimestre'] == "3") { $this->SetX(40); $this->SetTextColor(59, 58, 58); $this->SetFontSize(8); $this->Cell(120, 7, " " . utf8_decode($datosL['nombre']), 1, 0, 'L', false); $this->SetFontSize(9); if ($datosL['punteo'] < 60 && $datosL['punteo'] > 0) { $this->SetTextColor(204, 4, 41); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } elseif ($datosL['punteo'] >= 60 && $datosL['punteo'] < 70) { $this->SetTextColor(177, 4, 204); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } else { $this->SetTextColor(59, 58, 58); $this->Cell(15, 7, $datosL['punteo'], 1, 0, 'C', false); } $promedioLab += intval($datosL['punteo']); $this->Ln(); } } $promedioLab = round($promedioLab / 12, 0); $this->SetFont('Arial', 'B', 12); $this->SetXY(40, 225); $this->SetTextColor(255); $this->Cell(135, 8, " " . utf8_decode("Promedio final"), 1, 0, 'L', true); $this->Ln(); $this->SetX(40); $this->SetTextColor(0, 0, 0); $this->Cell(135, 8, $promedioLab, 1, 0, 'C', false); } public function arreglar($cadena) { //Para E $cadena = str_replace( array('É'), array(utf8_encode('É')), $cadena ); $cadena = str_replace( array('Ó'), array(utf8_encode('Ó')), $cadena ); return $cadena; } } ?>PKZ>--FAQ.htmnu[ FAQ

FAQ

  • 1. Cul es exactamente el tipo de licencia de FPDF? Existen restricciones de uso?

    FPDF es liberado bajo una licencia permisiva: no hay restriccin de uso. Usted puede integrarlo libremente en su aplicacin (comercial o no), con o sin modificaciones.
  • 2. Encuentro el siguiente error cuando intento generar un PDF: Some data has already been output, can't send PDF file

    Usted no debe enviar nada al navegador, excepto el propio PDF: ningn HTML, espacio o retorno de carro. Un caso comn es tener una lnea o espacio en blanco extra al final del script incluido.
    Si usted no puede averiguar de donde proviene el problema, este otro mensaje que aparece justo abajo puede ayudarlo:

    Warning: Cannot modify header information - headers already sent by (output started at script.php:X)

    Esto significa que script.php enva algo en la lnea X. Vaya a esta lnea y arrglelo. En caso de que el mensaje no aparece, en primer lugar compruebe que usted no haya desactivado las advertencias, a continuacin, agregue esto al comienzo de su script:
    ob_end_clean();
    Si todava no lo ve, deshabilite zlib.output_compression en su php.ini y debera aparecer.
  • 3. Caracteres acentuados son reemplazados por algunos caracteres extraos como é.

    No utilice codificacin UTF-8. La codificacin estndar de fuentes en FPDF es ISO-8859-1 o windows-1252. Es posible realizar una conversin a la norma ISO-8859-1 con utf8_decode():
    $str = utf8_decode($str);
    Sin embargo, algunos caracteres, tales como Euro no sern traducidos correctamente. Si la extensin iconv est disponible, la forma correcta de hacerlo es la siguiente:
    $str = iconv('UTF-8', 'windows-1252', $str);
  • 4. Intento incluir el smbolo del euro, pero no funciona.

    Las fuentes estndares tiene el carcter euro en la posicin 128. Puede definir una constante como esta para su comodidad:
    define('EURO', chr(128));
  • 5. Intento mostrar una variable en el mtodo Header pero no se imprime nada.

    Tienes que utilizar la palabra clave global para acceder a las variables globales, por ejemplo:
    function Header()
    {
        global $title;
    
        $this->SetFont('Arial', 'B', 15);
        $this->Cell(0, 10, $title, 1, 1, 'C');
    }
    
    $title = 'Mi Ttulo';
    Alternativamente, puede utilizar una propiedad del objeto:
    function Header()
    {
        $this->SetFont('Arial', 'B', 15);
        $this->Cell(0, 10, $this->title, 1, 1, 'C');
    }
    
    $pdf->title = 'Mi Ttulo';
  • 6. He definido los mtodos Header y Footer en mi clase PDF, pero no se muestra nada.

    Tiene que crear un objeto de la clase PDF, no de la FPDF:
    $pdf = new PDF();
  • 7. No consigo que los saltos de lnea funcionen. Pongo \n en la cadena para MultiCell, pero no funciona.

    Debe usted utilizar comillas dobles ("), no simples ('), para la cadena.
  • 8. Uso jQuery para generar el archivo PDF pero ste no se muestra.

    No uses a AJAX request para obtener el PDF.
  • 9. Dibujo un marco con dimensiones muy precisas pero, cuando lo imprimo, noto algunas diferencias.

    Respecto a las dimensiones, seleccione "Ninguno" para el ajuste de escala de pgina en lugar de "Reducir al rea de impresin" en el cuadro de dilogo Imprimir.
  • 10. Me gustara usar toda la superficie de la pgina, pero cuando imprimo siempre aparecen mrgenes. Cmo puedo deshacerme de ellos?

    Todas las impresoras tienen mrgenes fsicos (dependiendo del modelo). Por tanto, es imposible quitarlos e imprimir en la totalidad del papel.
  • 11. Cmo puedo poner un fondo en mi PDF?

    Para una imagen, invoque Image() en el mtodo Header(), antes que cualquier otra salida. Para configurar un color de fondo, use Rect().
  • 12. Cmo puedo establecer una cabecera o pie de pgina en la primera pgina?

    Simplemente verifique el nmero de la pgina:
    function Header()
    {
        if($this->PageNo()==1)
        {
            //Primera Pgina
            ...
        }
        else
        {
            //Otras Pginas
            ...
        }
    }
  • 13. Me gustara utilizar extensiones previstas por diferentes scripts. Cmo puedo combinarlos?

    Utilice herencia encadenada. Si dispone de dos clases, por ejemplo, nmbrelo "A" en a.php:
    require('fpdf.php');
    
    class A extends FPDF
    {
    ...
    }
    y "B" en b.php:
    require('fpdf.php');
    
    class B extends FPDF
    {
    ...
    }
    a continuacin, hacer B extends A:
    require('a.php');
    
    class B extends A
    {
    ...
    }
    y haga su propia clase extendida de B:
    require('b.php');
    
    class PDF extends B
    {
    ...
    }
    
    $pdf = new PDF();
  • 14. Cmo abrir el archivo PDF en otra pestaa?

    Sigue el mismo mtodo que utilizaras para una pgina HTML o algo similar. Aade: target=_blank a tu link o form.
  • 15. Cmo puedo enviar el PDF por correo electrnico?

    Como cualquier otro archivo, pero una forma fcil es usar PHPMailer y esta es una forma de adjuntarlo: archivo desde la memoria:
    $mail = new PHPMailer();
    ...
    $doc = $pdf->Output('S');
    $mail->AddStringAttachment($doc, 'doc.pdf', 'base64', 'application/pdf');
    $mail->Send();
  • 16. Cul es el lmite de tamao de los ficheros que puedo generar con FPDF?

    No hay ningn lmte en particular. Sin embargo, hay ciertas limitaciones:

    - El mximo de memoria reservada para los scripts en PHP es, por defecto, de 128 MB. Para documentos muy extensos, especialmente si contienen imgenes, este lmite puede alcanzarse (ya que el fichero se construye en memoria). El lmite se define en el fichero php.ini.

    - El tiempo mximo de ejecucin es por defecto de 30 segundos. Este lmite puede ser fcilmente sobrepasado. Se define en php.ini y puede ser modificado dinmicamente mediante set_time_limit().
  • 17. Puedo modificar un PDF con FPDF?

    Es posible importar pginas de un documento PDF existente gracias a la extensin FPDI. Entonces, puede aadirles contenido.
  • 18. Me gustara hacer un motor de bsqueda en PHP e indexar ficheros PDF. Puedo hacerlo con FPDF?

    No. Pero existe una utilidad GPL escrita en C, pdftotext, que es capaz de extraer el texto de un PDF. Viene con el paquete Xpdf.
  • 19. Puedo convertir una pgina HTML en PDF con FPDF?

    No. Pero existe una utilidad GPL escrita en C, HTMLDOC, que le permite hacerlo y da buen resultado.
  • 20. Puedo concatenar ficheros PDF con FPDF?

    No directamente, pero es posible usar FPDI para llevar a cabo esta tarea. Tambin existen algunas herramientas libres de lnea de comandos: pdftk y mbtPdfAsm.
PKZHfpdf.phpnu[_dochecks(); // Initialization of properties $this->state = 0; $this->page = 0; $this->n = 2; $this->buffer = ''; $this->pages = array(); $this->PageInfo = array(); $this->fonts = array(); $this->FontFiles = array(); $this->encodings = array(); $this->cmaps = array(); $this->images = array(); $this->links = array(); $this->InHeader = false; $this->InFooter = false; $this->lasth = 0; $this->FontFamily = ''; $this->FontStyle = ''; $this->FontSizePt = 12; $this->underline = false; $this->DrawColor = '0 G'; $this->FillColor = '0 g'; $this->TextColor = '0 g'; $this->ColorFlag = false; $this->WithAlpha = false; $this->ws = 0; // Font path if(defined('FPDF_FONTPATH')) { $this->fontpath = FPDF_FONTPATH; if(substr($this->fontpath,-1)!='/' && substr($this->fontpath,-1)!='\\') $this->fontpath .= '/'; } elseif(is_dir(dirname(__FILE__).'/font')) $this->fontpath = dirname(__FILE__).'/font/'; else $this->fontpath = ''; // Core fonts $this->CoreFonts = array('courier', 'helvetica', 'times', 'symbol', 'zapfdingbats'); // Scale factor if($unit=='pt') $this->k = 1; elseif($unit=='mm') $this->k = 72/25.4; elseif($unit=='cm') $this->k = 72/2.54; elseif($unit=='in') $this->k = 72; else $this->Error('Incorrect unit: '.$unit); // Page sizes $this->StdPageSizes = array('a3'=>array(841.89,1190.55), 'a4'=>array(595.28,841.89), 'a5'=>array(420.94,595.28), 'letter'=>array(612,792), 'legal'=>array(612,1008)); $size = $this->_getpagesize($size); $this->DefPageSize = $size; $this->CurPageSize = $size; // Page orientation $orientation = strtolower($orientation); if($orientation=='p' || $orientation=='portrait') { $this->DefOrientation = 'P'; $this->w = $size[0]; $this->h = $size[1]; } elseif($orientation=='l' || $orientation=='landscape') { $this->DefOrientation = 'L'; $this->w = $size[1]; $this->h = $size[0]; } else $this->Error('Incorrect orientation: '.$orientation); $this->CurOrientation = $this->DefOrientation; $this->wPt = $this->w*$this->k; $this->hPt = $this->h*$this->k; // Page rotation $this->CurRotation = 0; // Page margins (1 cm) $margin = 28.35/$this->k; $this->SetMargins($margin,$margin); // Interior cell margin (1 mm) $this->cMargin = $margin/10; // Line width (0.2 mm) $this->LineWidth = .567/$this->k; // Automatic page break $this->SetAutoPageBreak(true,2*$margin); // Default display mode $this->SetDisplayMode('default'); // Enable compression $this->SetCompression(true); // Set default PDF version number $this->PDFVersion = '1.3'; } function SetMargins($left, $top, $right=null) { // Set left, top and right margins $this->lMargin = $left; $this->tMargin = $top; if($right===null) $right = $left; $this->rMargin = $right; } function SetLeftMargin($margin) { // Set left margin $this->lMargin = $margin; if($this->page>0 && $this->x<$margin) $this->x = $margin; } function SetTopMargin($margin) { // Set top margin $this->tMargin = $margin; } function SetRightMargin($margin) { // Set right margin $this->rMargin = $margin; } function SetAutoPageBreak($auto, $margin=0) { // Set auto page break mode and triggering margin $this->AutoPageBreak = $auto; $this->bMargin = $margin; $this->PageBreakTrigger = $this->h-$margin; } function SetDisplayMode($zoom, $layout='default') { // Set display mode in viewer if($zoom=='fullpage' || $zoom=='fullwidth' || $zoom=='real' || $zoom=='default' || !is_string($zoom)) $this->ZoomMode = $zoom; else $this->Error('Incorrect zoom display mode: '.$zoom); if($layout=='single' || $layout=='continuous' || $layout=='two' || $layout=='default') $this->LayoutMode = $layout; else $this->Error('Incorrect layout display mode: '.$layout); } function SetCompression($compress) { // Set page compression if(function_exists('gzcompress')) $this->compress = $compress; else $this->compress = false; } function SetTitle($title, $isUTF8=false) { // Title of document $this->metadata['Title'] = $isUTF8 ? $title : utf8_encode($title); } function SetAuthor($author, $isUTF8=false) { // Author of document $this->metadata['Author'] = $isUTF8 ? $author : utf8_encode($author); } function SetSubject($subject, $isUTF8=false) { // Subject of document $this->metadata['Subject'] = $isUTF8 ? $subject : utf8_encode($subject); } function SetKeywords($keywords, $isUTF8=false) { // Keywords of document $this->metadata['Keywords'] = $isUTF8 ? $keywords : utf8_encode($keywords); } function SetCreator($creator, $isUTF8=false) { // Creator of document $this->metadata['Creator'] = $isUTF8 ? $creator : utf8_encode($creator); } function AliasNbPages($alias='{nb}') { // Define an alias for total number of pages $this->AliasNbPages = $alias; } function Error($msg) { // Fatal error throw new Exception('FPDF error: '.$msg); } function Close() { // Terminate document if($this->state==3) return; if($this->page==0) $this->AddPage(); // Page footer $this->InFooter = true; $this->Footer(); $this->InFooter = false; // Close page $this->_endpage(); // Close document $this->_enddoc(); } function AddPage($orientation='', $size='', $rotation=0) { // Start a new page if($this->state==3) $this->Error('The document is closed'); $family = $this->FontFamily; $style = $this->FontStyle.($this->underline ? 'U' : ''); $fontsize = $this->FontSizePt; $lw = $this->LineWidth; $dc = $this->DrawColor; $fc = $this->FillColor; $tc = $this->TextColor; $cf = $this->ColorFlag; if($this->page>0) { // Page footer $this->InFooter = true; $this->Footer(); $this->InFooter = false; // Close page $this->_endpage(); } // Start new page $this->_beginpage($orientation,$size,$rotation); // Set line cap style to square $this->_out('2 J'); // Set line width $this->LineWidth = $lw; $this->_out(sprintf('%.2F w',$lw*$this->k)); // Set font if($family) $this->SetFont($family,$style,$fontsize); // Set colors $this->DrawColor = $dc; if($dc!='0 G') $this->_out($dc); $this->FillColor = $fc; if($fc!='0 g') $this->_out($fc); $this->TextColor = $tc; $this->ColorFlag = $cf; // Page header $this->InHeader = true; $this->Header(); $this->InHeader = false; // Restore line width if($this->LineWidth!=$lw) { $this->LineWidth = $lw; $this->_out(sprintf('%.2F w',$lw*$this->k)); } // Restore font if($family) $this->SetFont($family,$style,$fontsize); // Restore colors if($this->DrawColor!=$dc) { $this->DrawColor = $dc; $this->_out($dc); } if($this->FillColor!=$fc) { $this->FillColor = $fc; $this->_out($fc); } $this->TextColor = $tc; $this->ColorFlag = $cf; } function Header() { // To be implemented in your own inherited class } function Footer() { // To be implemented in your own inherited class } function PageNo() { // Get current page number return $this->page; } function SetDrawColor($r, $g=null, $b=null) { // Set color for all stroking operations if(($r==0 && $g==0 && $b==0) || $g===null) $this->DrawColor = sprintf('%.3F G',$r/255); else $this->DrawColor = sprintf('%.3F %.3F %.3F RG',$r/255,$g/255,$b/255); if($this->page>0) $this->_out($this->DrawColor); } function SetFillColor($r, $g=null, $b=null) { // Set color for all filling operations if(($r==0 && $g==0 && $b==0) || $g===null) $this->FillColor = sprintf('%.3F g',$r/255); else $this->FillColor = sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255); $this->ColorFlag = ($this->FillColor!=$this->TextColor); if($this->page>0) $this->_out($this->FillColor); } function SetTextColor($r, $g=null, $b=null) { // Set color for text if(($r==0 && $g==0 && $b==0) || $g===null) $this->TextColor = sprintf('%.3F g',$r/255); else $this->TextColor = sprintf('%.3F %.3F %.3F rg',$r/255,$g/255,$b/255); $this->ColorFlag = ($this->FillColor!=$this->TextColor); } function GetStringWidth($s) { // Get width of a string in the current font $s = (string)$s; $cw = &$this->CurrentFont['cw']; $w = 0; $l = strlen($s); for($i=0;$i<$l;$i++) $w += $cw[$s[$i]]; return $w*$this->FontSize/1000; } function SetLineWidth($width) { // Set line width $this->LineWidth = $width; if($this->page>0) $this->_out(sprintf('%.2F w',$width*$this->k)); } function Line($x1, $y1, $x2, $y2) { // Draw a line $this->_out(sprintf('%.2F %.2F m %.2F %.2F l S',$x1*$this->k,($this->h-$y1)*$this->k,$x2*$this->k,($this->h-$y2)*$this->k)); } function Rect($x, $y, $w, $h, $style='') { // Draw a rectangle if($style=='F') $op = 'f'; elseif($style=='FD' || $style=='DF') $op = 'B'; else $op = 'S'; $this->_out(sprintf('%.2F %.2F %.2F %.2F re %s',$x*$this->k,($this->h-$y)*$this->k,$w*$this->k,-$h*$this->k,$op)); } function AddFont($family, $style='', $file='') { // Add a TrueType, OpenType or Type1 font $family = strtolower($family); if($file=='') $file = str_replace(' ','',$family).strtolower($style).'.php'; $style = strtoupper($style); if($style=='IB') $style = 'BI'; $fontkey = $family.$style; if(isset($this->fonts[$fontkey])) return; $info = $this->_loadfont($file); $info['i'] = count($this->fonts)+1; if(!empty($info['file'])) { // Embedded font if($info['type']=='TrueType') $this->FontFiles[$info['file']] = array('length1'=>$info['originalsize']); else $this->FontFiles[$info['file']] = array('length1'=>$info['size1'], 'length2'=>$info['size2']); } $this->fonts[$fontkey] = $info; } function SetFont($family, $style='', $size=0) { // Select a font; size given in points if($family=='') $family = $this->FontFamily; else $family = strtolower($family); $style = strtoupper($style); if(strpos($style,'U')!==false) { $this->underline = true; $style = str_replace('U','',$style); } else $this->underline = false; if($style=='IB') $style = 'BI'; if($size==0) $size = $this->FontSizePt; // Test if font is already selected if($this->FontFamily==$family && $this->FontStyle==$style && $this->FontSizePt==$size) return; // Test if font is already loaded $fontkey = $family.$style; if(!isset($this->fonts[$fontkey])) { // Test if one of the core fonts if($family=='arial') $family = 'helvetica'; if(in_array($family,$this->CoreFonts)) { if($family=='symbol' || $family=='zapfdingbats') $style = ''; $fontkey = $family.$style; if(!isset($this->fonts[$fontkey])) $this->AddFont($family,$style); } else $this->Error('Undefined font: '.$family.' '.$style); } // Select it $this->FontFamily = $family; $this->FontStyle = $style; $this->FontSizePt = $size; $this->FontSize = $size/$this->k; $this->CurrentFont = &$this->fonts[$fontkey]; if($this->page>0) $this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt)); } function SetFontSize($size) { // Set font size in points if($this->FontSizePt==$size) return; $this->FontSizePt = $size; $this->FontSize = $size/$this->k; if($this->page>0) $this->_out(sprintf('BT /F%d %.2F Tf ET',$this->CurrentFont['i'],$this->FontSizePt)); } function AddLink() { // Create a new internal link $n = count($this->links)+1; $this->links[$n] = array(0, 0); return $n; } function SetLink($link, $y=0, $page=-1) { // Set destination of internal link if($y==-1) $y = $this->y; if($page==-1) $page = $this->page; $this->links[$link] = array($page, $y); } function Link($x, $y, $w, $h, $link) { // Put a link on the page $this->PageLinks[$this->page][] = array($x*$this->k, $this->hPt-$y*$this->k, $w*$this->k, $h*$this->k, $link); } function Text($x, $y, $txt) { // Output a string if(!isset($this->CurrentFont)) $this->Error('No font has been set'); $s = sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if($this->underline && $txt!='') $s .= ' '.$this->_dounderline($x,$y,$txt); if($this->ColorFlag) $s = 'q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function AcceptPageBreak() { // Accept automatic page break or not return $this->AutoPageBreak; } function Cell($w, $h=0, $txt='', $border=0, $ln=0, $align='', $fill=false, $link='') { // Output a cell $k = $this->k; if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak()) { // Automatic page break $x = $this->x; $ws = $this->ws; if($ws>0) { $this->ws = 0; $this->_out('0 Tw'); } $this->AddPage($this->CurOrientation,$this->CurPageSize,$this->CurRotation); $this->x = $x; if($ws>0) { $this->ws = $ws; $this->_out(sprintf('%.3F Tw',$ws*$k)); } } if($w==0) $w = $this->w-$this->rMargin-$this->x; $s = ''; if($fill || $border==1) { if($fill) $op = ($border==1) ? 'B' : 'f'; else $op = 'S'; $s = sprintf('%.2F %.2F %.2F %.2F re %s ',$this->x*$k,($this->h-$this->y)*$k,$w*$k,-$h*$k,$op); } if(is_string($border)) { $x = $this->x; $y = $this->y; if(strpos($border,'L')!==false) $s .= sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,$x*$k,($this->h-($y+$h))*$k); if(strpos($border,'T')!==false) $s .= sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-$y)*$k); if(strpos($border,'R')!==false) $s .= sprintf('%.2F %.2F m %.2F %.2F l S ',($x+$w)*$k,($this->h-$y)*$k,($x+$w)*$k,($this->h-($y+$h))*$k); if(strpos($border,'B')!==false) $s .= sprintf('%.2F %.2F m %.2F %.2F l S ',$x*$k,($this->h-($y+$h))*$k,($x+$w)*$k,($this->h-($y+$h))*$k); } if($txt!=='') { if(!isset($this->CurrentFont)) $this->Error('No font has been set'); if($align=='R') $dx = $w-$this->cMargin-$this->GetStringWidth($txt); elseif($align=='C') $dx = ($w-$this->GetStringWidth($txt))/2; else $dx = $this->cMargin; if($this->ColorFlag) $s .= 'q '.$this->TextColor.' '; $s .= sprintf('BT %.2F %.2F Td (%s) Tj ET',($this->x+$dx)*$k,($this->h-($this->y+.5*$h+.3*$this->FontSize))*$k,$this->_escape($txt)); if($this->underline) $s .= ' '.$this->_dounderline($this->x+$dx,$this->y+.5*$h+.3*$this->FontSize,$txt); if($this->ColorFlag) $s .= ' Q'; if($link) $this->Link($this->x+$dx,$this->y+.5*$h-.5*$this->FontSize,$this->GetStringWidth($txt),$this->FontSize,$link); } if($s) $this->_out($s); $this->lasth = $h; if($ln>0) { // Go to next line $this->y += $h; if($ln==1) $this->x = $this->lMargin; } else $this->x += $w; } function MultiCell($w, $h, $txt, $border=0, $align='J', $fill=false) { // Output text with automatic or explicit line breaks if(!isset($this->CurrentFont)) $this->Error('No font has been set'); $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(strpos($border,'L')!==false) $b2 .= 'L'; if(strpos($border,'R')!==false) $b2 .= 'R'; $b = (strpos($border,'T')!==false) ? $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; $this->_out('0 Tw'); } $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; 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; $this->_out('0 Tw'); } $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; $this->_out(sprintf('%.3F Tw',$this->ws*$this->k)); } $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; } else $i++; } // Last chunk if($this->ws>0) { $this->ws = 0; $this->_out('0 Tw'); } if($border && strpos($border,'B')!==false) $b .= 'B'; $this->Cell($w,$h,substr($s,$j,$i-$j),$b,2,$align,$fill); $this->x = $this->lMargin; } function Write($h, $txt, $link='') { // Output text in flowing mode if(!isset($this->CurrentFont)) $this->Error('No font has been set'); $cw = &$this->CurrentFont['cw']; $w = $this->w-$this->rMargin-$this->x; $wmax = ($w-2*$this->cMargin)*1000/$this->FontSize; $s = str_replace("\r",'',$txt); $nb = strlen($s); $sep = -1; $i = 0; $j = 0; $l = 0; $nl = 1; while($i<$nb) { // Get next character $c = $s[$i]; if($c=="\n") { // Explicit line break $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',false,$link); $i++; $sep = -1; $j = $i; $l = 0; if($nl==1) { $this->x = $this->lMargin; $w = $this->w-$this->rMargin-$this->x; $wmax = ($w-2*$this->cMargin)*1000/$this->FontSize; } $nl++; continue; } if($c==' ') $sep = $i; $l += $cw[$c]; if($l>$wmax) { // Automatic line break if($sep==-1) { if($this->x>$this->lMargin) { // Move to next line $this->x = $this->lMargin; $this->y += $h; $w = $this->w-$this->rMargin-$this->x; $wmax = ($w-2*$this->cMargin)*1000/$this->FontSize; $i++; $nl++; continue; } if($i==$j) $i++; $this->Cell($w,$h,substr($s,$j,$i-$j),0,2,'',false,$link); } else { $this->Cell($w,$h,substr($s,$j,$sep-$j),0,2,'',false,$link); $i = $sep+1; } $sep = -1; $j = $i; $l = 0; if($nl==1) { $this->x = $this->lMargin; $w = $this->w-$this->rMargin-$this->x; $wmax = ($w-2*$this->cMargin)*1000/$this->FontSize; } $nl++; } else $i++; } // Last chunk if($i!=$j) $this->Cell($l/1000*$this->FontSize,$h,substr($s,$j),0,0,'',false,$link); } function Ln($h=null) { // Line feed; default value is the last cell height $this->x = $this->lMargin; if($h===null) $this->y += $this->lasth; else $this->y += $h; } function Image($file, $x=null, $y=null, $w=0, $h=0, $type='', $link='') { // Put an image on the page if($file=='') $this->Error('Image file name is empty'); if(!isset($this->images[$file])) { // First use of this image, get info if($type=='') { $pos = strrpos($file,'.'); if(!$pos) $this->Error('Image file has no extension and no type was specified: '.$file); $type = substr($file,$pos+1); } $type = strtolower($type); if($type=='jpeg') $type = 'jpg'; $mtd = '_parse'.$type; if(!method_exists($this,$mtd)) $this->Error('Unsupported image type: '.$type); $info = $this->$mtd($file); $info['i'] = count($this->images)+1; $this->images[$file] = $info; } else $info = $this->images[$file]; // Automatic width and height calculation if needed if($w==0 && $h==0) { // Put image at 96 dpi $w = -96; $h = -96; } if($w<0) $w = -$info['w']*72/$w/$this->k; if($h<0) $h = -$info['h']*72/$h/$this->k; if($w==0) $w = $h*$info['w']/$info['h']; if($h==0) $h = $w*$info['h']/$info['w']; // Flowing mode if($y===null) { if($this->y+$h>$this->PageBreakTrigger && !$this->InHeader && !$this->InFooter && $this->AcceptPageBreak()) { // Automatic page break $x2 = $this->x; $this->AddPage($this->CurOrientation,$this->CurPageSize,$this->CurRotation); $this->x = $x2; } $y = $this->y; $this->y += $h; } if($x===null) $x = $this->x; $this->_out(sprintf('q %.2F 0 0 %.2F %.2F %.2F cm /I%d Do Q',$w*$this->k,$h*$this->k,$x*$this->k,($this->h-($y+$h))*$this->k,$info['i'])); if($link) $this->Link($x,$y,$w,$h,$link); } function GetPageWidth() { // Get current page width return $this->w; } function GetPageHeight() { // Get current page height return $this->h; } function GetX() { // Get x position return $this->x; } function SetX($x) { // Set x position if($x>=0) $this->x = $x; else $this->x = $this->w+$x; } function GetY() { // Get y position return $this->y; } function SetY($y, $resetX=true) { // Set y position and optionally reset x if($y>=0) $this->y = $y; else $this->y = $this->h+$y; if($resetX) $this->x = $this->lMargin; } function SetXY($x, $y) { // Set x and y positions $this->SetX($x); $this->SetY($y,false); } function Output($dest='', $name='', $isUTF8=false) { // Output PDF to some destination $this->Close(); if(strlen($name)==1 && strlen($dest)!=1) { // Fix parameter order $tmp = $dest; $dest = $name; $name = $tmp; } if($dest=='') $dest = 'I'; if($name=='') $name = 'doc.pdf'; switch(strtoupper($dest)) { case 'I': // Send to standard output $this->_checkoutput(); if(PHP_SAPI!='cli') { // We send to a browser header('Content-Type: application/pdf'); header('Content-Disposition: inline; '.$this->_httpencode('filename',$name,$isUTF8)); header('Cache-Control: private, max-age=0, must-revalidate'); header('Pragma: public'); } echo $this->buffer; break; case 'D': // Download file $this->_checkoutput(); header('Content-Type: application/x-download'); header('Content-Disposition: attachment; '.$this->_httpencode('filename',$name,$isUTF8)); header('Cache-Control: private, max-age=0, must-revalidate'); header('Pragma: public'); echo $this->buffer; break; case 'F': // Save to local file if(!file_put_contents($name,$this->buffer)) $this->Error('Unable to create output file: '.$name); break; case 'S': // Return as a string return $this->buffer; default: $this->Error('Incorrect output destination: '.$dest); } return ''; } /******************************************************************************* * Protected methods * *******************************************************************************/ protected function _dochecks() { // Check mbstring overloading if(ini_get('mbstring.func_overload') & 2) $this->Error('mbstring overloading must be disabled'); } protected function _checkoutput() { if(PHP_SAPI!='cli') { if(headers_sent($file,$line)) $this->Error("Some data has already been output, can't send PDF file (output started at $file:$line)"); } if(ob_get_length()) { // The output buffer is not empty if(preg_match('/^(\xEF\xBB\xBF)?\s*$/',ob_get_contents())) { // It contains only a UTF-8 BOM and/or whitespace, let's clean it ob_clean(); } else $this->Error("Some data has already been output, can't send PDF file"); } } protected function _getpagesize($size) { if(is_string($size)) { $size = strtolower($size); if(!isset($this->StdPageSizes[$size])) $this->Error('Unknown page size: '.$size); $a = $this->StdPageSizes[$size]; return array($a[0]/$this->k, $a[1]/$this->k); } else { if($size[0]>$size[1]) return array($size[1], $size[0]); else return $size; } } protected function _beginpage($orientation, $size, $rotation) { $this->page++; $this->pages[$this->page] = ''; $this->state = 2; $this->x = $this->lMargin; $this->y = $this->tMargin; $this->FontFamily = ''; // Check page size and orientation if($orientation=='') $orientation = $this->DefOrientation; else $orientation = strtoupper($orientation[0]); if($size=='') $size = $this->DefPageSize; else $size = $this->_getpagesize($size); if($orientation!=$this->CurOrientation || $size[0]!=$this->CurPageSize[0] || $size[1]!=$this->CurPageSize[1]) { // New size or orientation if($orientation=='P') { $this->w = $size[0]; $this->h = $size[1]; } else { $this->w = $size[1]; $this->h = $size[0]; } $this->wPt = $this->w*$this->k; $this->hPt = $this->h*$this->k; $this->PageBreakTrigger = $this->h-$this->bMargin; $this->CurOrientation = $orientation; $this->CurPageSize = $size; } if($orientation!=$this->DefOrientation || $size[0]!=$this->DefPageSize[0] || $size[1]!=$this->DefPageSize[1]) $this->PageInfo[$this->page]['size'] = array($this->wPt, $this->hPt); if($rotation!=0) { if($rotation%90!=0) $this->Error('Incorrect rotation value: '.$rotation); $this->CurRotation = $rotation; $this->PageInfo[$this->page]['rotation'] = $rotation; } } protected function _endpage() { $this->state = 1; } protected function _loadfont($font) { // Load a font definition file from the font directory if(strpos($font,'/')!==false || strpos($font,"\\")!==false) $this->Error('Incorrect font definition file name: '.$font); include($this->fontpath.$font); if(!isset($name)) $this->Error('Could not include font definition file'); if(isset($enc)) $enc = strtolower($enc); if(!isset($subsetted)) $subsetted = false; return get_defined_vars(); } protected function _isascii($s) { // Test if string is ASCII $nb = strlen($s); for($i=0;$i<$nb;$i++) { if(ord($s[$i])>127) return false; } return true; } protected function _httpencode($param, $value, $isUTF8) { // Encode HTTP header field parameter if($this->_isascii($value)) return $param.'="'.$value.'"'; if(!$isUTF8) $value = utf8_encode($value); if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')!==false) return $param.'="'.rawurlencode($value).'"'; else return $param."*=UTF-8''".rawurlencode($value); } protected function _UTF8toUTF16($s) { // Convert UTF-8 to UTF-16BE with BOM $res = "\xFE\xFF"; $nb = strlen($s); $i = 0; while($i<$nb) { $c1 = ord($s[$i++]); if($c1>=224) { // 3-byte character $c2 = ord($s[$i++]); $c3 = ord($s[$i++]); $res .= chr((($c1 & 0x0F)<<4) + (($c2 & 0x3C)>>2)); $res .= chr((($c2 & 0x03)<<6) + ($c3 & 0x3F)); } elseif($c1>=192) { // 2-byte character $c2 = ord($s[$i++]); $res .= chr(($c1 & 0x1C)>>2); $res .= chr((($c1 & 0x03)<<6) + ($c2 & 0x3F)); } else { // Single-byte character $res .= "\0".chr($c1); } } return $res; } protected function _escape($s) { // Escape special characters if(strpos($s,'(')!==false || strpos($s,')')!==false || strpos($s,'\\')!==false || strpos($s,"\r")!==false) return str_replace(array('\\','(',')',"\r"), array('\\\\','\\(','\\)','\\r'), $s); else return $s; } protected function _textstring($s) { // Format a text string if(!$this->_isascii($s)) $s = $this->_UTF8toUTF16($s); return '('.$this->_escape($s).')'; } protected function _dounderline($x, $y, $txt) { // Underline text $up = $this->CurrentFont['up']; $ut = $this->CurrentFont['ut']; $w = $this->GetStringWidth($txt)+$this->ws*substr_count($txt,' '); return sprintf('%.2F %.2F %.2F %.2F re f',$x*$this->k,($this->h-($y-$up/1000*$this->FontSize))*$this->k,$w*$this->k,-$ut/1000*$this->FontSizePt); } protected function _parsejpg($file) { // Extract info from a JPEG file $a = getimagesize($file); if(!$a) $this->Error('Missing or incorrect image file: '.$file); if($a[2]!=2) $this->Error('Not a JPEG file: '.$file); if(!isset($a['channels']) || $a['channels']==3) $colspace = 'DeviceRGB'; elseif($a['channels']==4) $colspace = 'DeviceCMYK'; else $colspace = 'DeviceGray'; $bpc = isset($a['bits']) ? $a['bits'] : 8; $data = file_get_contents($file); return array('w'=>$a[0], 'h'=>$a[1], 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'DCTDecode', 'data'=>$data); } protected function _parsepng($file) { // Extract info from a PNG file $f = fopen($file,'rb'); if(!$f) $this->Error('Can\'t open image file: '.$file); $info = $this->_parsepngstream($f,$file); fclose($f); return $info; } protected function _parsepngstream($f, $file) { // Check signature if($this->_readstream($f,8)!=chr(137).'PNG'.chr(13).chr(10).chr(26).chr(10)) $this->Error('Not a PNG file: '.$file); // Read header chunk $this->_readstream($f,4); if($this->_readstream($f,4)!='IHDR') $this->Error('Incorrect PNG file: '.$file); $w = $this->_readint($f); $h = $this->_readint($f); $bpc = ord($this->_readstream($f,1)); if($bpc>8) $this->Error('16-bit depth not supported: '.$file); $ct = ord($this->_readstream($f,1)); if($ct==0 || $ct==4) $colspace = 'DeviceGray'; elseif($ct==2 || $ct==6) $colspace = 'DeviceRGB'; elseif($ct==3) $colspace = 'Indexed'; else $this->Error('Unknown color type: '.$file); if(ord($this->_readstream($f,1))!=0) $this->Error('Unknown compression method: '.$file); if(ord($this->_readstream($f,1))!=0) $this->Error('Unknown filter method: '.$file); if(ord($this->_readstream($f,1))!=0) $this->Error('Interlacing not supported: '.$file); $this->_readstream($f,4); $dp = '/Predictor 15 /Colors '.($colspace=='DeviceRGB' ? 3 : 1).' /BitsPerComponent '.$bpc.' /Columns '.$w; // Scan chunks looking for palette, transparency and image data $pal = ''; $trns = ''; $data = ''; do { $n = $this->_readint($f); $type = $this->_readstream($f,4); if($type=='PLTE') { // Read palette $pal = $this->_readstream($f,$n); $this->_readstream($f,4); } elseif($type=='tRNS') { // Read transparency info $t = $this->_readstream($f,$n); if($ct==0) $trns = array(ord(substr($t,1,1))); elseif($ct==2) $trns = array(ord(substr($t,1,1)), ord(substr($t,3,1)), ord(substr($t,5,1))); else { $pos = strpos($t,chr(0)); if($pos!==false) $trns = array($pos); } $this->_readstream($f,4); } elseif($type=='IDAT') { // Read image data block $data .= $this->_readstream($f,$n); $this->_readstream($f,4); } elseif($type=='IEND') break; else $this->_readstream($f,$n+4); } while($n); if($colspace=='Indexed' && empty($pal)) $this->Error('Missing palette in '.$file); $info = array('w'=>$w, 'h'=>$h, 'cs'=>$colspace, 'bpc'=>$bpc, 'f'=>'FlateDecode', 'dp'=>$dp, 'pal'=>$pal, 'trns'=>$trns); if($ct>=4) { // Extract alpha channel if(!function_exists('gzuncompress')) $this->Error('Zlib not available, can\'t handle alpha channel: '.$file); $data = gzuncompress($data); $color = ''; $alpha = ''; if($ct==4) { // Gray image $len = 2*$w; for($i=0;$i<$h;$i++) { $pos = (1+$len)*$i; $color .= $data[$pos]; $alpha .= $data[$pos]; $line = substr($data,$pos+1,$len); $color .= preg_replace('/(.)./s','$1',$line); $alpha .= preg_replace('/.(.)/s','$1',$line); } } else { // RGB image $len = 4*$w; for($i=0;$i<$h;$i++) { $pos = (1+$len)*$i; $color .= $data[$pos]; $alpha .= $data[$pos]; $line = substr($data,$pos+1,$len); $color .= preg_replace('/(.{3})./s','$1',$line); $alpha .= preg_replace('/.{3}(.)/s','$1',$line); } } unset($data); $data = gzcompress($color); $info['smask'] = gzcompress($alpha); $this->WithAlpha = true; if($this->PDFVersion<'1.4') $this->PDFVersion = '1.4'; } $info['data'] = $data; return $info; } protected function _readstream($f, $n) { // Read n bytes from stream $res = ''; while($n>0 && !feof($f)) { $s = fread($f,$n); if($s===false) $this->Error('Error while reading stream'); $n -= strlen($s); $res .= $s; } if($n>0) $this->Error('Unexpected end of stream'); return $res; } protected function _readint($f) { // Read a 4-byte integer from stream $a = unpack('Ni',$this->_readstream($f,4)); return $a['i']; } protected function _parsegif($file) { // Extract info from a GIF file (via PNG conversion) if(!function_exists('imagepng')) $this->Error('GD extension is required for GIF support'); if(!function_exists('imagecreatefromgif')) $this->Error('GD has no GIF read support'); $im = imagecreatefromgif($file); if(!$im) $this->Error('Missing or incorrect image file: '.$file); imageinterlace($im,0); ob_start(); imagepng($im); $data = ob_get_clean(); imagedestroy($im); $f = fopen('php://temp','rb+'); if(!$f) $this->Error('Unable to create memory stream'); fwrite($f,$data); rewind($f); $info = $this->_parsepngstream($f,$file); fclose($f); return $info; } protected function _out($s) { // Add a line to the document if($this->state==2) $this->pages[$this->page] .= $s."\n"; elseif($this->state==1) $this->_put($s); elseif($this->state==0) $this->Error('No page has been added yet'); elseif($this->state==3) $this->Error('The document is closed'); } protected function _put($s) { $this->buffer .= $s."\n"; } protected function _getoffset() { return strlen($this->buffer); } protected function _newobj($n=null) { // Begin a new object if($n===null) $n = ++$this->n; $this->offsets[$n] = $this->_getoffset(); $this->_put($n.' 0 obj'); } protected function _putstream($data) { $this->_put('stream'); $this->_put($data); $this->_put('endstream'); } protected function _putstreamobject($data) { if($this->compress) { $entries = '/Filter /FlateDecode '; $data = gzcompress($data); } else $entries = ''; $entries .= '/Length '.strlen($data); $this->_newobj(); $this->_put('<<'.$entries.'>>'); $this->_putstream($data); $this->_put('endobj'); } protected function _putpage($n) { $this->_newobj(); $this->_put('<_put('/Parent 1 0 R'); if(isset($this->PageInfo[$n]['size'])) $this->_put(sprintf('/MediaBox [0 0 %.2F %.2F]',$this->PageInfo[$n]['size'][0],$this->PageInfo[$n]['size'][1])); if(isset($this->PageInfo[$n]['rotation'])) $this->_put('/Rotate '.$this->PageInfo[$n]['rotation']); $this->_put('/Resources 2 0 R'); if(isset($this->PageLinks[$n])) { // Links $annots = '/Annots ['; foreach($this->PageLinks[$n] as $pl) { $rect = sprintf('%.2F %.2F %.2F %.2F',$pl[0],$pl[1],$pl[0]+$pl[2],$pl[1]-$pl[3]); $annots .= '<_textstring($pl[4]).'>>>>'; else { $l = $this->links[$pl[4]]; if(isset($this->PageInfo[$l[0]]['size'])) $h = $this->PageInfo[$l[0]]['size'][1]; else $h = ($this->DefOrientation=='P') ? $this->DefPageSize[1]*$this->k : $this->DefPageSize[0]*$this->k; $annots .= sprintf('/Dest [%d 0 R /XYZ 0 %.2F null]>>',$this->PageInfo[$l[0]]['n'],$h-$l[1]*$this->k); } } $this->_put($annots.']'); } if($this->WithAlpha) $this->_put('/Group <>'); $this->_put('/Contents '.($this->n+1).' 0 R>>'); $this->_put('endobj'); // Page content if(!empty($this->AliasNbPages)) $this->pages[$n] = str_replace($this->AliasNbPages,$this->page,$this->pages[$n]); $this->_putstreamobject($this->pages[$n]); } protected function _putpages() { $nb = $this->page; for($n=1;$n<=$nb;$n++) $this->PageInfo[$n]['n'] = $this->n+1+2*($n-1); for($n=1;$n<=$nb;$n++) $this->_putpage($n); // Pages root $this->_newobj(1); $this->_put('<PageInfo[$n]['n'].' 0 R '; $this->_put($kids.']'); $this->_put('/Count '.$nb); if($this->DefOrientation=='P') { $w = $this->DefPageSize[0]; $h = $this->DefPageSize[1]; } else { $w = $this->DefPageSize[1]; $h = $this->DefPageSize[0]; } $this->_put(sprintf('/MediaBox [0 0 %.2F %.2F]',$w*$this->k,$h*$this->k)); $this->_put('>>'); $this->_put('endobj'); } protected function _putfonts() { foreach($this->FontFiles as $file=>$info) { // Font file embedding $this->_newobj(); $this->FontFiles[$file]['n'] = $this->n; $font = file_get_contents($this->fontpath.$file,true); if(!$font) $this->Error('Font file not found: '.$file); $compressed = (substr($file,-2)=='.z'); if(!$compressed && isset($info['length2'])) $font = substr($font,6,$info['length1']).substr($font,6+$info['length1']+6,$info['length2']); $this->_put('<_put('/Filter /FlateDecode'); $this->_put('/Length1 '.$info['length1']); if(isset($info['length2'])) $this->_put('/Length2 '.$info['length2'].' /Length3 0'); $this->_put('>>'); $this->_putstream($font); $this->_put('endobj'); } foreach($this->fonts as $k=>$font) { // Encoding if(isset($font['diff'])) { if(!isset($this->encodings[$font['enc']])) { $this->_newobj(); $this->_put('<>'); $this->_put('endobj'); $this->encodings[$font['enc']] = $this->n; } } // ToUnicode CMap if(isset($font['uv'])) { if(isset($font['enc'])) $cmapkey = $font['enc']; else $cmapkey = $font['name']; if(!isset($this->cmaps[$cmapkey])) { $cmap = $this->_tounicodecmap($font['uv']); $this->_putstreamobject($cmap); $this->cmaps[$cmapkey] = $this->n; } } // Font object $this->fonts[$k]['n'] = $this->n+1; $type = $font['type']; $name = $font['name']; if($font['subsetted']) $name = 'AAAAAA+'.$name; if($type=='Core') { // Core font $this->_newobj(); $this->_put('<_put('/BaseFont /'.$name); $this->_put('/Subtype /Type1'); if($name!='Symbol' && $name!='ZapfDingbats') $this->_put('/Encoding /WinAnsiEncoding'); if(isset($font['uv'])) $this->_put('/ToUnicode '.$this->cmaps[$cmapkey].' 0 R'); $this->_put('>>'); $this->_put('endobj'); } elseif($type=='Type1' || $type=='TrueType') { // Additional Type1 or TrueType/OpenType font $this->_newobj(); $this->_put('<_put('/BaseFont /'.$name); $this->_put('/Subtype /'.$type); $this->_put('/FirstChar 32 /LastChar 255'); $this->_put('/Widths '.($this->n+1).' 0 R'); $this->_put('/FontDescriptor '.($this->n+2).' 0 R'); if(isset($font['diff'])) $this->_put('/Encoding '.$this->encodings[$font['enc']].' 0 R'); else $this->_put('/Encoding /WinAnsiEncoding'); if(isset($font['uv'])) $this->_put('/ToUnicode '.$this->cmaps[$cmapkey].' 0 R'); $this->_put('>>'); $this->_put('endobj'); // Widths $this->_newobj(); $cw = &$font['cw']; $s = '['; for($i=32;$i<=255;$i++) $s .= $cw[chr($i)].' '; $this->_put($s.']'); $this->_put('endobj'); // Descriptor $this->_newobj(); $s = '<$v) $s .= ' /'.$k.' '.$v; if(!empty($font['file'])) $s .= ' /FontFile'.($type=='Type1' ? '' : '2').' '.$this->FontFiles[$font['file']]['n'].' 0 R'; $this->_put($s.'>>'); $this->_put('endobj'); } else { // Allow for additional types $mtd = '_put'.strtolower($type); if(!method_exists($this,$mtd)) $this->Error('Unsupported font type: '.$type); $this->$mtd($font); } } } protected function _tounicodecmap($uv) { $ranges = ''; $nbr = 0; $chars = ''; $nbc = 0; foreach($uv as $c=>$v) { if(is_array($v)) { $ranges .= sprintf("<%02X> <%02X> <%04X>\n",$c,$c+$v[1]-1,$v[0]); $nbr++; } else { $chars .= sprintf("<%02X> <%04X>\n",$c,$v); $nbc++; } } $s = "/CIDInit /ProcSet findresource begin\n"; $s .= "12 dict begin\n"; $s .= "begincmap\n"; $s .= "/CIDSystemInfo\n"; $s .= "<0) { $s .= "$nbr beginbfrange\n"; $s .= $ranges; $s .= "endbfrange\n"; } if($nbc>0) { $s .= "$nbc beginbfchar\n"; $s .= $chars; $s .= "endbfchar\n"; } $s .= "endcmap\n"; $s .= "CMapName currentdict /CMap defineresource pop\n"; $s .= "end\n"; $s .= "end"; return $s; } protected function _putimages() { foreach(array_keys($this->images) as $file) { $this->_putimage($this->images[$file]); unset($this->images[$file]['data']); unset($this->images[$file]['smask']); } } protected function _putimage(&$info) { $this->_newobj(); $info['n'] = $this->n; $this->_put('<_put('/Subtype /Image'); $this->_put('/Width '.$info['w']); $this->_put('/Height '.$info['h']); if($info['cs']=='Indexed') $this->_put('/ColorSpace [/Indexed /DeviceRGB '.(strlen($info['pal'])/3-1).' '.($this->n+1).' 0 R]'); else { $this->_put('/ColorSpace /'.$info['cs']); if($info['cs']=='DeviceCMYK') $this->_put('/Decode [1 0 1 0 1 0 1 0]'); } $this->_put('/BitsPerComponent '.$info['bpc']); if(isset($info['f'])) $this->_put('/Filter /'.$info['f']); if(isset($info['dp'])) $this->_put('/DecodeParms <<'.$info['dp'].'>>'); if(isset($info['trns']) && is_array($info['trns'])) { $trns = ''; for($i=0;$i_put('/Mask ['.$trns.']'); } if(isset($info['smask'])) $this->_put('/SMask '.($this->n+1).' 0 R'); $this->_put('/Length '.strlen($info['data']).'>>'); $this->_putstream($info['data']); $this->_put('endobj'); // Soft mask if(isset($info['smask'])) { $dp = '/Predictor 15 /Colors 1 /BitsPerComponent 8 /Columns '.$info['w']; $smask = array('w'=>$info['w'], 'h'=>$info['h'], 'cs'=>'DeviceGray', 'bpc'=>8, 'f'=>$info['f'], 'dp'=>$dp, 'data'=>$info['smask']); $this->_putimage($smask); } // Palette if($info['cs']=='Indexed') $this->_putstreamobject($info['pal']); } protected function _putxobjectdict() { foreach($this->images as $image) $this->_put('/I'.$image['i'].' '.$image['n'].' 0 R'); } protected function _putresourcedict() { $this->_put('/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]'); $this->_put('/Font <<'); foreach($this->fonts as $font) $this->_put('/F'.$font['i'].' '.$font['n'].' 0 R'); $this->_put('>>'); $this->_put('/XObject <<'); $this->_putxobjectdict(); $this->_put('>>'); } protected function _putresources() { $this->_putfonts(); $this->_putimages(); // Resource dictionary $this->_newobj(2); $this->_put('<<'); $this->_putresourcedict(); $this->_put('>>'); $this->_put('endobj'); } protected function _putinfo() { $this->metadata['Producer'] = 'FPDF '.FPDF_VERSION; $this->metadata['CreationDate'] = 'D:'.@date('YmdHis'); foreach($this->metadata as $key=>$value) $this->_put('/'.$key.' '.$this->_textstring($value)); } protected function _putcatalog() { $n = $this->PageInfo[1]['n']; $this->_put('/Type /Catalog'); $this->_put('/Pages 1 0 R'); if($this->ZoomMode=='fullpage') $this->_put('/OpenAction ['.$n.' 0 R /Fit]'); elseif($this->ZoomMode=='fullwidth') $this->_put('/OpenAction ['.$n.' 0 R /FitH null]'); elseif($this->ZoomMode=='real') $this->_put('/OpenAction ['.$n.' 0 R /XYZ null null 1]'); elseif(!is_string($this->ZoomMode)) $this->_put('/OpenAction ['.$n.' 0 R /XYZ null null '.sprintf('%.2F',$this->ZoomMode/100).']'); if($this->LayoutMode=='single') $this->_put('/PageLayout /SinglePage'); elseif($this->LayoutMode=='continuous') $this->_put('/PageLayout /OneColumn'); elseif($this->LayoutMode=='two') $this->_put('/PageLayout /TwoColumnLeft'); } protected function _putheader() { $this->_put('%PDF-'.$this->PDFVersion); } protected function _puttrailer() { $this->_put('/Size '.($this->n+1)); $this->_put('/Root '.$this->n.' 0 R'); $this->_put('/Info '.($this->n-1).' 0 R'); } protected function _enddoc() { $this->_putheader(); $this->_putpages(); $this->_putresources(); // Info $this->_newobj(); $this->_put('<<'); $this->_putinfo(); $this->_put('>>'); $this->_put('endobj'); // Catalog $this->_newobj(); $this->_put('<<'); $this->_putcatalog(); $this->_put('>>'); $this->_put('endobj'); // Cross-ref $offset = $this->_getoffset(); $this->_put('xref'); $this->_put('0 '.($this->n+1)); $this->_put('0000000000 65535 f '); for($i=1;$i<=$this->n;$i++) $this->_put(sprintf('%010d 00000 n ',$this->offsets[$i])); // Trailer $this->_put('trailer'); $this->_put('<<'); $this->_puttrailer(); $this->_put('>>'); $this->_put('startxref'); $this->_put($offset); $this->_put('%%EOF'); $this->state = 3; } } ?> PKZ%tSScuadros_imprimir_ingles.phpnu[AddExtGState(array('ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if(!empty($this->extgstates) && $this->PDFVersion<'1.4') $this->PDFVersion='1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach($this->extgstates as $k=>$extgstate) $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction='R') { if ($direction=='R') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',1,0,0,1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='L') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',-1,0,0,-1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='U') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,1,-1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='D') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,-1,1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); else $s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0) { $font_angle+=90+$txt_angle; $txt_angle*=M_PI/180; $font_angle*=M_PI/180; $txt_dx=cos($txt_angle); $txt_dy=sin($txt_angle); $font_dx=cos($font_angle); $font_dy=sin($font_angle); $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',$txt_dx,$txt_dy,$font_dx,$font_dy,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } //**************************************************************************** */ // Tabla coloreada function GenerarCuadro( $bimestre, $id_curso, $nombre_curso) { //FONDO $this->Image('assets/img/logo_ceg_redondo2.png','185','10','17','17','PNG'); //datos encabezado $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(20,10); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20,15); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("Registro de Resultados de Evaluación Bimestral")); $this->setXY(20,20); $this->SetFont('Arial','B',9);$this->Cell(40,10,"del Rendimiento Escolar - Ciclo Escolar 2025"); $this->setXY(160,25); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Bimestre: ".$bimestre); $this->setXY(160,31); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Maestro: ". utf8_decode($_SESSION['CEGS_nombre_corto'])); $this->setXY(160,37); date_default_timezone_set('America/Guatemala'); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Hora: ". date('m-d-Y h:i:s a', time())); $this->setXY(30,55); //datos $consultas=new Imprimir2(); /*$Grado=$consultas->BuscarNG($id_grado); foreach($Grado as $grados){ $this->SetFont('Arial','B',12);$this->Cell(40,10,$grados['nombre_corto']); } */ $this->setXY(20,75); $this->Cell(55,15,'',1,0,'C',false); $this->setXY(20,78); $this->SetFont('Arial','B',6); $this->Cell(40,10,utf8_decode($nombre_curso)); //Empieza la cabecera //Buscamos las actiidades $Actividades=$consultas->buscarActividadesI($id_curso, $bimestre); $cantAct=sizeof($Actividades); $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial','I',6); $this->setXY(78,45); $espaciosEnc=0; foreach($Actividades as $fActividades){ $textoA=$this->TextWithDirection(82+$espaciosEnc,88,utf8_decode($fActividades['nombre']).'('.$fActividades['valor'].' pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $espaciosEnc=$espaciosEnc+6; } $textoA=$this->TextWithDirection(82+$espaciosEnc,88,'Responsabilidad (5 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(88+$espaciosEnc,88,utf8_decode('Desempeño en clase (5 pts)'),'U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(94+$espaciosEnc,88,'Total zona y afectivo (70 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(100+$espaciosEnc,88,'Primer Parcial (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(106+$espaciosEnc,88,'Segundo Parcial (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(112+$espaciosEnc,88,'Mejoramiento (15 pts)','U'); $this->Cell(6,45,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(118+$espaciosEnc,88,utf8_decode('Total exámenes (30 pts)'),'U'); $this->Cell(6,45,$textoA,1,0,'C',false); $this->SetFont('Arial','',7); $this->setXY(78,90); $this->Cell($espaciosEnc,5,'Procedimental',1,0,'C',true); $this->Cell(12,5,'Afectivo',1,0,'C',true); $this->Cell(6,10,'',1,0,'C',true); $this->Cell(24,5,'Cognositivo',1,0,'C',true); $this->SetFont('Arial','',7); $this->setXY(17,95); $this->Cell(5,5,'No',1,0,'C',true); $this->Cell(8,5,'Carnet',1,0,'C',true); $this->Cell(48,5,'Apellidos y nombres del alumno',1,0,'C',true); for($i=0; $i<$cantAct; $i++){ $this->Cell(6,5,$i+1,1,0,'C',true); } $this->Cell(6,5,'1',1,0,'C',true); $this->Cell(6,5,'2',1,0,'C',true); $this->Cell(6,5,'T',1,0,'C',true); $this->Cell(6,5,'1',1,0,'C',true); $this->Cell(6,5,'2',1,0,'C',true); $this->Cell(6,5,'3',1,0,'C',true); $this->Cell(6,5,'T',1,0,'C',true); $this->Cell(6,5,'F',1,0,'C',true); $this->Ln(); //Buscar los datos $datosNotas=$consultas->buscarRegistroNotasI($id_curso, $bimestre); if($datosNotas){ $contadorRojo=0; $contadorAmarillo=0; $contadorVerde=0; $notaMayor=0; $notaMenor=100; $totalAlumnos=0; $promedio=0; $totalNotaTodos=0; $contador=1; $carnetValidar=""; $auxGeneral=0; $contadorSalto=0; $totalZona=0; $posicionY=95.5; $punteoAux=0; foreach($datosNotas as $fila){ if($carnetValidar!=$fila['carnet']){ $totalZona=0; $this->SetFont('Arial','I',6); $this->setX(17); $this->Cell(5,5,$contador,1,0,'C',false); $this->Cell(8,5,$fila['carnet'],1,0,'C',false); $this->SetFont('Arial','I',7); $this->Cell(48,5,utf8_decode($fila['apellidos'].', '.$fila['nombres']),1,0,'L',false); if($fila['punteo']=="" || $fila['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila['punteo']); $contador++; $contadorSalto++; if($contadorSalto==($cantAct+6)){ $this->Ln(); $contadorSalto=0; } }else{ if($fila['punteo']=="" || $fila['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila['punteo']); $contadorSalto++; if(isset($datosNotas[$auxGeneral+1])){ if($datosNotas[$auxGeneral]['carnet']!=$datosNotas[$auxGeneral+1]['carnet']){ $notaSecundaria=$consultas->buscarNSI($fila['carnet'], $id_curso, $bimestre); if($notaSecundaria){ $contadorTotal=0; $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; $notaFinal=0; foreach($notaSecundaria as $fila2){ if($contadorTotal==2){ $this->Cell(6,5,$totalZona,1,0,'C',true); } if($contadorTotal==2){ $primerP=intval($fila2['punteo']); } if($contadorTotal==3){ $segundoP=intval($fila2['punteo']); } if($contadorTotal==4){ $mejoramiento=intval($fila2['punteo']); } if($contadorTotal==5){ if($primerP>$segundoP){ if($segundoP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$mejoramiento; }else{ $totalEval=$primerP+$mejoramiento; } } }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($segundoP>$mejoramiento){ $totalEval=$segundoP+$mejoramiento; }else{ $totalEval=$segundoP+$mejoramiento; } } } $this->Cell(6,5,$totalEval,1,0,'C',true); $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; } if($fila2['punteo']=="" || $fila2['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila2['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila2['punteo']); $contadorSalto++; $contadorTotal++; $notaFinal=$fila2['punteo']; } $posicionX=128+$espaciosEnc; $posicionY+=5; if ($notaFinal<60){ $this->Image('assets/img/incorrecto.png',$posicionX,$posicionY,'4','4','PNG'); $contadorRojo++; }elseif($notaFinal<70){ $this->Image('assets/img/advertencia.png',$posicionX,$posicionY,'4','4','PNG'); $contadorAmarillo++; }else{ $this->Image('assets/img/check.png',$posicionX,$posicionY,'4','4','PNG'); $contadorVerde++; } if($notaFinal>$notaMayor){ $notaMayor=$notaFinal; } if($notaFinal<$notaMenor){ $notaMenor=$notaFinal; } $totalAlumnos++; $totalNotaTodos+=$notaFinal; $this->Ln(); } } }else{ $notaSecundaria=$consultas->buscarNSI($fila['carnet'], $id_curso, $bimestre); if($notaSecundaria){ $contadorTotal=0; $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; $notaFinal=0; foreach($notaSecundaria as $fila2){ if($contadorTotal==2){ $this->Cell(6,5,$totalZona,1,0,'C',true); } if($contadorTotal==2){ $primerP=intval($fila2['punteo']); } if($contadorTotal==3){ $segundoP=intval($fila2['punteo']); } if($contadorTotal==4){ $mejoramiento=intval($fila2['punteo']); } if($contadorTotal==5){ if($primerP>$segundoP){ if($segundoP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$mejoramiento; }else{ $totalEval=$primerP+$mejoramiento; } } }else{ if($primerP>$mejoramiento){ $totalEval=$primerP+$segundoP; }else{ if($segundoP>$mejoramiento){ $totalEval=$segundoP+$mejoramiento; }else{ $totalEval=$segundoP+$mejoramiento; } } } $this->Cell(6,5,$totalEval,1,0,'C',true); $totalEval=0; $primerP=0; $segundoP=0; $mejoramiento=0; } if($fila2['punteo']=="" || $fila2['punteo']==null){ $punteoAux=0; }else{ $punteoAux=$fila2['punteo']; } $this->Cell(6,5,$punteoAux,1,0,'C',false); $totalZona+=intval($fila2['punteo']); $contadorSalto++; $contadorTotal++; $notaFinal=$fila2['punteo']; } $posicionX=128+$espaciosEnc; $posicionY+=5; if ($notaFinal<60){ $this->Image('assets/img/incorrecto.png',$posicionX,$posicionY,'4','4','PNG'); $contadorRojo++; }elseif($notaFinal<70){ $this->Image('assets/img/advertencia.png',$posicionX,$posicionY,'4','4','PNG'); $contadorAmarillo++; }else{ $this->Image('assets/img/check.png',$posicionX,$posicionY,'4','4','PNG'); $contadorVerde++; } if($notaFinal>$notaMayor){ $notaMayor=$notaFinal; } if($notaFinal<$notaMenor){ $notaMenor=$notaFinal; } $totalAlumnos++; $totalNotaTodos+=$notaFinal; $this->Ln(); } } } $carnetValidar=$fila['carnet']; $auxGeneral++; } $this->setXY(20,295); $this->Cell(40,3,"Total Alumnos evaluados: ".$totalAlumnos,1,0,'C',false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "Criterio",1,0,"L",true); $this->Cell(15,3, "No.",1,0,"L",true); $this->Cell(15,3, "%.",1,0,"L",true);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 0 a 59",1,0,"L",false); $this->Cell(15,3, $contadorRojo,1,0,"L",false); $this->Cell(15,3, round(($contadorRojo*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 60 a 69",1,0,"L",false); $this->Cell(15,3, $contadorAmarillo,1,0,"L",false); $this->Cell(15,3, round(($contadorAmarillo*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, "De 70 a 100",1,0,"L",false); $this->Cell(15,3, $contadorVerde,1,0,"L",false); $this->Cell(15,3, round(($contadorVerde*100)/$totalAlumnos,0)."%",1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, utf8_decode("Nota Máxima"),1,0,"L",false); $this->Cell(15,3, $notaMayor,1,0,"L",false);$this->Ln(); $this->setX(20); $this->Cell(40,3, utf8_decode("Nota Mínima"),1,0,"L",false); $this->Cell(15,3, $notaMenor,1,0,"L",false);$this->Ln(); $this->setX(20); //calcular el promedio $promedio=round($totalNotaTodos/$totalAlumnos,0); $this->Cell(40,3, "Nota Promedio",1,0,"L",false); $this->Cell(15,3, $promedio,1,0,"L",false); } } } ?>PKZJ0J0cuadros_ingles.phpnu[AddExtGState(array('ca'=>$alpha, 'CA'=>$alpha, 'BM'=>'/'.$bm)); $this->SetExtGState($gs); } function AddExtGState($parms) { $n = count($this->extgstates)+1; $this->extgstates[$n]['parms'] = $parms; return $n; } function SetExtGState($gs) { $this->_out(sprintf('/GS%d gs', $gs)); } function _enddoc() { if(!empty($this->extgstates) && $this->PDFVersion<'1.4') $this->PDFVersion='1.4'; parent::_enddoc(); } function _putextgstates() { for ($i = 1; $i <= count($this->extgstates); $i++) { $this->_newobj(); $this->extgstates[$i]['n'] = $this->n; $this->_put('<extgstates[$i]['parms']; $this->_put(sprintf('/ca %.3F', $parms['ca'])); $this->_put(sprintf('/CA %.3F', $parms['CA'])); $this->_put('/BM '.$parms['BM']); $this->_put('>>'); $this->_put('endobj'); } } function _putresourcedict() { parent::_putresourcedict(); $this->_put('/ExtGState <<'); foreach($this->extgstates as $k=>$extgstate) $this->_put('/GS'.$k.' '.$extgstate['n'].' 0 R'); $this->_put('>>'); } function _putresources() { $this->_putextgstates(); parent::_putresources(); } //girar texto function TextWithDirection($x, $y, $txt, $direction='R') { if ($direction=='R') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',1,0,0,1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='L') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',-1,0,0,-1,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='U') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,1,-1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); elseif ($direction=='D') $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',0,-1,1,0,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); else $s=sprintf('BT %.2F %.2F Td (%s) Tj ET',$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } function TextWithRotation($x, $y, $txt, $txt_angle, $font_angle=0) { $font_angle+=90+$txt_angle; $txt_angle*=M_PI/180; $font_angle*=M_PI/180; $txt_dx=cos($txt_angle); $txt_dy=sin($txt_angle); $font_dx=cos($font_angle); $font_dy=sin($font_angle); $s=sprintf('BT %.2F %.2F %.2F %.2F %.2F %.2F Tm (%s) Tj ET',$txt_dx,$txt_dy,$font_dx,$font_dy,$x*$this->k,($this->h-$y)*$this->k,$this->_escape($txt)); if ($this->ColorFlag) $s='q '.$this->TextColor.' '.$s.' Q'; $this->_out($s); } //**************************************************************************** */ // Tabla coloreada function GenerarCuadro($id_clase_ingles) { //FONDO $this->Image('assets/img/logo_ceg_redondo2.png','185','10','17','17','PNG'); //datos del alumno $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(20,10); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("CENTRO EDUCATIVO GETSEMANÍ")); $this->setXY(20,15); $this->SetFont('Arial','B',9);$this->Cell(40,10,utf8_decode("Registro de Resultados de Evaluación Bimestral")); $this->setXY(20,20); $this->SetFont('Arial','B',9);$this->Cell(40,10,"del Rendimiento Escolar - Ciclo Escolar 2025"); $this->setXY(140,30); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Bimestre: _________________________"); $this->setXY(140,36); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Maestro: _________________________"); $this->setXY(140,42); $this->SetFont('Arial','B',9);$this->Cell(40,10,"Hora: _________________________"); $this->setXY(12,73); //datos $consultas=new Grados2(); $Ingles=$consultas->BuscarNI($id_clase_ingles); foreach($Ingles as $datosIngles){ $this->SetFont('Arial','B',9);$this->Cell(40,10,$datosIngles['nombre']); } $this->setXY(10,70); $this->Cell(55,15,'',1,0,'C',false); //Empieza la cabecera $this->SetFillColor(225,228,242); $this->SetTextColor(0,0,0); $this->SetDrawColor(0, 0, 0); $this->SetFont('Arial','I',6); $this->setXY(68,55); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $this->Cell(7,40,'',1,0,'C',false); $textoA=$this->TextWithDirection(156,88,'Responsabilidad (5 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(163,88,utf8_decode('Desempeño en clase (5 pts)'),'U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(170,88,'Total zona y afectivo (70 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(177,88,'Primer Parcial (15 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(184,88,'Segundo Parcial (15 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(191,88,'Mejoramiento (15 pts)','U'); $this->Cell(7,40,$textoA,1,0,'C',false); $textoA=$this->TextWithDirection(198,88,utf8_decode('Total exámenes (30 pts)'),'U'); $this->Cell(7,40,$textoA,1,0,'C',false); $this->SetFont('Arial','',7); $this->setXY(68,90); $this->Cell(84,5,'Procedimental',1,0,'C',true); $this->Cell(14,5,'Afectivo',1,0,'C',true); $this->Cell(7,10,'',1,0,'C',true); $this->Cell(28,5,'Cognositivo',1,0,'C',true); $this->SetFont('Arial','',7); $this->setXY(7,95); $this->Cell(5,5,'No',1,0,'C',true); $this->Cell(8,5,'Carnet',1,0,'C',true); $this->Cell(48,5,'Apellidos y nombres del alumno',1,0,'C',true); $this->Cell(7,5,'1',1,0,'C',true); $this->Cell(7,5,'2',1,0,'C',true); $this->Cell(7,5,'3',1,0,'C',true); $this->Cell(7,5,'4',1,0,'C',true); $this->Cell(7,5,'5',1,0,'C',true); $this->Cell(7,5,'6',1,0,'C',true); $this->Cell(7,5,'7',1,0,'C',true); $this->Cell(7,5,'8',1,0,'C',true); $this->Cell(7,5,'9',1,0,'C',true); $this->Cell(7,5,'10',1,0,'C',true); $this->Cell(7,5,'11',1,0,'C',true); $this->Cell(7,5,'12',1,0,'C',true); $this->Cell(7,5,'1',1,0,'C',true); $this->Cell(7,5,'2',1,0,'C',true); $this->Cell(7,5,'T',1,0,'C',true); $this->Cell(7,5,'1',1,0,'C',true); $this->Cell(7,5,'2',1,0,'C',true); $this->Cell(7,5,'3',1,0,'C',true); $this->Cell(7,5,'T',1,0,'C',true); $this->Cell(7,5,'F',1,0,'C',true); $this->Ln(); //Buscar los datos $datosAlumnos=$consultas->buscarAlumnoI($id_clase_ingles); $this->SetWidths(array(5,8,48,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7)); $ajuste=0; if($datosAlumnos){ $this->SetFont('Arial','I',7.5); $contador=1; $this->SetFont('Arial','I',7.5); foreach($datosAlumnos as $fila){ $this->setX(7); $this->Row(array($contador,$fila['carnet'],$fila['apellidos'].', '.$fila['nombres'].' - '.$fila['nombre_corto'],'','','','','','','','','','','','','','','','','','','',''), $contador); //$this->Cell(5,5,$contador,1,0,'C',false); //$this->Cell(8,5,$fila['carnet'],1,0,'C',false); //$this->SetFont('Arial','I',7); /* $this->Cell(48,5,utf8_decode($fila['apellidos'].', '.$fila['nombres']),1,0,'L',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',true); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',false); $this->Cell(7,5,'',1,0,'C',true); $this->Cell(7,5,'',1,0,'C',false); $this->Ln(); */ $contador++; } } } /* PARA MULTICELL*/ var $widths; var $aligns; function SetWidths($w) { //Set the array of column widths $this->widths=$w; } function SetAligns($a) { //Set the array of column alignments $this->aligns=$a; } function Row($data, $contador) { //Calculate the height of the row $nb=0; for($i=0;$iNbLines($this->widths[$i],$data[$i])); $h=4*$nb; //Issue a page break first if needed $this->CheckPageBreak($h); //Draw the cells of the row for($i=0;$iwidths[$i]; $a=isset($this->aligns[$i]) ? $this->aligns[$i] : 'L'; //Save the current position $x=$this->GetX(); $y=$this->GetY(); //Draw the border $this->Rect($x,$y,$w,$h); //Print the text $this->MultiCell($w,4,$data[$i],0,$a); //Put the position to the right of the cell $this->SetXY($x+$w,$y); } //Go to the next line $this->Ln($h); } function CheckPageBreak($h) { $h=$h-500; //If the height h would cause an overflow, add a new page immediately if($this->GetY()+$h>$this->PageBreakTrigger) $this->AddPage($this->CurOrientation); } function NbLines($w,$txt) { //Computes the number of lines a MultiCell of width w will take $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 and $s[$nb-1]=="\n") $nb--; $sep=-1; $i=0; $j=0; $l=0; $nl=1; while($i<$nb) { $c=$s[$i]; if($c=="\n") { $i++; $sep=-1; $j=$i; $l=0; $nl++; continue; } if($c==' ') $sep=$i; $l+=$cw[$c]; if($l>$wmax) { if($sep==-1) { if($i==$j) $i++; } else $i=$sep+1; $sep=-1; $j=$i; $l=0; $nl++; } else $i++; } return $nl; } /* PARA MULTICELL*/ } ?>PKZ/reporte_inscripcion.phpnu[Image('assets/img/resumen inscripcion.jpg','0','0','216','280','JPG'); //datos del alumno $this->SetFont('Arial','',15); $this->SetTextColor(20); $this->setXY(90,68); $this->SetFont('Arial','B',12);$this->Cell(40,10,"DATOS ALUMNO"); $this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(16,6,"Carnet: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,$datosAlumno[0]['carnet']);$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(22,6,"Nombres: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,utf8_decode($datosAlumno[0]['nombres']));$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(22,6,"Apellidos: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,utf8_decode($datosAlumno[0]['apellidos']));$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(40,6,"Fecha Nacimiento: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,$datosAlumno[0]['fecha_nac']);$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(18,6,utf8_decode("Género:"));$this->SetFont('Arial','',12);;$this->Cell(40,6,$datosAlumno[0]['genero']);$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(12,6,"Plan: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,$datosAlumno[0]['plan']);$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(33,6,"Correo alumno: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,$datosAlumno[0]['correo_alumno']);$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(43,6,"Correo institucional: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,$datosAlumno[0]['gsuite']);$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(16,6,"Grado: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,utf8_decode($datosAlumno[0]['nombre']));$this->Ln(); $this->Ln(); $cant_padres=sizeof($datosPadres); if($cant_padres<2){ $telefonos=""; $correos=""; $consultas=new Encargados2(); $datosTelefonos=$consultas->buscarTelefonos($datosPadres[0]['id_encargado']); foreach($datosTelefonos as $filaT){ $telefonos.=$filaT['telefono']." / "; } $datosCorreos=$consultas->buscarCorreos($datosPadres[0]['id_encargado']); foreach($datosCorreos as $filaC){ $correos.=$filaC['correo']." / "; } $this->setX(90); $this->SetFont('Arial','B',12);$this->Cell(40,10,"DATOS ENCARGADO");$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(20,6,"Nombre: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,utf8_decode($datosPadres[0]['nombre_completo']));$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(23,6,utf8_decode("Dirección: "));$this->SetFont('Arial','',12);;$this->Cell(40,6,utf8_decode($datosPadres[0]['direccion']));$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(25,6,"Parentesco: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,utf8_decode($datosPadres[0]['parentesco'])); $this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(25,6,"Telefono(s): ");$this->SetFont('Arial','',12);;$this->Cell(40,6,$telefonos);$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(22,6,"Correo(s): ");$this->SetFont('Arial','',12);;$this->Cell(40,6,$correos);$this->Ln(); }else{ $telefonos=""; $correos=""; $consultas=new Encargados2(); $datosTelefonos=$consultas->buscarTelefonos($datosPadres[0]['id_encargado']); foreach($datosTelefonos as $filaT){ $telefonos.=$filaT['telefono']." / "; } $datosCorreos=$consultas->buscarCorreos($datosPadres[0]['id_encargado']); foreach($datosCorreos as $filaC){ $correos.=$filaC['correo']." / "; } $telefonos2=""; $correos2=""; $consultas=new Encargados2(); $datosTelefonos2=$consultas->buscarTelefonos($datosPadres[1]['id_encargado']); foreach($datosTelefonos2 as $filaT){ $telefonos2.=$filaT['telefono']." / "; } $datosCorreos2=$consultas->buscarCorreos($datosPadres[1]['id_encargado']); foreach($datosCorreos2 as $filaC){ $correos2.=$filaC['correo']." / "; } $this->setX(35); $this->SetFont('Arial','B',12);$this->Cell(40,10,"DATOS ENCARGADO 1"); $this->setX(125);$this->SetFont('Arial','B',12); $this->Cell(40,10,"DATOS ENCARGADO 2"); $this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(20,6,"Nombre: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,utf8_decode($datosPadres[0]['nombre_completo'])); $this->setX(110);$this->SetFont('Arial','B',12); $this->Cell(20,6,"Nombre: "); $this->SetFont('Arial','',12);;$this->Cell(40,6,utf8_decode($datosPadres[1]['nombre_completo']));$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(23,6,utf8_decode("Dirección: "));$this->SetFont('Arial','',12);;$this->Cell(40,6,substr(utf8_decode($datosPadres[0]['direccion']),0,35)); $this->setX(110);$this->SetFont('Arial','B',12); $this->Cell(23,6,utf8_decode("Dirección: ")); ;$this->SetFont('Arial','',12);;$this->Cell(40,6,substr(utf8_decode($datosPadres[1]['direccion']),0,35));$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(25,6,"Parentesco: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,"Padre"); $this->setX(110);$this->SetFont('Arial','B',12); $this->Cell(25,6,"Parentesco: "); $this->SetFont('Arial','',12);;$this->Cell(40,6,"Padre");$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(25,6,"Telefono(s): ");$this->SetFont('Arial','',12);;$this->Cell(40,6,substr($telefonos,0,35)); $this->setX(110);$this->SetFont('Arial','B',12); $this->Cell(25,6,"Telefono(s): "); $this->SetFont('Arial','',12);;$this->Cell(40,6,substr($telefonos2,0,35));$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(22,6,"Correo(s): ");$this->SetFont('Arial','',12);;$this->Cell(40,6,substr($correos,0,35)); $this->setX(110);$this->SetFont('Arial','B',12); $this->Cell(22,6,"Correo(s): ");$this->SetFont('Arial','',12);;$this->Cell(40,6,substr($correos2,0,35)); $this->Ln(); } $this->Ln(); $this->setX(80); $this->SetFont('Arial','B',12);$this->Cell(40,10,"DATOS PORTAL ESTUDIANTE");$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(18,6,"Usuario: ");$this->SetFont('Arial','',12);;$this->Cell(40,6,$datosAlumno[0]['gsuite']);$this->Ln(); $this->SetFont('Arial','B',12);$this->Cell(25,6,utf8_decode("Contraseña: "));$this->SetFont('Arial','',12);$this->Cell(40,6,$datosAlumno[0]['carnet'].$datosAlumno[0]['carnet']);$this->Ln(); $this->Ln(); $this->SetFont('Arial','B',12); $this->Cell(25,6,utf8_decode("NOTA: Para poder activar el correo institucional:"));$this->Ln(); $this->SetTextColor(3, 9, 168);$this->SetFont('Arial','U',12);$this->Cell(25,6,utf8_decode("https://www.youtube.com/watch?v=GtkgYjl5E5g"));$this->Ln(); $this->SetTextColor(0, 0, 0);$this->SetFont('Arial','B',12);$this->Cell(25,6,utf8_decode("Portal para ver notas:"));$this->Ln(); $this->SetTextColor(3, 9, 168);$this->SetFont('Arial','U',12);$this->Cell(25,6,utf8_decode("https://youtu.be/X3ZUx7MaXhA"));$this->Ln(); $this->SetFont('Arial','',12); } } ?>PKZ҇*KK license.txtnu[PKZEP`$`$ changelog.htmnu[PKZaJ|GTGT#&cuadros_imprimir2.phpnu[PKZ;y*y*zmakefont/makefont.phpnu[PKZOUmmakefont/iso-8859-16.mapnu[PKZiUooƷmakefont/iso-8859-5.mapnu[PKZcQ|makefont/cp1250.mapnu[PKZMFAmakefont/koi8-u.mapnu[PKZRRGmakefont/cp1257.mapnu[PKZ@emakefont/iso-8859-1.mapnu[PKZayQQ makefont/iso-8859-11.mapnu[PKZL%makefont/cp874.mapnu[PKZ+%6makefont/cp1253.mapnu[PKZ|a NNGmakefont/iso-8859-7.mapnu[PKZjYmakefont/cp1258.mapnu[PKZ|jmakefont/iso-8859-15.mapnu[PKZ.TGTG}makefont/ttfparser.phpnu[PKZ /makefont/cp1255.mapnu[PKZRmakefont/iso-8859-9.mapnu[PKZ2gmakefont/iso-8859-4.mapnu[PKZlbDmakefont/iso-8859-2.mapnu[PKZq.d makefont/cp1254.mapnu[PKZZ]Rmakefont/koi8-r.mapnu[PKZlt1makefont/cp1252.mapnu[PKZ!/Cmakefont/cp1251.mapnu[PKZ{LbW/e/e VR_Sabanas.phpnu[PKZ^%%ocuadros_taller.phpnu[PKZAF>e22 oinstall.txtnu[PKZO;;fpdf.cssnu[PKZe yyOBoletaNotas2025.phpnu[PKZnљ' ?cerror_lognu[PKZײIIIoBoletaNotas2022.phpnu[PKZ| ]font/times.phpnu[PKZD^font/courierb.phpnu[PKZձ^font/courieri.phpnu[PKZo@C afont/timesi.phpnu[PKZ  bfont/helveticab.phpnu[PKZB nfont/timesbi.phpnu[PKZl wfont/timesb.phpnu[PKZ:N}font/courierbi.phpnu[PKZ ?q font/helveticai.phpnu[PKZYۺfont/courier.phpnu[PKZFK font/helveticabi.phpnu[PKZ"? "font/zapfdingbats.phpnu[PKZf;0font/symbol.phpnu[PKZe }Bfont/helvetica.phpnu[PKZH`2`2Pcuadros_imprimir_tallerTT.phpnu[PKZx 1Factura.phpnu[PKZWcuadros_ingles_por_curso.phpnu[PKZr%r% scuadros.phpnu[PKZYβG doc/setcompression.htmnu[PKZ:;tSS Xdoc/getx.htmnu[PKZ doc/image.htmnu[PKZqDV>>doc/getpagewidth.htmnu[PKZH„~;; gdoc/rect.htmnu[PKZFP??doc/setfillcolor.htmnu[PKZ77adoc/addfont.htmnu[PKZ ?eO O #Bdoc/addpage.htmnu[PKZTKdoc/setsubject.htmnu[PKZ)@@Odoc/getpageheight.htmnu[PKZ# LL hRdoc/link.htmnu[PKZ,Uww Wdoc/error.htmnu[PKZVyy[doc/settopmargin.htmnu[PKZsI{{a_doc/__construct.htmnu[PKZ5  hdoc/setfont.htmnu[PKZ'nudoc/acceptpagebreak.htmnu[PKZN#&&|doc/pageno.htmnu[PKZj6 *doc/close.htmnu[PKZJIoo=doc/setdrawcolor.htmnu[PKZwS doc/index.htmnu[PKZDtrrdoc/footer.htmnu[PKZ ttțdoc/setautopagebreak.htmnu[PKZ` doc/text.htmnu[PKZ6gvdoc/aliasnbpages.htmnu[PKZg#doc/setleftmargin.htmnu[PKZ "++ doc/ln.htmnu[PKZsudoc/getstringwidth.htmnu[PKZrrdoc/header.htmnu[PKZn@ Ϲdoc/sety.htmnu[PKZX."zzdoc/setrightmargin.htmnu[PKZbdoc/setfontsize.htmnu[PKZ8d.. doc/setx.htmnu[PKZ Edoc/settitle.htmnu[PKZ?IIDdoc/setdisplaymode.htmnu[PKZT\doc/setlinewidth.htmnu[PKZ{{ doc/setxy.htmnu[PKZPƩcuadros_ingles_parcial.phpnu[PKZ鲅DD letras.phpnu[PKZl3GTGT<cuadros_imprimir.phpnu[PKZXY?VTVT_cuadros_imprimir_inglesTI.phpnu[PKZĆSXXBoletaNotas2023.phpnu[PKZB{33>tutorial/tuto2.phpnu[PKZ>\XBtutorial/makefont.phpnu[PKZ&&*Ctutorial/tuto4.htmnu[PKZ_jtutorial/20k_c1.txtnu[PKZ *tutorial/tuto6.phpnu[PKZEB B Ytutorial/tuto4.phpnu[PKZPX?ݓtutorial/tuto2.htmnu[PKZxMe e tutorial/tuto5.phpnu[PKZ 1{11ƴtutorial/tuto5.htmnu[PKZd\tutorial/tuto7.phpnu[PKZcTTtutorial/calligra.ttfnu[PKZX 0WWQtutorial/calligra.znu[PKZTatutorial/tuto1.phpnu[PKZ:Dtutorial/tuto3.phpnu[PKZvhtutorial/paises.txtnu[PKZư.cctutorial/index.htmnu[PKZȧ>tutorial/20k_c2.txtnu[PKZ//  tutorial/tuto6.htmnu[PKZ?2#2#6 tutorial/tuto3.htmnu[PKZqXE E FZ tutorial/logo.pngnu[PKZXFCssc tutorial/calligra.phpnu[PKZ[br tutorial/tuto1.htmnu[PKZ6_#_#z tutorial/tuto7.htmnu[PKZ2Kyy BoletaNotas2024.phpnu[PKZ>-- $ FAQ.htmnu[PKZH*R fpdf.phpnu[PKZ%tSS| cuadros_imprimir_ingles.phpnu[PKZJ0J0i cuadros_ingles.phpnu[PKZ/ reporte_inscripcion.phpnu[PKw*t