270 lines
11 KiB
HTML
270 lines
11 KiB
HTML
<!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'>Esattamente qual'è la licenza di FPDF? Ci sono limitazioni all'utilizzo?</a></li>
|
|
<li><b>2.</b> <a href='#q2'>Quando tento di generare un PDF, ricevo il seguente messaggio di errore: "Some data has already been output, can't send PDF file".</a></li>
|
|
<li><b>3.</b> <a href='#q3'>I caratteri accentati vengono sostituiti da strani caratteri come é.</a></li>
|
|
<li><b>4.</b> <a href='#q4'>Tento di inserire il simbolo dell'Euro ma non funziona.</a></li>
|
|
<li><b>5.</b> <a href='#q5'>Provo a visualizzare una variabile nel metodo Header, ma non viene stampato nulla.</a></li>
|
|
<li><b>6.</b> <a href='#q6'>Ho definito i metodi Header e Footer nella mia classe PDF ma non appare nulla.</a></li>
|
|
<li><b>7.</b> <a href='#q7'>Non riesco a far funzionare le interruzioni di linea. Inserisco i \n nella stringa stampata da MultiCell ma non funziona.</a></li>
|
|
<li><b>8.</b> <a href='#q8'>Per generare il PDF uso jQuery, ma non viene mostrato.</a></li>
|
|
<li><b>9.</b> <a href='#q9'>Ho disegnato un frame di dimensioni molto precise, ma quando viene stampato noto alcune differenze.</a></li>
|
|
<li><b>10.</b> <a href='#q10'>Vorrei utilizzare l'intera superficie della pagina, ma quando stampo restano sempre alcuni margini. Come posso eliminarli?</a></li>
|
|
<li><b>11.</b> <a href='#q11'>Come posso impostare uno sfondo nel mio PDF?</a></li>
|
|
<li><b>12.</b> <a href='#q12'>Come posso impostare una specifica intestazione o un piede nella prima pagina?</a></li>
|
|
<li><b>13.</b> <a href='#q13'>Vorrei poter utilizzare estensioni rese disponibili tramite diversi script. Come posso combinarle?</a></li>
|
|
<li><b>14.</b> <a href='#q14'>Come posso aprire il PDF in una nuova scheda?</a></li>
|
|
<li><b>15.</b> <a href='#q15'>Come posso inviare il PDF tramite email?</a></li>
|
|
<li><b>16.</b> <a href='#q16'>Qual'è il limite delle dimensioni dei file che posso generare con FPDF?</a></li>
|
|
<li><b>17.</b> <a href='#q17'>Posso modificare un PDF con FPDF?</a></li>
|
|
<li><b>18.</b> <a href='#q18'>Vorrei creare un motore di ricerca in PHP e indicizzare i file PDF. Posso farlo utilizzando FPDF?</a></li>
|
|
<li><b>19.</b> <a href='#q19'>Posso convertire una pagina HTML in PDF con FPDF?</a></li>
|
|
<li><b>20.</b> <a href='#q20'>Posso concatenare files PDF con FPDF?</a></li>
|
|
</ul>
|
|
|
|
<ul id='answers'>
|
|
<li id='q1'>
|
|
<p><b>1.</b> <span class='question'>Esattamente qual'è la licenza di FPDF? Ci sono limitazioni all'utilizzo?</span></p>
|
|
FPDF è rilasciata con licenza permissiva: non vi sono restrizioni di utilizzo. Puoi incorporarla
|
|
liberamente nelle tue applicazioni (commerciali o meno), con o senza modifiche.
|
|
</li>
|
|
|
|
<li id='q2'>
|
|
<p><b>2.</b> <span class='question'>Quando tento di generare un PDF, ricevo il seguente messaggio di errore: "Some data has already been output, can't send PDF file".</span></p>
|
|
Non devi inviare al browser nient'altro che il solo PDF: non HTML, nessuno spazio o ritorno di carrello. Un
|
|
caso comune consiste nell'avere uno spazio bianco indesiderato alla fine dello script di un file incluso.<br>
|
|
Se non riesci a determinare da dove possa derivare l'errore, il seguente altro messaggio di errore
|
|
eventualmente apparso appena prima potrà aiutarti:<br>
|
|
<br>
|
|
<b>Warning:</b> Cannot modify header information - headers already sent by (output started at script.php:X).<br>
|
|
<br>
|
|
Ciò significa che lo script.php genera qualche output alla riga X. Vai a tale linea di codice e correggila.
|
|
Nel caso in cui tale messaggio non appaia, prima controlla di non aver disabilitato i messaggi d'errore e
|
|
poi aggiungi all'inizio del tuo script le seguenti linee:
|
|
<div class="doc-source">
|
|
<pre><code>ob_end_clean();</code></pre>
|
|
</div>
|
|
</li>
|
|
|
|
<li id='q3'>
|
|
<p><b>3.</b> <span class='question'>I caratteri accentati vengono sostituiti da strani caratteri come é.</span></p>
|
|
Non utilizzare la codifica UTF-8. I font standard FPDF utilizzano ISO-8859-1 o windows-1252.
|
|
Vi è la possibilità di effettuare una conversione verso ISO-8859-1 tramite utf8_decode():
|
|
<div class="doc-source">
|
|
<pre><code>$str = utf8_decode($str);</code></pre>
|
|
</div>
|
|
Ma alcuni caratteri, come il simbolo di Euro, non possono essere convertiti correttamente. Se l'estensione
|
|
iconv è disponibile, la via migliore è la seguente:
|
|
<div class="doc-source">
|
|
<pre><code>$str = iconv('UTF-8', 'windows-1252', $str);</code></pre>
|
|
</div>
|
|
</li>
|
|
|
|
<li id='q4'>
|
|
<p><b>4.</b> <span class='question'>Tento di inserire il simbolo dell'Euro ma non funziona.</span></p>
|
|
I font standard hanno il simbolo dell'euro alla posizione 128. Puoi definire per convenienza una costante
|
|
come questa:
|
|
<div class="doc-source">
|
|
<pre><code>define('EURO', chr(128));</code></pre>
|
|
</div>
|
|
</li>
|
|
|
|
<li id='q5'>
|
|
<p><b>5.</b> <span class='question'>Provo a visualizzare una variabile nel metodo Header, ma non viene stampato nulla.</span></p>
|
|
Devi utilizzare la parola chiave <code>global</code> per accedere alle variabili globali, per esempio:
|
|
<div class="doc-source">
|
|
<pre><code>function Header()
|
|
{
|
|
global $title;
|
|
|
|
$this->SetFont('Arial', 'B', 15);
|
|
$this->Cell(0, 10, $title, 1, 1, 'C');
|
|
}</code></pre>
|
|
</div>
|
|
In alternativa, puoi utilizzare una proprietà dell'oggetto:
|
|
<div class="doc-source">
|
|
<pre><code>function Header()
|
|
{
|
|
$this->SetFont('Arial', 'B', 15);
|
|
$this->Cell(0, 10, $this->title, 1, 1, 'C');
|
|
}
|
|
|
|
$pdf->title = 'My title';</code></pre>
|
|
</div>
|
|
</li>
|
|
|
|
<li id='q6'>
|
|
<p><b>6.</b> <span class='question'>Ho definito i metodi Header e Footer nella mia classe PDF ma non appare nulla.</span></p>
|
|
Devi creare un oggetto dalla classe PDF, non FPDF:
|
|
<div class="doc-source">
|
|
<pre><code>$pdf = new PDF();</code></pre>
|
|
</div>
|
|
</li>
|
|
|
|
<li id='q7'>
|
|
<p><b>7.</b> <span class='question'>Non riesco a far funzionare le interruzioni di linea. Inserisco i \n nella stringa stampata da MultiCell ma non funziona.</span></p>
|
|
Devi chiudere la stringa tra virgolette, non tra apici singoli.
|
|
</li>
|
|
|
|
<li id='q8'>
|
|
<p><b>8.</b> <span class='question'>Per generare il PDF uso jQuery, ma non viene mostrato.</span></p>
|
|
Non usare una richiesta AJAX per recuperare il file PDF.
|
|
</li>
|
|
|
|
<li id='q9'>
|
|
<p><b>9.</b> <span class='question'>Ho disegnato un frame di dimensioni molto precise, ma quando viene stampato noto alcune differenze.</span></p>
|
|
Per rispettare le dimensioni, scegli "Nessuno" nel settaggio della scala di stampa al posto di
|
|
"Restringi all'area di stampa" nel box di dialogo della stampa.
|
|
</li>
|
|
|
|
<li id='q10'>
|
|
<p><b>10.</b> <span class='question'>Vorrei utilizzare l'intera superficie della pagina, ma quando stampo restano sempre alcuni margini. Come posso eliminarli?</span></p>
|
|
Tutte le stampanti hanno dei margini fisici (diversi a seconda del modello), ed è quindi impossibile
|
|
rimuoverli e stampare su tutta la superficie della carta.
|
|
</li>
|
|
|
|
<li id='q11'>
|
|
<p><b>11.</b> <span class='question'>Come posso impostare uno sfondo nel mio PDF?</span></p>
|
|
Per un'immagine, effettua una chiamata a Image() all'interno del metodo Header(), prima di ogni altro
|
|
output. Per impostare un colore di sfondo usa Rect().
|
|
</li>
|
|
|
|
<li id='q12'>
|
|
<p><b>12.</b> <span class='question'>Come posso impostare una specifica intestazione o un piede nella prima pagina?</span></p>
|
|
Semplicemente, testa il numero di pagina:
|
|
<div class="doc-source">
|
|
<pre><code>function Header()
|
|
{
|
|
if($this->PageNo()==1)
|
|
{
|
|
//First page
|
|
...
|
|
}
|
|
else
|
|
{
|
|
//Other pages
|
|
...
|
|
}
|
|
}</code></pre>
|
|
</div>
|
|
</li>
|
|
|
|
<li id='q13'>
|
|
<p><b>13.</b> <span class='question'>Vorrei poter utilizzare estensioni rese disponibili tramite diversi script. Come posso combinarle?</span></p>
|
|
Utilizza un'ereditarietà a catena. Se hai due classi, diciamo A in a.php:
|
|
<div class="doc-source">
|
|
<pre><code>require('fpdf.php');
|
|
|
|
class A extends FPDF
|
|
{
|
|
...
|
|
}</code></pre>
|
|
</div>
|
|
e B in b.php:
|
|
<div class="doc-source">
|
|
<pre><code>require('fpdf.php');
|
|
|
|
class B extends FPDF
|
|
{
|
|
...
|
|
}</code></pre>
|
|
</div>
|
|
poi, effettua B extend A:
|
|
<div class="doc-source">
|
|
<pre><code>require('a.php');
|
|
|
|
class B extends A
|
|
{
|
|
...
|
|
}</code></pre>
|
|
</div>
|
|
e la tua classe extend B:
|
|
<div class="doc-source">
|
|
<pre><code>require('b.php');
|
|
|
|
class PDF extends B
|
|
{
|
|
...
|
|
}
|
|
|
|
$pdf = new PDF();</code></pre>
|
|
</div>
|
|
</li>
|
|
|
|
<li id='q14'>
|
|
<p><b>14.</b> <span class='question'>Come posso aprire il PDF in una nuova scheda?</span></p>
|
|
Basta fare quanto si fa per una pagina HTML o per altro: aggiungere un target = "_blank" al proprio link o form.
|
|
</li>
|
|
|
|
<li id='q15'>
|
|
<p><b>15.</b> <span class='question'>Come posso inviare il PDF tramite email?</span></p>
|
|
Come ogni altro file, ma una via semplice è utilizzare <a href="https://github.com/PHPMailer/PHPMailer" target="_blank">PHPMailer</a>
|
|
e il suo sistema di allegati in-memory:
|
|
<div class="doc-source">
|
|
<pre><code>$mail = new PHPMailer();
|
|
...
|
|
$doc = $pdf->Output('S');
|
|
$mail->AddStringAttachment($doc, 'doc.pdf', 'base64', 'application/pdf');
|
|
$mail->Send();</code></pre>
|
|
</div>
|
|
</li>
|
|
|
|
<li id='q16'>
|
|
<p><b>16.</b> <span class='question'>Qual'è il limite delle dimensioni dei file che posso generare con FPDF?</span></p>
|
|
Non c'è un limite particolare. Ci sono comunque alcune restrizioni:
|
|
<br>
|
|
<br>
|
|
- La massima dimensione di memoria allocata per gli script PHP è impostata. Per documenti
|
|
molto grandi, specialmetne con immagini, questo limite potrebbe essere raggiunto (il file
|
|
viene generato nella memoria). Questo parametro è configurabile nel file php.ini.
|
|
<br>
|
|
<br>
|
|
- Il tempo massimo di esecuzione è impostato di default a 30 secondi. Questo limite può naturalmente
|
|
essere raggiunto con facilità. E' configurato nel file php.ini e può essere alterato dinamicamente con
|
|
la funzione set_time_limit().
|
|
</li>
|
|
|
|
<li id='q17'>
|
|
<p><b>17.</b> <span class='question'>Posso modificare un PDF con FPDF?</span></p>
|
|
Grazie all'estensione <a href="https://www.setasign.com/products/fpdi/about/" target="_blank">FPDI</a>,
|
|
è possibile importare pagine da un documento PDF preesistente.
|
|
Poi, puoi aggiungere ad esse altro contenuto.
|
|
</li>
|
|
|
|
<li id='q18'>
|
|
<p><b>18.</b> <span class='question'>Vorrei creare un motore di ricerca in PHP e indicizzare i file PDF. Posso farlo utilizzando FPDF?</span></p>
|
|
No, ma esiste una utility scritta in C e rilasciata sotto licenza GPL, pdftotext, che consente di estrarre
|
|
il contenuto testuale da un PDF. E' fornita col il pacchetto <a href="https://www.xpdfreader.com" target="_blank">Xpdf</a>.
|
|
</li>
|
|
|
|
<li id='q19'>
|
|
<p><b>19.</b> <span class='question'>Posso convertire una pagina HTML in PDF con FPDF?</span></p>
|
|
Non pagine del "mondo reale". No, ma esiste una utility scritta in C e rilasciata sotto licenza GPL,
|
|
<a href="https://www.msweet.org/htmldoc/" target="_blank">HTMLDOC</a>, che permette di farlo
|
|
ottenendo buoni risultati.
|
|
</li>
|
|
|
|
<li id='q20'>
|
|
<p><b>20.</b> <span class='question'>Posso concatenare files PDF con FPDF?</span></p>
|
|
Non direttamente, ma è possibile utilizzare <a href="https://www.setasign.com/products/fpdi/demos/concatenate-fake/" target="_blank">FPDI</a>
|
|
per raggiungere tale obiettivo. Esistono anche alcuni tools liberi a linea di comando:
|
|
<a href="https://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/" target="_blank">pdftk</a> e
|
|
<a href="http://thierry.schmit.free.fr/spip/spip.php?article15" target="_blank">mbtPdfAsm</a>.
|
|
</li>
|
|
</ul>
|
|
</body>
|
|
</html>
|