Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Incluir Transparency en FPDF

Estas en el tema de Incluir Transparency en FPDF en el foro de PHP en Foros del Web. Hola estimados programadores! Les escribo porque tengo la siguiente complicación. Estoy usando la librería FPDF para generar un reporte X. Ese reporte lleva un logo ...
  #1 (permalink)  
Antiguo 12/11/2019, 12:38
 
Fecha de Ingreso: agosto-2015
Ubicación: Chile
Mensajes: 7
Antigüedad: 8 años, 8 meses
Puntos: 0
Pregunta Incluir Transparency en FPDF

Hola estimados programadores!

Les escribo porque tengo la siguiente complicación. Estoy usando la librería FPDF para generar un reporte X. Ese reporte lleva un logo en la esquina superior izquierda (ningun problema) y lleva el mismo logo como fondo de la hoja, por lo que recurrí a la extensión Transparency ([URL="http://www.fpdf.org/en/script/script74.php"]http://www.fpdf.org/en/script/script74.php[/URL]), sin embargo, no logro hacer que funcione correctamente ya que me arroja el siguiente error.

Código:
Warning: include(helveticab.php): failed to open stream: No such file or directory in /Applications/XAMPP/xamppfiles/lib/php/fpdf.php on line 1145

Warning: include(): Failed opening 'helveticab.php' for inclusion (include_path='.:/Applications/XAMPP/xamppfiles/lib/php') in /Applications/XAMPP/xamppfiles/lib/php/fpdf.php on line 1145
FPDF error: Could not include font definition file
Trabajo en un Macbook pro con XAMPP y Dreamweaver

Les adjunto el código que uso:

Código PHP:
require('../include/fpdf/alphapdf.php');
class 
PDF extends AlphaPDF
{
// Cabecera de página
function Header()
{
    
// Logo
    
$this->Image('../data/clnlog/logo_vertical.png',10,11,23);
    
// Arial bold 15
    
$this->SetFont('Arial','B',10);
    
$this->SetTextColor(40,50,100);
    
// Movernos a la derecha
    
$this->Cell(25);
    
// Título
    
$this->Cell(0,4,utf8_decode('Nombre'),0,1,'L');
    
// Arial bold 15
    
$this->SetFont('Arial','I',8);
    
$this->SetTextColor(0,0,0);
    
// Movernos a la derecha
    
$this->Cell(25);
    
//Grado académico
    
$this->Cell(0,4,utf8_decode('Grado'),0,1,'L');
    
// Arial bold 15
    
$this->SetFont('Arial','I',8);
    
// Movernos a la derecha
    
$this->Cell(25);
    
//Grado académico
    
$this->Cell(0,4,utf8_decode('CV Corto'),0,1,'L');
    
// Arial bold 15
    
$this->SetFont('Arial','B',10);
    
$this->SetTextColor(40,50,100);
    
// Movernos a la derecha
    
$this->Cell(25);
    
// Espacio
    
$this->Cell(0,4,utf8_decode(''),0,1,'L');
    
// Movernos a la derecha
    
$this->Cell(25);
    
// Título
    
$this->Cell(0,4,utf8_decode('Lugar'),0,1,'L');
    
// Arial bold 15
    
$this->SetFont('Arial','I',8);
    
$this->SetTextColor(0,0,0);
    
// Movernos a la derecha
    
$this->Cell(25);
    
//Info-Clinica
    
$this->Cell(0,4,utf8_decode('Detalles importantes'),0,1,'L');
    
//Otros Detalles
    // Salto de línea
    
$this->Ln(2);
    
// Logo
    
$this->SetAlpha(0.3);
    
$this->Image('../data/clnlog/logo_vertical.png',10,60,120);
}

// Pie de página
function Footer()
{
    
// Salto de línea
    
$this->Ln(5);
    
// Posición: a 2,5 cm del final
    
$this->SetY(-15);
    
// Arial italic 8
    
$this->SetFont('Arial','I',6);
    
//Linea 1
    
$this->Cell(0,3,utf8_decode('Linea 1'),0,1,'C');
    
//Arial Italic Bold
    
$this->SetFont('Arial','BI',6);
    
//Linea 3
    
$this->Cell(0,3,utf8_decode('Linea 2'),0,1,'C');
    
//Arial Italic
    
$this->SetFont('Arial','I',6);
    
// Número de página
    
$this->Cell(0,3,'Pagina '.$this->PageNo().' de {nb}',0,0,'C');
}
}
    
$pdf = new PDF('P''mm', array(140,216));
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',10);
for(
$i=1;$i<=40;$i++) {
    
$pdf->Cell(0,5,utf8_decode('Imprimiendo línea número ').$i,1,1); 
}
$pdf->SetFont('Times','B',12);
$pdf->Cell(0,20,utf8_decode('Documento Validado'),1,1,'R'); 
$pdf->Output(); 
Agradezco su ayuda de antemano, Saludos!!
  #2 (permalink)  
Antiguo 12/11/2019, 15:05
 
Fecha de Ingreso: abril-2011
Mensajes: 170
Antigüedad: 13 años
Puntos: 68
Respuesta: Incluir Transparency en FPDF

En el mismo directorio donde tienes el fpdf.php, verifica que también existe un directorio /font, que es donde deben estar almacenados otros archivos php para cargar las fuentes.

Si no la tienes o falta el archivo helvetica.php descárgatelo de github y cópialo al directorio font.

https://github.com/Setasign/FPDF/tree/master/font

Eso debería solucionar el problema.
  #3 (permalink)  
Antiguo 12/11/2019, 20:01
 
Fecha de Ingreso: agosto-2015
Ubicación: Chile
Mensajes: 7
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Incluir Transparency en FPDF

Muchas gracias prueba230683 por responder! es mi primera consulta en este foro y hasta ahora me agrada mucho.

Resulta que seguí tu sugerencia, revisé dicho directorio y el archivo helveticab.php está allí. Desconozco qué puede ser.



De todas formas, comento que no sé si implementé correctamente la extensión:

En fpdf.php:

Código PHP:
define('FPDF_VERSION','1.81');

class 
FPDF 
En alphapdf.php:

Código PHP:
require('fpdf.php');

class 
AlphaPDF extends FPDF 
Y en el documento para generar pdf:

Código PHP:
require('../include/fpdf/alphapdf.php');
class 
PDF extends AlphaPDF 
¿Tendrá algo que ver? Gracias de antemano!
  #4 (permalink)  
Antiguo 12/11/2019, 20:11
 
Fecha de Ingreso: abril-2006
Mensajes: 583
Antigüedad: 18 años
Puntos: 120
Respuesta: Incluir Transparency en FPDF

trabaja mejor con "ampps" para MAC, te da un control mejor sobre archivos y un administrador del servidor, en el cual puedes simular tu proyecto en un dominio virtual, tambien el cambiar de versiones de PHP con un par de CLICKS,

eso por que XAMMP , virtualiza el directorio si mal no recuerdo, y por ello encontre "ampps" por que estaba cansado de errores inesperados y no queria currarme en tocar configuraciones de APACHE y PHP

y en tus proyectos, trabaja con rutas ABSOLUTAS
Código PHP:
Ver original
  1. require('fpdf.php');

cambiala por la ruta real o RELATIVA constante

Código PHP:
Ver original
  1. <?php
  2. require(__DIR__ .'/fpdf.php');
  3. //require('/Applications/XAMPP/xamppfiles/lib/php/fpdf/fpdf.php');
para evitarte tener problemas
__________________
Mis aportes te ayudaron??, te hicieron ahorrar valiosos tiempo??, si quieres puedes agradecerme con un Gracias o con una donacion
https://paypal.com/pools/c/8lmNLmWnG9
  #5 (permalink)  
Antiguo 12/11/2019, 20:31
 
Fecha de Ingreso: agosto-2015
Ubicación: Chile
Mensajes: 7
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Incluir Transparency en FPDF

Muchas gracias por lo de AMPPS! no lo conocía. Lo estoy descargando.

Seguiré tu consejo de las rutas absolutas.

Te comento como me vaya con el cambio!

GRACIAS!!!
  #6 (permalink)  
Antiguo 13/11/2019, 05:17
 
Fecha de Ingreso: agosto-2015
Ubicación: Chile
Mensajes: 7
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Incluir Transparency en FPDF

Estuve revisando mientras esperaba la descarga y encontré lo siguiente:

1. En el directorio php existe una carpeta llamada fonts, la cual dupliqué y llame font; solucionó el problema con las fuentes.

2. Ahora me indica que hay problemas en el archivo de alphapdf.php:

Código:
Fatal error: Uncaught Error: Call to undefined method PDF::_put() in /Applications/XAMPP/xamppfiles/htdocs/tmp/include/fpdf/alphapdf.php:44 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/tmp/include/fpdf/alphapdf.php(65): AlphaPDF->_putextgstates() #1 /Applications/XAMPP/xamppfiles/lib/php/fpdf.php(1764): AlphaPDF->_putresources() #2 /Applications/XAMPP/xamppfiles/htdocs/tmp/include/fpdf/alphapdf.php(35): FPDF->_enddoc() #3 /Applications/XAMPP/xamppfiles/lib/php/fpdf.php(302): AlphaPDF->_enddoc() #4 /Applications/XAMPP/xamppfiles/lib/php/fpdf.php(987): FPDF->Close() #5 /Applications/XAMPP/xamppfiles/htdocs/tmp/pdf/recipe-fpdf.php(152): FPDF->Output() #6 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/tmp/include/fpdf/alphapdf.php on line 44
Al revisar el codigo de alphapdf.php las lineas de código que causan el error son las siguientes:

Código PHP:
    function _putextgstates()
    {
        for (
$i 1$i <= count($this->extgstates); $i++)
        {
            
$this->_newobj();
            
$this->extgstates[$i]['n'] = $this->n;
            
$this->_put('<</Type /ExtGState');
            
$parms $this->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();
    } 
Por otra parte, si las quito, la extensión queda inutilizada.

Volví a quedar en panne otra vez.

*Descargando AMPPS*
  #7 (permalink)  
Antiguo 13/11/2019, 12:10
 
Fecha de Ingreso: agosto-2015
Ubicación: Chile
Mensajes: 7
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: Incluir Transparency en FPDF

Les comento como lo hice, probando el código en el PC de escritorio con Windoes y XAMPP. Santo remedio.

Gracias a todos!!

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:17.