Replace fopen library for cURL in html2fpdf

junio 4, 2009

[ir a la versión en castellano]
I received several queries regarding the problem of creating a PDF with images in some servers where the value of the “allow_url_fopen” is set Off in php.ini configuration file.

The classes html2fpdf uses fopen to open the images in the html source that we use to create the PDF and in the cases just commenting will not work correctly. Ie, the images will not appear in the PDF we generate.

The solution is to replace the fopen function for the functions that cURL offers us a platform library that enables the transfer of files from the client side through multiple protocols.

As an example we show a slice of the modified code:

if ( ‘allow_url_fopen’ == ‘Off’)
(
$ f = fopen ($ file, ‘rb’);
else ()
Open with //—– Curl
$ curl_handler = curl_init ();
curl_setopt ($ curl_handler, CURLOPT_URL, $ file);
curl_setopt ($ curl_handler, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ curl_handler, CURLOPT_BINARYTRANSFER, 1);
$ f = curl_exec ($ curl_handler);
curl_close ($ curl_handler);
)

I uploaded the files fpdf and html2fpdf, to replace the originals with necessary modifications. You can download it here.

I hope you are helpful.


Sustituir fopen por la libreria cURL en html2fpdf

junio 4, 2009

[go to the english version]

He recibido varias consultas en relación al problema de crear un PDF con imágenes en ciertos servidores en los que el valor de la directiva “allow_url_fopen” está en Off en el archivo de configuración php.ini.

La clases html2fpdf hace uso de fopen para abrir las imágenes contenidas en el html que usamos de fuente para crear el PDF y en los casos que acabamos de comentar no funcionará correctamente. Es decir, las imágenes no se mostrarán en los PDF que generemos.

La solución está en sustituir la funcion fopen por las funciones que nos ofrece cURL, una libreria multiplataforma que permite la transferencia de archivos desde el lado del cliente a través de múltiples protocolos.

A modo de ejemplo os muestro un trozo del código modificado:

if (‘allow_url_fopen’ == ‘Off’)
{
$f=fopen($file,’rb’);
}else{
//—————Open with CUrl
$curl_handler = curl_init();
curl_setopt($curl_handler, CURLOPT_URL, $file);
curl_setopt($curl_handler, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handler, CURLOPT_BINARYTRANSFER, 1);
$f = curl_exec($curl_handler);
curl_close($curl_handler);
}

He subido los archivos fpdf y html2fpdf, para que los sustituyais por los originales, con las modificaciones necesarias. Podéis descargarlos aquí.

Espero que os sean de ayuda.


Definir cabeceras en los PDF generados con html2fpdf

noviembre 5, 2008

He recibido varias consultas acerca de como insertar cabeceras en los documentos PDF generados con html2fpdf.

En mi opinión, la solución mas sencilla es modificar la función Header() que podéis encontrar en el archivo html2fpdf.php por algo parecido a esto, depende lo que requiera el diseño de la cabecera de vuestro documento:

//Page header
function Header($content=”)
{
//Logo
$this->Image(‘backHeader.jpg’,90,20,200);
//Arial bold 15
$this->SetFont(‘Arial’,’B’,15);
//Movernos a la derecha
$this->Cell(80);
//Título
// $this->Cell(30,10,’Title’,1,0,’C’);
//Salto de línea
$this->Ln(20);
}

El método mas seguro es el de utilizar una única imagen como cabecera. El uso de textos, opción que aparece comentada en este ejemplo, trae problemas de duplicación de los mismos en las cabeceras de las páginas.


Html2fpdf – Version 3.0 (Beta)

septiembre 16, 2008

Acabo de echarle un vistazo a la versión 3.0 de nuestro querido Html2Fpdf. Tiene algunas mejoras que, como he podido comprobar, resuelve de manera mas que eficiente.

  • Soporta las propiedades CSS, aunque no perfectamente: width, height, border, font-family, font-size, font-style, font-weight, text-decoration, text-align, text-transform, direction, background, color.
  • Soporta los siguientes formatos de imagen: jpg, png, gif.

Según el autor, el script trabaja mejor sobre Xhtml 1.0

link: html2fpdf.sourceforge.net


Generar un PDF “al vuelo” con PHP con Html2fPdf

diciembre 27, 2007

NOTA: Hemos colgado los arhivos fpdf y html2fpdf modificados para utilizar cURL en lugar de fopen. Mas información aquí.

En este tutorial vamos a tratar de explicar como generar PDF´s “on line” o “al vuelo” desde nuestras páginas escritas con PHP.

Para ello vamos a utilizar el proyecto html2fpdf. Este proyecto se basa fundamentalmente en la utilización de 3 clases escritas en PHP: FPDF, HTML2FPDF (extensión de la clase FPDF) y PDF (site Version). Se incluye otro script complementario contenido en el archivo htmltoolkit.php.

Lee el resto de esta entrada »