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!

Modificare i file PDF in tutti i modi possibili

Il formato PDF è ottimo per gestire i documenti, però è un po’ ostico per quanto riguarda le modifiche. Nonostante questo, ci sono molte operazioni possibili per ritoccare i documenti PDF e adattarli alle proprie esigenze. Cercherò in questo articolo di raccogliere (forse ambiziosamente) tutte le operazioni che il nostro amato Linux ci consente (descritte in almeno un modo tra quelli disponibili).

Quindi è probabile che in futuro il post venga ulteriormente aggiornato, probabilmente grazie ai vostri commenti e suggerimenti! Non parlerò dei molti modi per creare file PDF, visto che sono cose che moltissimi sanno già e comunque esula dallo scopo dell’articolo. Vi anticipo già che sul blog di Aldo, sempre piacevole da leggere, trovate un articolo simile. Abbiamo avuto la stessa idea senza saperlo e la cosa ci ha divertito.

I programmi utilizzati

Per non rendere l’articolo più complicato da leggere vi elenco qui tutti gli strumenti usati. Chiaramente tutto dipende da quale operazione volete fare (quindi non è detto che vi serviranno tutti). Rispetto ad Aldo io mischio un po’ gli strumenti ad interfaccia grafica con quelli a linea di comando, spero che non sia un problema.

Vi posso dire per certo che trovate tutti questi componenti nel gestore pacchetti di Ubuntu, ma sono convinto che qualsiasi distribuzione tra quelle più famose li comprenda nei propri repository.

Modifiche relative all’ordine delle pagine

Dividere un PDF in più parti

Pdfsam fornisce diverse opzioni attraverso l’interfaccia grafica alla sezione Split, tra le quali:

  • burst (divisione in pagine singole)
  • divisione dopo n pagine
  • divisione ogni n pagine
  • divisione delle pagine pari o dispari

Unire vari PDF

In questo caso pdfsam permette un semplice accodamento di più documenti, cosa che si può ottenere anche con pdftk usando questo comando:

pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf

Eliminare/tenere solo alcune pagine

Usando PDF-Shuffler è possibile selezionare col mouse una o più pagine (aiutandosi con i tasti Shift o Ctrl) e poi premere Canc per eliminarle. Se invece un documento contiene molte pagine e se ne vogliono preservare solamente alcune è più semplice farlo da terminale. Cito l’ottimo esempio dal post di Aldo:

Col seguente comando estraiamo le pagine 3, dalla 10 alla 20, 25, 28, 32, dalla 45 alla fine.

pdftk input.pdf cat 3 10-20 25 28 32 45-end output output.pdf

Modificare arbitrariamente l’ordine delle pagine

Tramite PDF-Shuffler si possono accodare più PDF (oppure lavorare su uno solo) e poi spostare le pagine semplicemente tramite drag’n’drop.

Alternare le pagine tra due PDF distinti (interleave)

Questo si rivela utile nel caso in cui sia necessario modificare separatamente le pagine pari da quelle dispari (per esempio per ritagliare con margini diversi) oppure quando abbiamo un documento PDF con 2 pagine per foglio che vogliamo spezzare in modo da avere pagine singole. Le istruzioni per il ritaglio le vedremo dopo, intanto supponiamo di avere due documenti, dispari.pdf e pari.pdf, da voler alternare. Il trucco l’ho trovato sul blog Binary Static, e consiste nel fare il burst dei due PDF usando nomi opportuni per le pagine, in modo che poi vengano ordinate correttamente.

pdftk dispari.pdf burst output %04d_A.pdf
pdftk pari.pdf burst output %04d_B.pdf

Si provvede dunque all’unione di tutte le pagine (è importante che non ci siano altri file PDF estranei nella stessa directory):

pdftk *.pdf cat output out.pdf

Preparare la stampa a libretto (booklet)

Per realizzare autonomamente un libretto da stampare su fogli che poi andranno piegati e rilegati insieme, è necessario ridisporre le pagine in modo che l’ordine sia corretto una volta che viene fatta la rilegatura. Si può fare facilmente passando per il formato PS (PostScript). I comandi sono i seguenti:

pdftops documento.pdf output.ps
psbook output.ps tmp.ps
psnup -pA4 -2 tmp.ps booklet.ps
rm output.ps tmp.ps
ps2pdf booklet.ps
rm booklet.ps

In pratica si converte il documento in PostScript e si ordinano le pagine a libretto. Si usa psnup (vedi più sotto) per metterlo su due pagine in formato A4 (ovviamente si può cambiare) e poi si riconverte il file ottenuto in PDF. Qua e là si fa un po’ di pulizia. Sulle differenze tra pdf2ps e pdftops consiglio di leggere questo articolo. Ricordatevi infine, quando stampate, di fare correttamente il fronte-retro!

Modifiche sull’aspetto delle pagine

Ruotare le pagine

Il modo più comodo di ruotare di 90° o 180° a piacimento alcune (o tutte le) pagine di un PDF, è quello di usare PDF-Shuffler. Una volta selezionate le pagine desiderate (aiutatevi sempre con i tasti Ctrl o Shift), cliccate col destro per scegliere dal menu come ruotarle. Una volta finito esportate il file. Si possono ruotare le pagine anche tramite il terminale usando pdftk: consultate l’articolo di Aldo per questo aspetto.

Ritagliare i margini

Se volete ritagliare approssimativamente i bordi delle pagine, il metodo più facile è usare ancora PDF-Shuffler. Il menu contestuale ha una voce per il ritaglio, la nuova finestra che si apre vi chiede un valore in percentuale per ogni lato. Ricordate che questo valore è sempre relativo alla pagina di partenza, anche se lo cambiate successivamente.

Se invece avete un documento con bordi precisi dove ritagliare, dovrete ricorrere a un sistema un po’ più macchinoso. Per questo avrete bisogno innanzitutto di convertire la pagine da ritagliare in una immagine dalla quale misurare dei pixel. Ne approfitto quindi per dirvi come convertire un PDF in immagini. Usate ImageMagick in questo modo:

convert -density 288 documento.pdf -resize 25% documento.jpg

Il trucco di usare una risoluzione di 288 e poi riscalare del 25% si chiama supersampling e consente di avere un’immagine precisa e con l’antialiasing. Dovete quindi aprire l’immagine con Gimp o un altro editor di immagini e misurare i pixel che volete tagliare da ogni lato. Una volta fatto questo, salvate questo codice in Python dentro a un file chiamato pdf_crop.py e dategli i permessi di esecuzione. Usatelo nel seguente modo:

pdf_crop.py -p 1.0 -m "10 20 30 40" -i documento.pdf

Cambiate i valori in pixel: in questo esempio lo script taglia il documento di 10 pixel a sinistra, 20 in alto, 30 a destra e 40 in basso.

Nei commenti è stato suggerito anche Briss, che consente di ritagliare una o più zone, in modo da poter anche dividere una pagina in più parti. Purtroppo non è disponibile nei repository però vale la pena provarlo.

Ridimensionare le pagine

Anche in questo caso si può lavorare con il documento convertito in PostScript. Si usa quindi psresize per cambiare il formato di carta e ridimensionare per il meglio il documento. Tenete presente che dovete conoscere la dimensione in centimetri prima e dopo il ridimensionamento, e calcolare che livello di percentuale è richiesto. Per esempio, per ridimensionare un A4 in A5, dovete scalare circa del 70% (cioè 0.7) e passare da una dimensione di 21×29.7 cm a una di 14.85×21 cm.

pdftops documento.pdf output.ps
pstops "1:0@0.7" output.ps scalato.ps
psresize -w 21cm -h 29.7cm -W 14.85cm -H 21cm scalato.ps ridimensionato.ps
ps2pdf ridimensionato.ps
rm output.ps scalato.ps ridimensionato.ps

Mettere più pagine in una

Come accennavo prima, per disporre più pagine in una in un documento PostScript, si può usare il comando psnup. Ad esempio, per mettere 4 pagine in una su un foglio A4, potete fare così:

pdftops documento.pdf output.ps
psnup -PA4 -4 output.ps multipagina.ps
ps2pdf multipagina.ps
rm multipagina.ps output.ps

Operazioni relative all’intero documento

Riparare un PDF danneggiato

In alcuni casi un file PDF con piccoli difetti può essere letto male dai lettori, ma si può tentare di recuperarlo. Per farlo, dovete semplicemente “unire” quel file a nessun altro, con uno dei metodi che ho indicato inizialmente (pdftk oppure pdfsam).

Sbloccare le operazioni sui PDF

Alcuni file vengono creati con il blocco su alcune operazioni, come ad esempio la stampa oppure la copia del testo. Su Linux quasi sempre non è un problema, visto che questi blocchi sono ignorati da vari lettori, però se dovete passare un documento a una persona che usa Adobe Reader potrebbe tornare utile sbloccare il PDF.

Per farlo, aprite il file in PDF-Shuffler e poi esportatelo semplicemente. In alternativa si può usare il sito PDFUnlock! per documenti fino a 5MB. Tenete presente che questo metodo funziona solo per i PDF con permessi bloccati (stampa, copia, …) e non con i PDF protetti da password per la lettura, i quali non si possono sbloccare così facilmente.

Se il file è un PDF in versione 1.5 (invece della più diffusa 1.4) PDF-Shuffler può aver problemi a esportarlo. In questo caso, avete due ulteriori alternative un po’ meno ottimali al sito PDFUnlock!:

  • convertire il file in PS e poi di nuovo in PDF come spiegato nel paragrafo successivo (relativo alla compressione)
  • aprirlo con Evince e usare la funzione di stampa “su file” per creare un nuovo PDF (perderete l’orientamento delle pagine orizzontali)

Comprimere gli elementi grafici per ridurre il peso

Di questo avevo già parlato in un altro post, in sostanza si tratta di convertire in PS e poi di nuovo in PDF: quando il documento contiene immagini molto pesanti, queste vengono compresse automaticamente.

pdftops input.pdf tmp.ps
ps2pdf tmp.ps compresso.pdf
rm tmp.ps

Aggiornamento 29/03/2015: esiste un altro metodo che in genere dà risultati migliori e permette una regolazione più precisa. Potete usare Ghostscript per creare un nuovo file scegliendo il livello di qualità delle immagini, in questo modo:

gs -sDEVICE=pdfwrite -dPDFSETTINGS=/ebook -dCompatibilityLevel=1.4 -r75 -dNOPAUSE -dQUIET -dBATCH -sOutputFile=compresso.pdf input.pdf

Le varie qualità disponibili sono le seguenti, come indicate in questo sito:

-dPDFSETTINGS=/screen   (screen-view-only quality, 72 dpi images)
-dPDFSETTINGS=/ebook    (low quality, 150 dpi images)
-dPDFSETTINGS=/printer  (high quality, 300 dpi images)
-dPDFSETTINGS=/prepress (high quality, color preserving, 300 dpi imgs)
-dPDFSETTINGS=/default  (almost identical to /screen)

Per ulteriori opzioni, fate riferimento al sito linkato sopra.

Modificare i metadati

Per cambiare le informazioni interne, come l’autore del documento, è utile prima di tutto estrapolare quelle che ci sono già:

pdftk input.pdf dump_data output info.txt

Poi si può modificare il file di testo con le opportune informazioni, e riscriverle così:

pdftk input.pdf update_info info.txt output output.pdf

Ringrazio Aldo, perché ho estratto queste istruzioni dal suo post. Cito inoltre questo stralcio dove dice che parametri si possono inserire.

Un esempio di elenco di metadati:

InfoKey: Title
InfoValue: Titolo del PDF
InfoKey: Subject
InfoValue: Soggetto del PDF
InfoKey: Keywords
InfoValue: Parole, Chiave, Del, PDF
InfoKey: Author
InfoValue: Autore del PDF

Estrarre i font

Se volete estrarre un carattere incorporato da un documento, potete usare FontForge. Aprite il programma e vi si presenterà la schermata Open font. Su Filter impostate Extract from PDF e poi selezionate il vostro file. Tenete conto che molti font nei PDF contengono solo un sottoinsieme dei caratteri, e molto spesso i font sono protetti da copyright. In alcuni casi sarà FontForge a rifiutarsi di estrarre il font.

Una volta aperto il carattere ci sono diverse ottimizzazioni da fare, leggete questo articolo per i dettagli.

Estrarre le immagini

Questo è uno dei compiti più semplici. Il seguente comando creerà una serie di immagini in formato XPM il cui nome inizia per estratta-.

pdfimages documento.pdf estratta

Estrarre il testo

Per convertire un PDF in formato TXT basta fare:

pdftotxt documento.pdf

Se volete soltanto ricercare all’interno dei documenti PDF, forse è più conveniente installare e adoperare pdfgrep. Vedete anche il paragrafo successivo riguardante il testo contenuto nelle immagini.

Effettuare l’OCR dei PDF contenenti immagini

È possibile “sovraimporre” il testo sulle immagini di un PDF in modo da renderlo ricercabile. Ho scritto un post a riguardo in cui spiego le limitazioni delle soluzioni open source e propongo l’uso di un software tramite Wine.

Annotare e riempire i moduli

Esistono due tipi di moduli PDF. Alcuni documenti contengono dei veri e propri campi modificabili, in tal caso un lettore PDF come Evince li può tranquillamente compilare. Provate questo documento di esempio per vedere personalmente.

Se invece avete un PDF che ha semplicemente l’aspetto di un modulo e su cui volete scrivere, oppure un qualsiasi testo da annotare, potete semplicemente aprirlo con Xournal. Il programma vi fornisce un semplice strumento testo per inserire scritte dove volete e permette evidenziare o disegnare linee. Una volta finito, cliccate su File > Export to PDF per salvare un nuovo documento modificato.

Se volete fare modifiche con strumenti di disegno avanzati, potreste provare anche Inkscape. Dovete però ricordarvi che Inkscape gestisce una pagina alla volta, e se non avete installati i font presenti nel PDF le scritte potrebbero apparire diverse, sballando un po’ l’aspetto complessivo. In compenso con Inkscape avete la maggior libertà d’azione possibile, potendo spostare oggetti, eliminarli e aggiungerne di altri. Alla fine potete esportare di nuovo in PDF.

Convertire il PDF in formato PDF/A

Il formato PDF/A è la “versione ISO” del formato PDF. Serve per documenti che devono essere conservati per anni con la garanzia di poterli sempre aprire. Pertanto a volte serve convertire un PDF in PDF/A, specialmente PDF/A-1b.

Ho fatto molti esperimenti su questo punto, ma ci sono ancora diversi problemi da sistemare prima di trovare un metodo sicuro e abbastanza automatico per usare GhostScript convertendo in PDF/A, lo stesso dicasi per i PDF prodotti con LaTeX e il pacchetto pdfx.

Consiglio pertanto l’uso di un convertitore online, come ad esempio quello di webPDF, utilizzabile cliccando qui.

Slideshare Downloader: script per scaricare facilmente le presentazioni da Slideshare

Da un po’ di tempo mi frullava per la testa l’idea di aggirare una limitazione di Slideshare, il famoso sito per condividere presentazioni. Infatti non tutte le presentazioni sul sito si possono scaricare, in quanto l’autore può decidere di disattivare il download. Quelle che lo permettono invece, dopo il login (l’iscrizione è gratuita) consentono di scaricare il file in formato originale PDF oppure PowerPoint.

Fino a qualche tempo fa esisteva un sito web eccezionale, Slidzy, di cui ora rimane solo il Twitter abbandonato. Slidzy permetteva di scaricare il file originale senza registrazione a partire da un url di Slideshare qualsiasi (anche con download disattivato). Probabilmente poi Slideshare ha modificato il funzionamento del sito e questo sistema non è più praticabile.

Qualcuno potrebbe obiettare che se il download è stato disattivato un motivo c’è: la volontà dell’autore. Sarebbe quindi inopportuno andare contro ad essa e tentare di scaricare lo stesso una determinata presentazione. Questo è vero, ma ci sono diversi casi in cui può essere del tutto legittimo. Pensateci un attimo. Se uno studente universitario come me volesse studiarsi una presentazione sulla funzionalità Canvas di HTML5 (a parte i loghi discutibili nella terza slide) lo potrebbe fare finché davanti a un computer e connesso a Internet.

Ma se si volesse salvare la presentazione per guardarla senza internet oppure su un altro dispositivo, anche un cellulare? Qui casca il palco (senza considerare che ci sono anche presentazioni in Creative Commons non scaricabili, mentre la licenza permette di riprodurle, ecco un esempio). Da questa considerazione ho creato uno script, e l’avevo pronto già a settembre, pensate. Il problema è che era scritto in modo veramente “rude” e non faceva nessun controllo sulle operazioni che effettuava, sicché prima di rilasciare una cosa del genere ci ho pensato bene. Alla fine l’ho riscritto ed è venuto fuori Slideshare Downloader.

Scaricare il file originale probabilmente è impossibile, ma il mio script usa un approccio diverso… Se non posso scaricare la presentazione, la posso almeno “fotocopiare”. Di fatto scarica ogni singola slide in formato JPG, cioè una semplice immagine. È questo il tipo di dato che viene presentato a chi naviga con un dispositivo mobile. Alla fine lo script unisce tutte le immagini in un PDF, permettendo perlomeno di visualizzare la presentazione dappertutto (d’accordo, senza poter selezionare e copiare il testo, ma è meglio di nulla).

Potete effettuare il download cliccando qui. Lo script è rilasciato con licenza GPLv3 ed è in inglese (per quel poco di testo che ha) in modo da permettere a più persone di usarlo.

Ricordate che lo script ha bisogno di alcune cose per funzionare, in particolare ImageMagick, che potete cercare nel gestore di pacchetti della vostra distribuzione. Inoltre dovete dare i permessi di esecuzione allo script.

A preparativi fatti l’utilizzo è molto semplice. Lo script accetta come parametro l’url alla pagina di Slideshare e scarica le slide alla larghezza di 1024 pixel. Ecco un esempio:


./slideshare-downloader.sh http://www.slideshare.net/robhawkes/html5-canvas-hack-night-the-future-of-graphics-on-the-web

A questo punto basta aspettare seguendo a schermo il processo in corso, alla fine restituirà qualcosa del genere:


The PDF has been generated.
Find your presentation in: "/home/andrea/Scrivania/html5-canvas-hack-night-the-future-of-graphics-on-the-web/html5-canvas-hack-night-the-future-of-graphics-on-the-web.pdf"

A questo punto non vi resta che mettere da parte il PDF dove preferite! Ovviamente ricordate sempre che sono immagini, quindi non potete fare uno zoom esagerato e con alcuni lettori PDF non sempre le immagini vengono “sfumate” in modo nitido.

Fatemi sapere se usate questo script e se vi è utile!

Aggiornamento 27/09/2012: lo script è rimasto un po’ abbandonato e poco utilizzabile anche per via del fatto che si basava su un tool di conversione dal formato Flash che non è più disponibile nei repository delle maggiori distribuzioni. Grazie anche ai suggerimenti di Massimiliano, un mio lettore, ho ripreso in mano lo script e l’ho aggiornato in modo che scarichi direttamente dei file in formato JPG.

Aggiornamento 26/12/2014: Massimo Grandesso mi ha gentilmente inviato un aggiornamento allo script. In questo modo funziona con il nuovo layout di SlideShare.

Compressione di un PDF con minima perdita di qualità

Forse non ve ne ho mai parlato, ma adoro ImageMagick. Tuttavia, mi è capitato di recente di dover creare un pdf di immagini, con il classico comando convert.

convert *.jpg output.pdf

Le immagini che ho usato erano un gruppo di 36 foto in formato JPEG, alla risoluzione di 2126×1594 pixel. La loro dimensione complessiva era di 15,6 MB. Il PDF che è risultato aveva la dimensione di ben… 189,2 MB! 😮

Sono rimasto subito (penso giustamente) sconcertato. Normale che il documento unico debba essere più grande della somma delle dimensioni, in fin dei conti ci sono sempre i dati riguardanti l’impaginazione, ed altro. Però 12 volte tanto è un po’ troppo. Girovagando per la rete ho trovato questo post che spiegava un metodo utilizzando pdftk. Se non l’avete, installatelo tramite la solita procedura:

sudo apt-get install pdftk

Ora è il momento di agire sul nostro file PDF:

pdftops output.pdf tmp.ps
ps2pdf tmp.ps compresso.pdf
rm tmp.ps

Il risultato così ottenuto avrà la dimensione di… 10,3 MB! Bene, proprio ciò che volevo. Così le immagini sono leggermente compresse, per cui aspettatevi una piccola perdita di qualità. Tuttavia ne è valsa la pena. Sicuramente, utilizzando le opzioni fornite dal comando, è possibile calibrare con attenzione ciò che si vuole ottenere. Per me è sufficiente così. 🙂

Naturalmente ricordate che la differenza di dimensione tra prima e dopo si noterà molto se avete svariate foto, se invece il vostro PDF è quasi solo testuale, sarà sicuramente minore.

Aggiornamento 04/08/2011: ho cambiato il comando per convertire in PS. Ne esistono due simili, ma questo funziona meglio.

Convertire i font OpenType in font TrueType

Per lunedì dovevo fare una relazione sugli algoritmi di ordinamento e portarla a scuola. Pertanto ho voluto cercare qualche font di bell’aspetto. Ovviamente non ho esitato a consultare Dafont, il mio archivio preferito di font gratuiti e liberamente usabili. La mia scelta è ricaduta sul font Qlassik.

Entusiasta per la bellezza e l’eleganza del font, e ansioso di applicarlo ai titoli dei paragrafi, lo scarico, e mi accorgo subito che è composto di due file di tipo OpenType. Io da perfetto incompetente, non sapevo che fosse un formato registrato da Microsoft, anzi pensavo che quell’open significasse qualcos’altro. Dopo aver messo i font nella cartella /usr/share/fonts/truetype e aver visto che non funzionavano, ho deciso di trovare un modo di convertirli. Ebbene, ce l’ho! 🙂

Seguo la guida e installo Fontforge:

sudo aptitude install fontforge

A questo punto creo un file che dice a Fontforge cosa fare:

sudo gedit /usr/bin/script-otf2ttf.sh

E ci inserisco le istruzioni:

#!/usr/local/bin/fontforge
 # Quick and dirty hack: converts a font to truetype (.ttf)
 Print("Opening "+$1);
 Open($1);
 Print("Saving "+$1:r+".ttf");
 Generate($1:r+".ttf");
 Quit(0);

Salvo ed esco. Se copiate il contenuto del file state attenti alle virgolette!

Poi ho creato un nuovo eseguibile in questo modo:

sudo gedit /usr/bin/otf2ttf

E ci ho inserito:

#!/bin/bash
 for i in $@; do
 fontforge -script /usr/bin/script-otf2ttf.sh $i
 done

A questo punto ho salvato, poi gli ho dato i permessi di esecuzione:

sudo chmod a+x /usr/bin/otf2ttf

Fatto.

Mi sono trovato con un programmino che accetta in input i font di tipo .otf e li converte in .ttf, ovvero TrueType, perfettamente gestibili da tutti i programmi. Come fare per convertire tutti i file OpenType in una directory?

Semplice. Ci si sposta nella cartella in cui sono contenuti e si da il comando:

otf2ttf *.otf

In questo modo il programma esegue una istanza della conversione per ogni file che trova. A questo punto è possibile ad esempio spostarli tutti in una cartella:

mkdir ttf
mv *.ttf ttf/

E questo è quanto.:)

Per finire, vi linko la guida che mi ha portato sulla giusta strada. Ditemi che ne pensate! 😀

Aggiornamento 19/03/2009: ho aggiornato questo post con una modifica per rendere più semplice l’utilizzo dello script con un numero arbitrario di font.