por ejemplo si quisiera crear un pequeño reporte:
habilidades-web.blogspot.com
30/08/2017
Se extiende la siguiente constancia a:
Ing. Alfonso Medina Duran
Por medio de la presente se informa que al empleado Alfonso Medina Duran con numero
de empleado 1234 le es autorizado salir de vacaciones un total de 10 dias, los cuales serán aplicados a partir del día 31/08/2017
_________________________________
Firma de quien autoriza
Para el cual primeramente pensaria en utilizar un multicell, sin embarco al momento de incluir la mezcla de fuente negrita con normal, no seria posible, tendríamos que utilizar cell normal e identificar las coordenadas donde irían las palabras en negritas.... un caos.
Con las siguientes funciones que nos provee los mismos tutoriales de fpdf este reporte se vuelve super sencillo solo construyendo el texto con las etiquetas correspondientes, este caso practico tenemos que usar <b>Alfonso Medina Duran</b> para que aparezca con letra negrita con la función WriteHTML.
<?php
require('fpdf.php');
class PDF extends FPDF{
protected $B = 0;
protected $I = 0;
protected $U = 0;
protected $HREF = '';
function WriteHTML($html){
// Intérprete 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 = 'Por medio de la presente se informa que al empleado <b>Alfonso Medina Duran</b> con numero de empleado <b>1234</b> le es autorizado salir de vacaciones un total de <b>10 dias</b>, los cuales serán aplicados a partir del día <b>31/08/2017</b>';
$pdf = new PDF();
$pdf->AddPage();
$pdf->SetLeftMargin(45);
$pdf->SetFontSize(14);
$pdf->WriteHTML($html);
$pdf->Output();
?>
$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 = 'Por medio de la presente se informa que al empleado <b>Alfonso Medina Duran</b> con numero de empleado <b>1234</b> le es autorizado salir de vacaciones un total de <b>10 dias</b>, los cuales serán aplicados a partir del día <b>31/08/2017</b>';
$pdf = new PDF();
$pdf->AddPage();
$pdf->SetLeftMargin(45);
$pdf->SetFontSize(14);
$pdf->WriteHTML($html);
$pdf->Output();
?>
Fuente
http://www.fpdf.org/es/tutorial/tuto6.htm
Cualquier duda o aclaración, estaré para servirte
Ing. Alfonso Medina
No hay comentarios.:
Publicar un comentario