File "FAQ.htm"

Full Path: C:/wamp64/www/PAGOS-T3/fpdf/FAQ.htm
File size: 15.21 KB
MIME-type: text/html
Charset: 8 bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>FAQ</title>
<link type="text/css" rel="stylesheet" href="fpdf.css">
<style type="text/css">
ul {list-style-type:none; margin:0; padding:0}
ul#answers li {margin-top:1.8em}
.question {font-weight:bold; color:#900000}
</style>
</head>
<body>
<h1>FAQ</h1>
<ul>
<li><b>1.</b> <a href='#q1'>Cul es exactamente el tipo de licencia de FPDF? Existen restricciones de uso?</a></li>
<li><b>2.</b> <a href='#q2'>Cuando intento crear un PDF, aparecen un montn de caracteres raros. Por qu?</a></li>
<li><b>3.</b> <a href='#q3'>Intento generar un PDF y IE muestra una pgina en blanco. Qu pasa?</a></li>
<li><b>4.</b> <a href='#q4'>No consigo que los saltos de lnea funcionen. Pongo \n en la cadena para MultiCell, pero no funciona.</a></li>
<li><b>5.</b> <a href='#q5'>Intento mostrar una variable en el mtodo Header pero no se imprime nada.</a></li>
<li><b>6.</b> <a href='#q6'>He definido los mtodos Header y Footer en mi clase PDF, pero no se muestra nada.</a></li>
<li><b>7.</b> <a href='#q7'>Caracteres acentuados son reemplazados por algunos caracteres extraos como é.</a></li>
<li><b>8.</b> <a href='#q8'>Intento incluir el smbolo del euro, pero no funciona.</a></li>
<li><b>9.</b> <a href='#q9'>Encuentro el siguiente error cuando intento generar un PDF: Some data has already been output, can't send PDF file</a></li>
<li><b>10.</b> <a href='#q10'>Dibujo un marco con dimensiones muy precisas pero, cuando lo imprimo, noto algunas diferencias.</a></li>
<li><b>11.</b> <a href='#q11'>Me gustara usar toda la superficie de la pgina, pero cuando imprimo siempre aparecen mrgenes. Cmo puedo deshacerme de ellos?</a></li>
<li><b>12.</b> <a href='#q12'>Cmo puedo poner un fondo en mi PDF?</a></li>
<li><b>13.</b> <a href='#q13'>Cmo puedo establecer una cabecera o pie de pgina en la primera pgina?</a></li>
<li><b>14.</b> <a href='#q14'>Me gustara utilizar extensiones previstas por diferentes scripts. Cmo puedo combinarlos?</a></li>
<li><b>15.</b> <a href='#q15'>Cmo puedo enviar el PDF por correo electrnico?</a></li>
<li><b>16.</b> <a href='#q16'>Cul es el lmite de tamao de los ficheros que puedo generar con FPDF?</a></li>
<li><b>17.</b> <a href='#q17'>Puedo modificar un PDF con FPDF?</a></li>
<li><b>18.</b> <a href='#q18'>Me gustara hacer un motor de bsqueda en PHP e indexar ficheros PDF. Puedo hacerlo con FPDF?</a></li>
<li><b>19.</b> <a href='#q19'>Puedo convertir una pgina HTML en PDF con FPDF?</a></li>
<li><b>20.</b> <a href='#q20'>Puedo concatenar ficheros PDF con FPDF?</a></li>
</ul>

<ul id='answers'>
<li id='q1'>
<p><b>1.</b> <span class='question'>Cul es exactamente el tipo de licencia de FPDF? Existen restricciones de uso?</span></p>
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.
</li>

<li id='q2'>
<p><b>2.</b> <span class='question'>Cuando intento crear un PDF, aparecen un montn de caracteres raros. Por qu?</span></p>
Esos caracteres "raros" constituyen de hecho el contenido del PDF. Este comportamiento es un
fallo de IE6. Cuando recibe una pgina en HTML y despus un PDF de la misma URL, lo muestra
directamente sin lanzar Acrobat. Esto ocurre con frecuencia durante la fase de desarrollo:
al menor fallo en el script, se enva una pgina HTML y, despus de corregirlo, se enva el PDF.
<br>
Para resolver el problema, simplemente reinicie IE. Tambin puede irse a otra URL y volver.
<br>
Para evitar estas molestias durante el desarrollo, puede generar el PDF directamente a un fichero
y abrirlo mediante el navegador.
</li>

<li id='q3'>
<p><b>3.</b> <span class='question'>Intento generar un PDF y IE muestra una pgina en blanco. Qu pasa?</span></p>
Antes de nada, compruebe que no enva nada al navegador despus del PDF (ni siquiera un espacio
o un salto de lnea). Puede incluir una instruccin exist justo despus de llamar al mtodo
Output() para asegurarse. Si esto no funciona, significa que es usted vctima del "sndrome de
la pgina en blanco". IE usado con la extensin de Acrobat tiene numerosos fallos.
Para evitar todos estos problemas de manera fiable, existen dos tcnicas fundamentalmente:
<br>
<br>
- Deshabilite la extensin y use Acrobat como una aplicacin auxiliar. Para esto, abra Acrobat;
en el men Archivo, Preferencias, General, desmarque la casilla "Integracin con el navegador" (para
Acrobat 5: Edicin, Preferencias, Opciones, "Mostrar PDF en el navegador"). La prxima vez que
cargue un PDF en IE, se le mostrar un mensaje "Abrir" o "Guardar en disco". Desmarque la casilla
"Preguntar siempre antes de abrir este tipo de archivo" y escoja Abrir. A partir de ahora, los
ficheros PDF se abrirn automticamente en una ventana externa de Acrobat.
<br>
El inconveniente de este mtodo es que necesita alterar la configuracin del cliente, que es algo
viable en una intranet, pero imposible para Internet.
<br>
<br>
- Use una tcnica de redireccin. Consiste en generar el PDF en un fichero temporal en el servidor
y redireccionar al cliente al fichero. Por ejemplo, al final del script, puede aadir lo siguiente:
<div class="doc-source">
<pre><code>//Determinar un nombre temporal de fichero en el directorio actual
$file = basename(tempnam('.', 'tmp'));
rename($file, $file.'.pdf');
$file .= '.pdf';
//Guardar el PDF en un fichero
$pdf-&gt;Output($file, 'F');
//Redireccin
header('Location: '.$file);</code></pre>
</div>
Este mtodo convierte el PDF dinmico en esttico y evita todos los problemas. Pero
debe hacer limpieza de los ficheros temporales. Por ejemplo:
<div class="doc-source">
<pre><code>function CleanFiles($dir)
{
    //Borrar los ficheros temporales
    $t = time();
    $h = opendir($dir);
    while($file=readdir($h))
    {
        if(substr($file,0,3)=='tmp' &amp;&amp; substr($file,-4)=='.pdf')
        {
            $path = $dir.'/'.$file;
            if($t-filemtime($path)&gt;3600)
                @unlink($path);
        }
    }
    closedir($h);
}</code></pre>
</div>
Esta funcin borra todos los ficheros de la forma tmp*.pdf ms antiguos de una hora en el
directorio especificado. Puede ser llamada donde usted quiera como, por ejemplo, en el script
que genera el PDF.
</li>

<li id='q4'>
<p><b>4.</b> <span class='question'>No consigo que los saltos de lnea funcionen. Pongo \n en la cadena para MultiCell, pero no funciona.</span></p>
Debe usted utilizar comillas dobles ("), no simples ('), para la cadena.
</li>

<li id='q5'>
<p><b>5.</b> <span class='question'>Intento mostrar una variable en el mtodo Header pero no se imprime nada.</span></p>
Tienes que utilizar la palabra clave <code>global</code> para acceder a las variables globales, por ejemplo:
<div class="doc-source">
<pre><code>function Header()
{
    global $title;

    $this-&gt;SetFont('Arial', 'B', 15);
    $this-&gt;Cell(0, 10, $title, 1, 1, 'C');
}

$title = 'Mi Ttulo';</code></pre>
</div>
Alternativamente, puede utilizar una propiedad del objeto:
<div class="doc-source">
<pre><code>function Header()
{
    $this-&gt;SetFont('Arial', 'B', 15);
    $this-&gt;Cell(0, 10, $this-&gt;title, 1, 1, 'C');
}

$pdf-&gt;title = 'Mi Ttulo';</code></pre>
</div>
</li>

<li id='q6'>
<p><b>6.</b> <span class='question'>He definido los mtodos Header y Footer en mi clase PDF, pero no se muestra nada.</span></p>
Tiene que crear un objeto de la clase PDF, no de la FPDF:
<div class="doc-source">
<pre><code>$pdf = new PDF();</code></pre>
</div>
</li>

<li id='q7'>
<p><b>7.</b> <span class='question'>Caracteres acentuados son reemplazados por algunos caracteres extraos como é.</span></p>
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():
<div class="doc-source">
<pre><code>$str = utf8_decode($str);</code></pre>
</div>
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:
<div class="doc-source">
<pre><code>$str = iconv('UTF-8', 'windows-1252', $str);</code></pre>
</div>
</li>

<li id='q8'>
<p><b>8.</b> <span class='question'>Intento incluir el smbolo del euro, pero no funciona.</span></p>
Las fuentes estndares tiene el carcter euro en la posicin 128. Puede definir una constante
como esta para su comodidad:
<div class="doc-source">
<pre><code>define('EURO', chr(128));</code></pre>
</div>
</li>

<li id='q9'>
<p><b>9.</b> <span class='question'>Encuentro el siguiente error cuando intento generar un PDF: Some data has already been output, can't send PDF file</span></p>
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.<br>
<br>
Si usted no puede averiguar de donde proviene el problema, este otro mensaje que aparece justo abajo puede ayudarlo:<br>
<br>
<b>Warning:</b> Cannot modify header information - headers already sent by (output started at script.php:X)<br>
<br>
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:
<div class="doc-source">
<pre><code>ob_end_clean();</code></pre>
</div>
Si todava no lo ve, deshabilite zlib.output_compression en su php.ini y debera aparecer.
</li>

<li id='q10'>
<p><b>10.</b> <span class='question'>Dibujo un marco con dimensiones muy precisas pero, cuando lo imprimo, noto algunas diferencias.</span></p>
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.
</li>

<li id='q11'>
<p><b>11.</b> <span class='question'>Me gustara usar toda la superficie de la pgina, pero cuando imprimo siempre aparecen mrgenes. Cmo puedo deshacerme de ellos?</span></p>
Todas las impresoras tienen mrgenes fsicos (dependiendo del modelo). Por tanto, es imposible quitarlos
e imprimir en la totalidad del papel.
</li>

<li id='q12'>
<p><b>12.</b> <span class='question'>Cmo puedo poner un fondo en mi PDF?</span></p>
Para una imagen, invoque Image() en el mtodo Header(), antes que cualquier otra salida. Para configurar un color de fondo, use Rect().
</li>

<li id='q13'>
<p><b>13.</b> <span class='question'>Cmo puedo establecer una cabecera o pie de pgina en la primera pgina?</span></p>
Simplemente verifique el nmero de la pgina:
<div class="doc-source">
<pre><code>function Header()
{
    if($this-&gt;PageNo()==1)
    {
        //Primera Pgina
        ...
    }
    else
    {
        //Otras Pginas
        ...
    }
}</code></pre>
</div>
</li>

<li id='q14'>
<p><b>14.</b> <span class='question'>Me gustara utilizar extensiones previstas por diferentes scripts. Cmo puedo combinarlos?</span></p>
Utilice herencia encadenada. Si dispone de dos clases, por ejemplo, nmbrelo "A" en a.php:
<div class="doc-source">
<pre><code>require('fpdf.php');

class A extends FPDF
{
...
}</code></pre>
</div>
y "B" en b.php:
<div class="doc-source">
<pre><code>require('fpdf.php');

class B extends FPDF
{
...
}</code></pre>
</div>
a continuacin, hacer B extends A:
<div class="doc-source">
<pre><code>require('a.php');

class B extends A
{
...
}</code></pre>
</div>
y haga su propia clase extendida de B:
<div class="doc-source">
<pre><code>require('b.php');

class PDF extends B
{
...
}

$pdf = new PDF();</code></pre>
</div>
</li>

<li id='q15'>
<p><b>15.</b> <span class='question'>Cmo puedo enviar el PDF por correo electrnico?</span></p>
Como cualquier otro archivo, pero una forma fcil es usar <a href="http://phpmailer.codeworxtech.com">PHPMailer</a> y
esta es una forma de adjuntarlo: archivo desde la memoria:
<div class="doc-source">
<pre><code>$mail = new PHPMailer();
...
$doc = $pdf-&gt;Output('', 'S');
$mail-&gt;AddStringAttachment($doc, 'doc.pdf', 'base64', 'application/pdf');
$mail-&gt;Send();</code></pre>
</div>
</li>

<li id='q16'>
<p><b>16.</b> <span class='question'>Cul es el lmite de tamao de los ficheros que puedo generar con FPDF?</span></p>
No hay ningn lmte en particular. Sin embargo, hay ciertas limitaciones:
<br>
<br>
- El mximo de memoria reservada para los scripts en PHP es, por defecto, de 8 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.
<br>
<br>
- 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().
<br>
<br>
- Los navegadores tienen por lo general un lmite de 5 minutos de inactividad. Si enva directamente
el PDF al navegador y sobrepasa el lmite, se perder el documento. Por tanto, en el caso de documentos
muy grandes, se aconseja generarlos en un fichero y enviar informacin al navegador de tanto en tanto (por
ejemplo, la pgina 1, la 2... con flush(), que fuerza la salida). Cuando el documento est terminado,
puede redireccionar a l con JavaScript o crear un enlace.
<br>
Nota: incluso si el navegador agota su tiempo, el script puede continuar ejecutndose en el servidor.
</li>

<li id='q17'>
<p><b>17.</b> <span class='question'>Puedo modificar un PDF con FPDF?</span></p>
Es posible importar pginas de un documento PDF existente gracias a la extensin FPDI: <br>
<br>
<a href="http://www.setasign.de/products/pdf-php-solutions/fpdi/" target="_blank">http://www.setasign.de/products/pdf-php-solutions/fpdi/</a><br>
<br>
Entonces, puede aadirles contenido.
</li>

<li id='q18'>
<p><b>18.</b> <span class='question'>Me gustara hacer un motor de bsqueda en PHP e indexar ficheros PDF. Puedo hacerlo con FPDF?</span></p>
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:<br>
<br>
<a href="http://www.foolabs.com/xpdf/" target="_blank">http://www.foolabs.com/xpdf/</a>
</li>

<li id='q19'>
<p><b>19.</b> <span class='question'>Puedo convertir una pgina HTML en PDF con FPDF?</span></p>
No. Pero existe una utilidad GPL escrita en C, htmldoc, que le permite hacerlo y da buen resultado:<br>
<br>
<a href="http://www.htmldoc.org" target="_blank">http://www.htmldoc.org</a>
</li>

<li id='q20'>
<p><b>20.</b> <span class='question'>Puedo concatenar ficheros PDF con FPDF?</span></p>
No directamente, pero es posible usar <a href="http://www.setasign.de/products/pdf-php-solutions/fpdi/demos/concatenate-fake/" target="_blank">FPDI</a>
para llevar a cabo esta tarea. Tambin existen algunas herramientas libres de lnea de comandos:<br>
<br>
<a href="http://thierry.schmit.free.fr/spip/spip.php?article15&amp;lang=en" target="_blank">mbtPdfAsm</a><br>
<a href="http://www.accesspdf.com/pdftk/" target="_blank">pdftk</a>
</li>
</ul>
</body>
</html>