Nunca les ha pasado que cuando están desarrollando sus aplicaciones, de pronto les surge un problema que ya habían solucionado anteriormente, pero no recuerdan como? En este BLOG publicare esas cosas que considero importantes documentar y almacenar, esto me ayudara en un futuro para no tener que resolver dos veces el mismo problema... y si esta misma información le puede ayudar a alguien mas. Excelente!
jueves, 10 de mayo de 2018
Estudio, análisis y puesta en marcha de Web Service
miércoles, 30 de agosto de 2017
FPDF construir y mostrar textos HTML
Cuando se trabaja con la creación de fpdf en nuestra web lo primero que nos llega a la mente es FPDF, sin embargo es un lió crear un simple texto con esta herramienta, ya que su desplazamiento y cuadros de texto los maneja a través de celdas.
por ejemplo si quisiera crear un pequeño reporte:
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;
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
Suscribirse a:
Entradas (Atom)
Interfaz fpga - cloud computing
Interfaz fpga - cloud computing Ing. Alfonso Medina Duran 4lfonsomedina@gmail.com Proyecto para la materia de Sistemas Inteligent...
-
Cuando se trabaja con la creación de fpdf en nuestra web lo primero que nos llega a la mente es FPDF , sin embargo es un lió crear un simpl...
-
Interfaz fpga - cloud computing Ing. Alfonso Medina Duran 4lfonsomedina@gmail.com Proyecto para la materia de Sistemas Inteligent...
-
Uso de repositorios para el desarrollo de aplicaciones WEB Resumen Dentro del mundo de la programación web se pueden encontrar n...








