User Tools

Site Tools


doc:appunti:linux:sa:tcpdf

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:appunti:linux:sa:tcpdf [2020/01/08 10:04] – [Alternativa FPDF] niccolodoc:appunti:linux:sa:tcpdf [2021/03/04 11:36] – [TCPDF su Debian 10 Buster] niccolo
Line 1: Line 1:
 ====== TCPDF su Debian 10 Buster ====== ====== TCPDF su Debian 10 Buster ======
  
-Purtroppo il pacchetto **php-tcpdf** non è presente in **Debian 10 Buster**, per fortuna si puù installare la versione **6.3.2** da Debian Bullseye, scarcando il file da [[https://packages.debian.org/bullseye/php-tcpdf|Debian packages]].+Purtroppo il pacchetto **php-tcpdf** non è presente in **Debian 10 Buster**, esiste però come **[[https://packages.debian.org/buster-backports/all/php-tcpdf/download|backport]]** oppure si dovrebbe poter installare la versione da Debian Bullseye, scarcando il file da [[https://packages.debian.org/bullseye/php-tcpdf|Debian packages]].
  
 <code> <code>
Line 16: Line 16:
 </code> </code>
  
-===== Alternativa FPDF =====+===== L'alternativa FPDF =====
  
-In alternativa a **php-tcpdf** esiste il pacchetto **[[https://packages.debian.org/buster/php-fpdf|php-fpdf]]**. Si tratta di una libreria con minori funzionalità, ma più snella.+In alternativa a **php-tcpdf** esiste il pacchetto **[[https://packages.debian.org/buster/php-fpdf|php-fpdf]]** (home page [[http://www.fpdf.org/|www.fpdf.org]]). Si tratta di una libreria con minori funzionalità, ma più snella. È inclusa nelle ultime versioni di Debian, compresa l'auttuale stabile **10 Buster** (che include **php-fpdf 1.8.1**), e la futura **Bullseye**. 
 + 
 +===== L'estensione FPDI ===== 
 + 
 +**[[https://packagist.org/packages/setasign/fpdi|FPDI]]** sta per **Free PDF Document Importer**, si tratta di una **estensione** che funziona sia con [[http://www.fpdf.org|FPDF]] che con [[https://github.com/tecnickcom/TCPDF|TCPDF]]. Consente di inlcudere un file PDF esistente ed utilizzarlo come **template** per creare altri documenti. 
 + 
 +Debian includeva **libfpdi-php 1.4.1** fino alla versione **8 Jessie**, nella attuale versione 10 Buster purtroppo non c'è. La libreria è comunque scaricabile da **GitHub**, ad esempio la release 2.2.0 è scaricabile scegliendo il **[[https://github.com/Setasign/FPDI/tree/v2.2.0|Tag v2.2.0]]**. 
 + 
 +Per una installazione manuale si può scompattare l'archivio **FPDI-2.2.0.zip** in **/usr/local/share/php/** oppure anche nella directory stessa del progetto PHP. Quello che serve è la directory **src** contenuta nell'archivio ZIP, che può essere rinominata ad esempio in **fpdi220**. Per includerla si aggiunge al codice PHP: 
 + 
 +<code php> 
 +// Set the namespace to use FPDI over FPDF. 
 +use setasign\Fpdi\Fpdi; 
 +// Set the namespace to use FPDI over TCPDF. 
 +// use setasign\Fpdi\Tcpdf\Fpdi; 
 +// Include the FPDI extension, to import pages from existing PDF documents. 
 +require_once('/usr/local/share/php/fpdi220/autoload.php'); 
 +</code> 
 + 
 +Come si vede nell'esempio viene utilizzata la keyword **use** per definire quale //variante// di FPDI si vuole utilizzare: quella basata su FPDF oppure quella basata su TCPDF (in effetti sono supportate anche altre varianti). 
 + 
 +**ATTENZIONE**: La versione **FPDI 2.2.0** richiede **FPDF 1.8**. Con versioni più vecchie (ad esempio FPDF 1.7) si incappa nell'errore: 
 + 
 +<code> 
 +PHP Fatal error:  Access level to setasign\Fpdi\FpdfTplTrait::_putimages() 
 +  must be public (as in class FPDF) in /niccolo/fpdi/FpdfTpl.php on line 19 
 +</code> 
 + 
 +===== Installazione consigliata ===== 
 + 
 +Ad oggi (febbraio 2020) questo è lo stack di librerie consigiate: 
 + 
 +  * **TCPDF** dal pacchetto Debian **php-tcpdf** (versione **6.2.12** in Debian 9, versione **6.3.2** in Debian 11 che si installa anche in Debian 10). 
 +  * **FPDI** installata localmente da archivio **FPDI-2.2.0.tgz**. 
 + 
 +Nel codice PHP si includono con qualcosa del tipo: 
 + 
 +<code php> 
 +require_once('/usr/share/php/tcpdf/tcpdf.php'); 
 +use setasign\Fpdi\Tcpdf\Fpdi; 
 +require_once('./vendor/fpdi/autoload.php'); 
 +</code>
doc/appunti/linux/sa/tcpdf.txt · Last modified: 2021/03/04 11:39 by niccolo