OCR dei PDF con Linux [Wine]

L’Optical Character Recognition è il famoso processo per cui un software analizza una immagine di un testo (solitamente stampato) e tenta di effettuarne la conversione in un documento modificabile. Questo può essere sia un semplice file di testo che una pagina formattata, dipende dal software. Sotto piattaforma Linux esistono diversi strumenti molto validi per questo “lavoro”, a cui si aggiungono alcuni siti web che svolgono questo compito. Tuttavia, io desideravo in particolare effettuare una operazione che sta diventando sempre più popolare, ovvero il cosiddetto PDF sandwich. Ci possono essere due situazioni in cui potete trovarvi ad avere questa necessità:

  1. Possedete un PDF di pagine scansionate, magari a partire da immagini belle pulite e ottimizzate con ScanTailor.
  2. Avete un PDF di un articolo scientifico compilato con \LaTeX, quindi sembra che ci sia il “testo vero” ma in realtà se provate a fare copia incolla (o una ricerca) tutto quello che viene fuori sono caratteri apparentemente privi di senso. Un esempio è questo paper, tra quelli che devo leggere per la mia tesi.

In entrambi i casi, il vostro scopo è ottenere un documento il cui aspetto esteriore sia lo stesso (quindi mantenendo le immagini) ma che sia ricercabile. Ciò viene realizzato da software appositi che creano un livello trasparente con del “vero testo” usando le tecniche OCR. Il risultato non sempre è perfetto, ma sicuramente è molto meglio di avere documenti totalmente non ricercabili. Ci sono alcune guide e script in merito, nonché un live CD nato per fare solo questo.

Tuttavia sono tutte tecniche basate sullo stesso principio: usano Tesseract oppure Cuneiform per creare un file hocr e poi hocr2pdf per creare il risultato finale. Io ho provato personalmente numerosi tutorial e programmi ma il problema è sempre lo stesso: il testo sovraimposto è spesso di dimensioni sbagliate, un po’ a casaccio, e a volte è completamente spostato rispetto alle parole visualizzate. Insomma, il risultato è indegno.

La soluzione funzionante

Alla fine mi sono arreso e ho optato per un software per Windows tramite Wine, in particolare PDF-Xchange Viewer. È un programma che nella versione a pagamento fa un sacco di cose che a me non servono, ma la versione gratuita ha un motore OCR niente male che allinea il testo precisamente e riconosce le colonne abbastanza bene.

Finestra OCR del programma
Finestra OCR del programma

La finestra di riconoscimento è molto semplice da usare e consente di scegliere la lingua e il tipo di PDF. Se il vostro PDF contiene già immagini scegliete la prima voce, ovvero Preserva contenuto originale & aggiungi livello testo. Se invece è un PDF con “falso testo” l’altra opzione vi consente di convertirlo in immagini e poi effettuare il riconoscimento. Se lo fate, vi consiglio una risoluzione di 200, che va bene anche per la stampa. A mio avviso 300 è esagerato, e crea file molto grandi. Alla fine vi basta salvare il documento PDF.

Note di installazione

Il programma si installa molto facilmente con Wine e nelle preferenze è possibile impostarlo in italiano e disattivare le voci PRO dal menu. Per effettuare l’OCR in italiano vi servirà il pacchetto di lingua addizionale, che trovate in questa pagina. L’unico problema è che a volte, con alcune versioni di Wine e (pare) di più nei sistemi a 64bit, il programma crasha quando si salva (seppure di solito il file viene salvato lo stesso). Per questo io vi consiglio di provare a installarlo con PlayOnLinux, nel quale potete testare diverse versioni di Wine e trovare un setup che per voi sia perfetto, anche se comunque non è obbligatorio farlo.

Se il vostro sistema operativo è a 64bit, potete anche risparmiare tempo e scaricare questo file .polApp [62 MB] che ho creato esportandolo da PlayOnLinux. Potete importarlo dal menu del programma, alla voce Plugins » PlayOnLinux Vault » Avanti » Restore an application. Contiene il programma impostato in italiano, i dizionari europei per l’OCR e il tema wooden per un aspetto migliore. A me funziona senza crashare, avendo impostato una versione vecchia di Wine (1.5.28).

Se invece usate Linux a 32bit e sperimentate i crash, provate anche la versione portable, alcuni asseriscono che funzioni meglio. Fatemi sapere se vi funziona e che ne pensate del programma!

Preconfigurare il Trinity Rescue Kit per contenere i motori antivirus e le definizioni aggiornate

Come sapete da qualche tempo ho predisposto una pagina web di riepilogo che contiene alcune indicazioni sui comandi e gli strumenti utili per la manutenzione dei sistemi Linux (principalmente) e di quelli Windows (secondariamente). Facendo attività come “consigliere pro pinguino” alle persone che conosco e come membro di un LUG, mi capita spesso di avere a che fare con alcune situazioni ricorrenti sia in ambito associazionistico che personale, tra cui posso elencare:

  • fare un riassunto delle specifiche hardware di una serie di PC
  • riparare il bootloader GRUB su un sistema Linux installato
  • ripartizionare un disco per creare un dual boot
  • resettare password di sistemi Linux o Windows
  • clonare partizioni in locale o via rete
  • ripulire un sistema Windows dalla “sporcizia” e dai virus più disparati

Per i primi punti potete trovare alcune informazioni nella pagina linkata sopra, per gli ultimi (principalmente) ho deciso di aggiungere alla piccola raccolta di dischi che mi porto dietro anche Trinity Rescue Kit, che può tornare utile pure per riparare sistemi Linux. Dalla pagina ufficiale si legge:

Trinity Rescue Kit or TRK is a free live Linux distribution that aims specifically at recovery and repair operations on Windows machines, but is equally usable for Linux recovery issues. Since version 3.4 it has an easy to use scrollable text menu that allows anyone who masters a keyboard and some English to perform maintenance and repair on a computer, ranging from password resetting over disk cleanup to virus scanning.

Molti ne parlano assai bene, e comunque è sempre bello provare nuovi dischi live. Ho deciso tra l’altro di includerlo in un DVD assieme ad altri dischi di ripristino costruendo un DVD “multi avvio”, ma di questo vi parlerò in un altro articolo. Di seguito voglio invece spiegarvi come modificare il disco per renderlo davvero pronto all’uso per ogni evenienza.

Modifiche da fare

Trinity Rescue Kit contiene al suo interno la possibilità di usare 5 motori di antivirus per fare la scansione di tutte le partizioni attive (anche se risulta particolarmente utile per quelle di Windows). È già installato ClamAV, il famoso antivirus open source, e poi consente di scaricare e avviare F-prot, Bitdefender, Vexira e Avast, i quali sono quattro software proprietari ma la cui licenza ne consente un uso gratuito per scopi non commerciali.

Questi motori di scansione non sono inclusi nel disco perché in questo modo la distribuzione si può usare anche per scopi commerciali (e alcuni antivirus non consentono di essere ridistribuiti), ma per chi non ha in mente di farne un uso commerciale c’è la possibilità di aggiungerli.

Lo scopo di questa guida è proprio questo: modificare il disco live di Trinity Rescue Kit per contenere i motori con le definizioni virus aggiornate al momento in cui farete il procedimento, così da non dover ripartire da zero ogni volta.

A questo si aggiungono altre due modifiche piccole ma importanti: impostare la tastiera italiana e far sì che sia possibile collegarsi in rete automaticamente. Trinity infatti di default non contiene impostazioni sui DNS, i quali sono necessari ad esempio per connettersi ai server degli antivirus (sia ClamAV che quelli proprietari) e scaricare al volo le definizioni aggiornate.

Prima di cominciare, se volete seguire la stessa mia strada e abilitare tutti i motori antivirus, assicuratevi di richiedere un codice di licenza non commerciale gratuito di Bitdefender e Avast: entrambe le licenze durano “solo” un anno ma comunque può sempre tornare utile averle. Invece per gli altri motori non è necessario un codice (e ricordatevi di rispettare la licenza non commerciale!).

Ambiente di lavoro

Per modificare il livecd dovrete innanzitutto avviarlo e poi avere a disposizione una partizione su cui salvare la ISO risultante. Questo rende le cose un po’ “complicate”, in sostanza avete due opzioni:

  • usare una macchina virtuale: vi servirà una macchina virtuale (VirtualBox o altri software vanno bene indifferentemente) con un sistema operativo già installato e quindi con delle partizioni già fatte sul disco virtuale. Potete quindi avviare il disco live in ambiente virtuale e seguire le istruzioni del mio post passo passo. Alla fine vi ritroverete la ISO modificata in una partizione del disco virtuale, dovrete quindi utilizzare le cartelle condivise (ad esempio quelle di VirtualBox) o qualche altro metodo per riportarla nel vostro disco fisso “reale”.
  • usare il vostro computer: per fare questo dovrete spegnere il PC e avviare il disco live. Quindi dovrete prima di tutto masterizzarlo (vi consiglio caldamente un CD-RW o una chiavetta USB) e seguire il mio post da un altro dispositivo oppure stampando le istruzioni e annotando i codici degli antivirus (siate parsimoniosi con la carta). Avete però il vantaggio che alla fine vi ritroverete con la ISO direttamente nel vostro hard disk. Tenete conto che vi servirà una connessione via cavo ethernet.

Decidete voi qual è il metodo che preferite, io ho optato per la macchina virtuale. Ovviamente vi servirà anche l’ultima versione di Trinity Rescue Kit: nel mio caso ho usato la 3.4 build 372 ma il procedimento dovrebbe essere analogo anche per versioni successive. Nell’ultima parte del post sarà necessario anche l’uso di ISO Master, che potete scaricare dai repository di Ubuntu e probabilmente anche di altre distribuzioni.

Procedura dettagliata

Innanzitutto avviate il disco live di Trinity Rescue Kit e selezionate la prima opzione per l’avvio predefinito. Una volta caricato il sistema vi troverete di fronte al menu, il quale si può navigare semplicemente con i tasti freccia e il tasto Invio.

Il semplice menu testuale di Trinity Rescue Kit

Prima di tutto andate alla voce Keyboard layout selection e scegliete la tastiera italiana. Per raggiungere il tasto Ok premete il tasto Tab e poi Invio. A questo punto selezionate Go to a shell per avviare il terminale e impostare la rete.

Come vi dicevo, di default non ci sono DNS impostati, quindi anche se il sistema si connette automaticamente alla rete (a patto che il cavo sia inserito in fase di accensione), non è possibile risolvere i nomi di dominio, come clamav.net, per capirsi. Procedete quindi a aggiungere due righe che fanno riferimento ai DNS di Google (se avete esigenze specifiche potete anche impostarne di diversi):


echo "nameserver 8.8.8.8" >> /etc/resolv.conf
echo "nameserver 8.8.4.4" >> /etc/resolv.conf

Ovviamente dato che non potete fare copia e incolla fate attenzione ad ogni singolo carattere. A questo punto se provate a fare un ping al mio blog, dovreste ricevere dei valori in millisecondi che indicano il tempo di risposta, e quindi che il sito è stato raggiunto:


ping -c 4 andrealazzarotto.com

Ora potete premere Ctrl+D per ritornare al menu. Selezionate la voce Virus Scanning per vedere la lista dei motori utilizzabili. Dato che Bitdefender di default viene installato con una chiave di prova valida solo 30 giorni, vi faccio sistemare prima questo software così poi è un problema in meno.

Avviate quindi la voce Scan with BitDefender e lasciate che l’antivirus venga scaricato e poi premete Invio per visualizzare la licenza. Premetelo ancora ripetutamente fino alla fine, quando dovrete scrivere accept e poi ripremere Invio. Attendete che vengano aggiornate tutte le definizioni, e quando vi dice che inizia la scansione premete Ctrl+C tre o quattro volte per interromperla.

Ora è il momento di aggiornare la chiave di licenza inserendo quella che vi è stata mandata per email. Se dopo aver interrotto Bitdefender vi rimane la shell tenetela aperta, altrimenti tornate al menu principale e avviatela. Inserite quindi questi comandi per aggiornare il file di configurazione:


cd /opt/BitDefender-scanner/etc
sed -si "s/^Key\ =\ .*/Key = XXXXXXXXXXXXXXXXXXXX/g" bdscan.conf

Al posto delle X inserite il vostro codice di licenza. A questo punto Bitdefender è configurato e per questo motore di antivirus non bisogna fare altro. La release sulla quale ho provato io aveva un piccolo problema con il motore di Vexira, che configureremo tra poco: lo script virusscan che si occupa di dare una interfaccia comune ai vari motori ha un errore nel comando che richiama l’aggiornamento delle definizioni di Vexira, che quindi non funziona. Per risolverlo, date questi comandi:


cd /bin
sed -si "s/vdbupdate\.sh\ -p/vdbupdate.sh/g" virusscan

Ora potete premere Ctrl+D e tornare al menu degli antivirus, ripetendo per tutti quanti (tranne che per Bitdefender) la procedura:

  • avvio
  • attesa degli aggiornamenti
  • interruzione della scansione
  • ritorno al menu

Durante l’installazione di Avast vi verrà richiesta la chiave di licenza, che quindi viene subito attivata.

Salvare le modifiche

Ora che avete configurato tutto dovete produrre una nuova immagine ISO per mantenere le modifiche effettuate. Purtroppo non verranno salvati i valori dei DNS, ma vi dirò tra poco come sistemare anche questo dettaglio. Prima di tutto, tornate alla shell e leggete la lista delle partizioni presenti sul disco:


fdisk -l
df -h

Ve ne serve una per salvare l’immagine del disco e dovete avere almeno 1,1 GB di spazio libero perché vengono creati dei file temporanei. Una volta individuata la partizione, ricordatevi il suo identificativo. Nel mio caso ho scelto sda2, ma voi dovete adattare le prossime righe al vostro caso specifico. Date i seguenti comandi:


mkdir /sda2/temp
updatetrk -b /sda2/temp -i /sda2

Il primo crea una cartella temporanea nella partizione scelta, il secondo avvia la procedura di creazione della nuova ISO (alla quale dovrete rispondere y). Ora non vi resta che attendere la fine del processo e spegnere il PC per avere la nuova immagine (quasi) pronta all’uso: basterà solo sistemare il problema dei DNS mancanti.

Quando avete recuperato la ISO dalla partizione dove l’avevate salvata, apritela con ISO Master. Dovete estrarre in una cartella a vostra scelta il file initrd.trk e successivamente rinominarlo in initrd.gz.

Il file da estrarre con ISO Master

A questo punto dovete decomprimere il file initrd.gz e estrarre il file initrd. Quindi dovete montarlo come un filesystem:


cd /directory/dove/si/trova/il/file/
mkdir montaggio
sudo mount -o loop initrd montaggio
gksu gedit montaggio/etc/resolv.conf

Vi si aprirà una finestra dell’editor di testo (se non usate gedit dovrete adattare l’ultima riga). Inserite le seguenti righe relative ai nameserver:

nameserver 8.8.8.8
nameserver 8.8.4.4

Salvate e proseguite con i seguenti comandi per applicare le modifiche al filesystem contenuto nel file initrd:


sync
sudo umount initrd
rm -rf montaggio

Ora cancellate il vecchio file initrd.gz e comprimete initrd in un nuovo archivio initrd.gz. Quindi rinominate di nuovo il file in initrd.trk e usate ISO Master per sostituire il file vecchio nella ISO con quello nuovo. Fate quindi File > Salva come e scegliete il nome per la nuova ISO. Ora potete eliminare quella vecchia e il vostro Trinity Rescue Kit è pronto!

Conclusioni

Trinity Rescue Kit è un ottimo strumento per fare recovery di sistemi Windows e Linux, con diversi strumenti di scansione, pulizia e clonazione. Questo tutorial vi permette di personalizzare e ottimizzare il disco in modo da averlo pronto all’uso qualora se ne presentasse la necessità, anche se può sembrare un procedimento lungo in realtà ci si mette di più a spiegarlo che a farlo e fa comunque risparmiare tempo a medio o lungo termine.

Vi ricordo infine che per fare un po’ di pulizia potete eliminare i file di log delle scansioni dalle varie partizioni dei dischi sui quali usate questo sistema, compresa la cartella di quarantena chiamata TRK-INFECTED e la cartella temp usata per creare la ISO. Voi come pensate di usare Trinity Rescue Kit? Se avete commenti o suggerimenti fatemi sapere!

Aggiornare il BIOS senza Windows

Vi avevo già scritto che ho cancellato Windows dal primo giorno in cui ho ricevuto il mio portatile e anche che mi era stato possibile trovare un modo per aggiornare lo stesso il BIOS. Purtroppo la guida che avevo scritto è valida solo per computer Dell, e non è neppure troppo semplice da seguire. Non solo, non sono neppure sicuro sia ancora valida.

Giusto oggi sono per caso venuto a conoscenza che già da un po’ era uscita una nuova versione del BIOS per il Dell XPS M1530 e ho trovato quasi per caso un modo semplicissimo per aggiornarlo: è sufficiente infatti creare un disco live minimale di FreeDOS per permettere al programma di partire. Il metodo che vi vado a spiegare prevede che il produttore del PC fornisca un file eseguibile di aggiornamento che sia compatibile con MS-DOS, fortunatamente questo succede quasi sempre.

La procedura si basa sulle indicazioni di CGSecurity per fare un disco live di TestDisk e nell’esempio uso il nome del mio file, specificamente 1530_A12.EXE. Dovete naturalmente adattare le istruzioni cambiando il nome.

Assumendo che abbiate il file eseguibile a portata di mano, scaricate il kit per creare dischi FreeDOS e scompattatelo:

wget -N http://www.fdos.info/bootdisks/ISO/FDOEMCD.builder.zip
unzip FDOEMCD.builder.zip
cd FDOEMCD/CDROOT

Ora tenete aperto il terminale nella directory in cui siete appena entrati (CDROOT) e con il file manager copiateci dentro l’eseguibile. A questo punto dovete aggiungere una riga al file AUTORUN.bat:

echo "M1530_A12.EXE" >> AUTORUN.BAT
unix2dos AUTORUN.BAT

L’ultimo comando ci assicura di avere il file correttamente formattato per sistemi DOS (se non avete il pacchetto dovrete installarlo). Non resta altro da fare che generare l’immagine ISO da masterizzare (la troverete dentro a FDOEMCD):

cd ..
mkisofs -o bios-update.iso -V "Bios CD" -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -N -J -r -c boot.catalog -hide boot.catalog -hide-joliet boot.catalog CDROOT

Fatto ciò vi consiglio caldamente di testare il disco in una macchina virtuale. Ovviamente non riuscirà a procedere con l’aggiornamento, ma almeno potrete assicurarvi che parta correttamente. Dato che la ISO avrà una dimensione irrisoria e userete il disco una volta sola, vi raccomando l’uso di un CD-RW. 😉

Come avere i font con antialiasing in Wine e integrarne meglio l’aspetto grafico

A dire il vero non mi capita spesso di utilizzare Wine, per il semplice fatto che in genere trovo per Linux tutto ciò di cui ho bisogno. Tuttavia in questo periodo sto facendo un lavoro di gruppo per un esame e ho deciso di installare il client Windows di Evernote per sfruttare le funzioni che l’interfaccia web non offre. Avevo provato Nevernote/Nixnote ma a volte scombina il layout di alcune note, e comunque si tratta solo di una situazione temporanea.

Se c’è una cosa che non apprezzo particolarmente di Wine, comunque, è la perseveranza con cui rimane non integrato con tutto il resto del sistema. Ovviamente non si può pretendere di avere un look perfettamente analogo a GNOME o KDE, però non capisco proprio come la loro implementazione del font Tahoma (basata in realtà sul Bitstream Vera Sans) sia stata realizzata di proposito con i caratteri senza antialiasing a determinate dimensioni, per imitare il comportamento discutibile di alcune versioni di Windows.

Per chi non lo sapesse, l’antialiasing (o più precisamente l’hinting, nel caso dei font) è una sfumatura dei pixel per migliorare la leggibilità. Sapete già che sono abbastanza esigente dal punto di vista dell’integrazione grafica dei software, però in questo caso costituisce anche un problema serio di leggibilità delle finestre.

Ho scoperto recentemente che si può installare il Tahoma semplicemente usando winetricks e questo risolve parzialmente il problema. Tuttavia personalmente ho notato che Evernote continuava a non metterlo in alcune schermate (e presumibilmente anche altri programmi per Windows). Per questo motivo ho deciso di trovare una soluzione alternativa e già che c’ero anche di applicare un tema trovato in rete tempo fa. Il procedimento non è lungo ma il risultato è molto soddisfacente.

Elaborazione grafica delle preferenze di Wine prima e dopo il "trattamento"

Partiamo dal tema: si tratta di uno stile per Windows XP chiamato Wooden e lo potete scaricare da questo sito russo (cliccate dove vedete scritto “wooden.zip [7.74 Mb]“). Una volta scompattato, andate nelle preferenze di Wine alla scheda Integrazione della Scrivania e premete Installa un tema: Vi verrà chiesto di scegliere il file con estensione .msstyles. Tenete presente che in alcune finestre i bottoni rimarranno senza angoli arrotondati, però in genere avrà tutto un’aspetto migliore e i colori somiglieranno al tema di Ubuntu.

Riguardo ai font, la mia idea è stata quella di usare la famiglia Droid Sans (quella dei primi dispositivi Android, per intenderci) e inserire nella cartella di sistema di Wine una copia dei file appositamente rinominati. Per farlo, dovrete assicurarvi tramite il Software Center (o gestore di pacchetti della vostra distribuzione) di avere installati questi font e anche il pacchetto fonttools, necessario per quello che andremo a fare tra poco. Per installarli su Ubuntu si può fare così:

sudo apt-get install ttf-droid fonttools

A questo punto è il momento di copiare i font nell’apposita directory:

cd ~/.wine/drive_c/windows/Fonts/
cp /usr/share/fonts/truetype/ttf-droid/DroidSans.ttf tahoma.ttf
cp /usr/share/fonts/truetype/ttf-droid/DroidSans-Bold.ttf tahomabd.ttf

Come anticipato prima, ai font dev’essere attribuito un nuovo nome. Non è sufficiente rinominare i file perché all’interno contengono salvato il nome originale. Andiamo quindi a convertire i file in formato XML per poi sostituire il nome con Tahoma:

ttx tahoma*.ttf
rm tahoma*.ttf
sed -si "s/Droid\ Sans/Tahoma/g" tahoma*.ttx
sed -si "s/DroidSans/Tahoma/g" tahoma*.ttx
ttx tahoma*.ttx
rm tahoma*.ttx

In sostanza dopo la prima conversione sostituiamo con sed tutte le occorrenze necessarie e poi procediamo alla riconversione, mentre i comandi rm fanno pulizia quando serve. A questo punto il gioco è fatto, basta avviare un programma che gira con Wine per notare la differenza. Ho provato anche con altri font, compreso quello di Ubuntu, ma i risultati erano meno soddisfacenti. Voi che ne dite? 🙂

Dissuadere gli utenti di Internet Explorer tramite uno script

Per lungo tempo Internet Explorer è stato in modo assoluto ed incontrastato il browser più utilizzato al mondo. Questo è dipeso principalmente da strategie di preinstallazione aggressive (e blocco della disinstallazione), ma forse non sarebbe un gran problema se Internet Explorer funzionasse decentemente.

Vi spiego che intendo per decentemente: un browser dovrebbe supportare, al momento del rilascio, tutte le tecnologie web già divenute standard de iure e anche magari qualcuna di quelle standard de facto (ma questo è opzionale). Ci sarebbero poi da fare anche molti discorsi sulla sicurezza ma tralasciamo. Internet Explorer è noto per non supportare granché delle migliori tecnologie CSS. Con Javascript sembra andare un po’ meglio solo perché gli autori di Jquery e librerie simili fanno davvero i miracoli per far funzionare tutto, in realtà non è tutto oro quello che luccica. Addirittura bisogna inserire un meta tag nelle pagine per far comportare Internet Explorer (a partire dalla versione otto) in modo un po’ più normale, altrimenti fa apposta a comportarsi male.

Questo cosa implica? Si arriva all’ironica regola che ho inventato e deciso di chiamare del 3+3:

Se ci vogliono 3 giorni per creare e far funzionare qualcosa in un browser standard, ci vogliono 3 mesi per far funzionare la stessa cosa con Internet Explorer.

Sembra una battutina, però è vero, e i problemi sono ancora peggiori.

La situazione attuale

Prima vi parlavo delle date di rilascio e dovremmo fare un altro piccolo approfondimento su questo. Di seguito riporto le date di rilascio ufficiali per le varie versioni di IE:

  • versione 6 – 2001
  • versione 7 – 2006
  • versione 8 – 2009
  • versione 9 – 2011

Secondo Microsoft il 10% delle persone usa Internet Explorer nella versione 6, che è uscita 10 anni fa. Anche se al tempo fosse stato il browser migliore della categoria, ora è comunque un suicidio navigare con quella roba. Figuratevi sviluppare siti che funzionino lì. Lo stato delle cose è grave: si stima che il 40% delle persone usi Windows XP che ha come ultima versione disponibile la 8, vecchia di 2 anni (ma in realtà anche di più).

È la stessa azienda di Redmond che incoraggia le persone ad aggiornare subito il browser, il problema è che lo fa invitando a usare Internet Explorer 8 oppure 9. Se vi state chiedendo che male ci sia, leggete l’articolo Internet Explorer 9 e il supporto ai web standard per rendervi conto che seppur uscito nel 2011 è parecchio indietro rispetto a qualsiasi altro browser che rispetta veramente gli standard (per citarne alcuni Firefox, Safari, Chrome, Opera…).

Tra uno o due anni saremo punto e a capo: molti utenti che usano Internet Explorer e rimangono indietro, con gli sviluppatori web che si strappano i capelli cercando di fare siti web funzionanti.

Lo script dissuasore

Per fortuna, se gestite dei siti web e come me volete evitare di diventare pazzi, dovendo avere anche a disposizione una macchina Windows per fare test esotici e sperare che le cose funzionino, potete offrire ai vostri utenti un’alternativa migliore.

Basandomi sul vecchio script di Explorer Destroyer, nella versione modificata da Xavier, ho ritoccato e sistemato un popup che avvisa gli utenti di Internet Explorer che è consigliabile passare a Firefox, fornendo utili motivazioni, e l’ho racchiuso in uno script PHP di facile utilizzo per chi realizza siti web. Questo non impedisce ai navigatori con IE di vedere il sito (basta cliccare un link e l’avviso sparisce).

Perché Firefox? In realtà si poteva decidere di consigliare alle persone di usare un browser che supporti gli standard (che in parole meno gentili vuol dire “qualsiasi altro browser”), però secondo me è bene consigliare Firefox per almeno 3 motivi:

  • è ragionevolmente diffuso e multipiattaforma, così l’utente può riconoscerlo e usarlo altrove
  • è software libero
  • dando un’indicazione generica (“installa qualcos’altro…”) senza fornire alternative è poco efficace perché molto probabilmente chi usa Explorer non ne conosce e non ha voglia di cercarne una

Il procedimento di installazione e configurazione sul proprio sito richiede 5 minuti, e una volta finito chi naviga con IE riceverà una volta al giorno (oppure ogni tot di giorni a vostra scelta) questo messaggio:

Messaggio visualizzato da Internet Explorer 6

La scelta che ho voluto fare è quella di iniettare il codice nella pagina solo se ad un primo controllo fatto via PHP l’utente usa Internet Explorer. Questo vuol dire che l’HTML non viene “sporcato” se chi naviga usa altri browser, e quindi le pagine sono anche lievemente più veloci da scaricare e visualizzare.

Come installarlo

Come detto prima, lo script richiede:

  • la presenza di PHP
  • l’accesso FTP all’hosting
  • il poter individuare (o generare con PHP) una stringa contenente il giusto tag <body> da passare alla funzione

Per prima cosa avrete bisogno di scaricare l’archivio contenente lo script e un riassunto di queste istruzioni. Potete fare il download da qui e poi dovete caricare la cartella IE nella radice del vostro hosting.

A questo punto la serie di cose da fare è abbastanza semplice.

Se volete, cambiate il valore var daysToSleep = 0; nel codice per impostare quanti giorni di “riposo” deve attraversare l’avviso prima di ricomparire nuovamente.

  • 0 significa che verrà mostrato una volta al giorno
  • -1 significa che verrà mostrato su ogni singola pagina, sempre

Quindi bisogna modificare il file “header” o equivalente del proprio CMS (di solito va fatto nel tema che si utilizza), e inserire al posto del tag <body> il codice seguente, opportunamente adattato:

<?php
// inserisce il semplice tag body per Firefox, il check per Explorer
require(getenv("DOCUMENT_ROOT").'/IE/IEcode.php');
printbody( <ARG> );
>

Al posto di <ARG> bisogna inserire la stringa del body (un esempio potrebbe essere <body class='prova'>) secondo le convenzioni del linguaggio PHP. Se si vuole inserire un semplice tag senza attributi si può anche lasciare la funzione senza argomento (non una stringa vuota “”).

Salvate le modifiche è tutto, potete provare con qualsiasi browser cambiando il vostro user-agent per vedere se funziona (se non usate IE vedrete male il banner, questo ve lo spiego nel paragrafo seguente). Chi usa Windows può fare la prova direttamente da Internet Explorer senza che sia necessario modificare la configurazione del browser.

Personalizzare il codice e il problema della PNG

Con un minimo di conoscenza di HTML troverete facilmente dove mettere le mani in fondo al file PHP per cambiare il testo della casella gialla. Fate attenzione però se volete cambiare il banner di Firefox con uno degli altri forniti da Mozilla. Vi ricordo infatti che le versioni più vecchie di Internet Explorer non hanno supporto alle PNG trasparenti, e ci sono innumerevoli discussioni e hack riguardo alla risoluzione di questo problema. Personalmente, dato che il banner è una sola immagine, ho optato per quella del filter.

Il codice del banner di Firefox, rispetto alla versione originaria di Mozilla, è il seguente:


<a href='http://www.mozilla.org/firefox?WT.mc_id=aff_en11&WT.mc_ev=click'>
<img src='http://www.mozilla.org/contribute/buttons/120x240bubble_b.png' alt='Firefox Download Button' border='0'
style="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true', src='http://www.mozilla.org/contribute/buttons/120x240bubble_b.png'); padding-top: 240px;" />
</a>

Se volete sostituire il pulsante, dovete cambiare solo l’url dell’immagine (che è presente 2 volte come potete notare) e il padding-top dev’essere uguale all’altezza della stessa, perché così Explorer nasconde l’immagine e la ricarica sopra con AlphaImageLoader. Per questo qualsiasi browser normale vi farebbe vedere l’immagine scostata verticalmente. Be’, alla fine l’importante è che funzioni su IE!

Conclusione

La strada verso un web fatto di standard aperti, affermati e condivisi è estremamente importante. Il browser è il software che usiamo tutti i giorni, perciò risulta fondamentale che questo visualizzi le pagine web in un modo corretto e moderno. Nel nostro piccolo possiamo fare qualcosa per far conoscere alle persone un software libero che funziona molto meglio di Internet Explorer e quindi da un leggero contributo a evitare i mal di testa.

Se usate lo script sul vostro sito mi farebbe piacere ricevere un commento per saperlo e se lo ritenere interessante diffondete la notizia.