Unire più file PDF con PHP

Recentemente ho avuto la necessità di unire più file PDF usando PHP.
Facendo una ricerca su internet ho trovato la libreria PDFMerger su GitHub che svolge questo compito.
Essa si basa a sua volta sulle librerie TCPDF e TCPDI e supporta l’importazione dei PDF fino alla versione 1.6.

Non c’è nessun particolare vincolo riguardo l’origine dei file PDF quindi, ad esempio potete unire un file caricato dall’utente con uno creato in PHP.

Siccome avevo bisogno di ancora più funzionalità ho pensato di fare un fork del progetto e ho aggiunto le seguenti nuove features:

  • Supporto alle versioni di PHP dalla 5.3 alla 7.2
  • Supporto allo standard PSR-4
  • Supporto dei Namespaces
  • Possibilità di stampare l’header e/o il footer su tutte le pagine del file di output

Approfondisci

Utilizzare l’estensione DOTNET di PHP

Il linguaggio PHP riserva sempre numerose sorprese tra cui estensioni poco note e/o con scarsa documentazione ed esempi. Una di queste si chiama COM and .Net e consente una incredibile interoperabilità ed espansione dei casi d’uso del linguaggio.

Questa estensione consente di utilizzare all’interno di uno script PHP le funzionalità messe a disposizione da un oggetto COM, che può essere una DLL scritta da noi stessi oppure da un’applicazione presente sul server, ad esempio Microsoft Word.
Approfondisci

Form Builder: rilasciata la versione 1.4

Continua lo sviluppo di questa libreria, di cui ho fatto il mio cavallo di battaglia!
Per chi non l’ha mai vista in azione ecco qui il link alla guida iniziale della prima versione: Form Builder v1.0

Nuove funzionalità

Con il susseguirsi delle versioni sono state introdotti diversi miglioramenti tra cui:

  • plugin TinyMCE
  • prevenzione degli attacchi di tipo CSRF (Cross-site request forgery)
  • campo composto da un elenco di checkbox (con popolamento valori da DB e PHP)
  • possibilità di raggruppare le voci all’interno dei select box (tag <optgroup>)
  • formattazione automatica dei numeri decimali
  • possibilità di avere dei campi con una maschera di inserimento (ad es. date, orari)
  • il codice HTML generato è più facile da utilizzare con gli stili CSS

Approfondisci

Inserire codice Javascript in un file Pdf utilizzando Zend_Pdf

Tra le numerose librerie dello Zend Framework, è presente una molto interessante che permette di creare e manipolare file in formato PDF, chiamata Zend_Pdf.
Navigando tra la documentazione si possono trovare i metodi setJavascript e getJavascript, che in linea teoria permetterebbero di inserire codice Javascript all’interno del documento PDF.
Forse non tutti sanno che Adobe Acrobat a partire dalla versione 7, consente l’utilizzo di questo linguaggio di scripting per rendere dinamici e personalizzare i file PDF.
Approfondisci

Facebook Hacker Cup – Double Squares – Solution

Double Squares
A double-square number is an integer X which can be expressed as the sum of two perfect squares. For example, 10 is a double-square because 10 = 32+ 12. Your task in this problem is, given X, determine the number of ways in which it can be written as the sum of two squares. For example, 10 can only be written as 32 + 12 (we don’t count 12 + 32 as being different). On the other hand, 25 can be written as 52 + 02 or as 42 + 32.

Input
You should first read an integer N, the number of test cases. The next N lines will contain N values of X.

Output
For each value of X, you should output the number of ways to write X as the sum of two squares.
Approfondisci

Facebook Hacker Cup – Studious Student – Solution

Studious Student
You’ve been given a list of words to study and memorize. Being a diligent student of language and the arts, you’ve decided to not study them at all and instead make up pointless games based on them. One game you’ve come up with is to see how you can concatenate the words to generate the lexicographically lowest possible string.

Input
As input for playing this game you will receive a text file containing an integer N, the number of word sets you need to play your game against. This will be followed by N word sets, each starting with an integer M, the number of words in the set, followed by M words. All tokens in the input will be separated by some whitespace and, aside from N and M, will consist entirely of lowercase letters.

Output
Your submission should contain the lexicographically shortest strings for each corresponding word set, one per line and in order.
Approfondisci

Face detection per tutti i gusti

Come si può intuire dal nome stesso, la Face detection è una tecnologia utilizzata per riconoscere, o meglio, determinare la posizione e dimensione di volti umani all’interno delle immagini digitali.

Questa tecnologia, ormai onnipresente sui principali social network, ha raggiunto la maturità ed è dimostrato dal fatto che sono proliferate implentazioni in tutte le forme e linguaggi di programmazione.

Di seguito, propongo alcuni progetti che hanno attirato la mia attenzione.
Approfondisci

Creare grafici con PHP

I grafici, attraverso l’uso di forme e colori, sono un utile strumento per mostrare in maniera riassuntiva i dati.
In PHP esistono diverse librerie che permettono di creare grafici in maniera veloce, senza dover scontrarsi con le difficoltà della manipolazione delle immagini.
Tra le varie alternative che ho analizzato, in questo articolo voglio recensirne due in particolare, la prima, pChart è realizzata in PHP ed è un insieme di librerie stand-alone, cioè possono essere scaricate ed utilizzate direttamente; la seconda, Google Chart Tools, sono un insieme di API utilizzabili con Javascript.
Approfondisci