I file PDF
Il formato PDF (Portable Document Format) permette di mantenere inalterati i documenti (font, immagini, impaginazione, ed altro) indipendentemente dalla piattaforma su cui vengono letti.
Questa caratteristica li ha resi uno strumento usatissimo per la diffusione di documenti che debbano mantenere immutate le proprie caratteristiche.
Anche grazie alle specifiche pubbliche del formato in questione, l'open source non è rimasto a guardare e ci ha messo a disposizione un gran numero di strumenti per la lettura e la manipolazione,in genere, di questo formato. Anche se a dire la verità manca (per ora?) uno strumento che
permetta la modifica di file PDF esistenti; più facile
è, invece, la loro creazione.
Leggere PDF
In ambiente Linux, esistono diversi programmi capaci di interpretare e mostrare sullo schermo questo tipo di file. E' disponibile il lettore ufficiale Acrobat reader (non open source) in versione nativa per Linux. Le caratteristiche sono pressappoco le stesse disponibili nella versione per Windows, è il miglior lettore disponibile IMHO soprattutto se si ha bisogno di leggere file PDF "avanzati", tipo quelli contenenti Javascript.
Un altro lettore è Xpdf, ottimo per velocità, open source e disponibile per varie piattaforme, tra le altre Linux e Windows. Col programma verranno installate anche alcune utility per la creazione di file PDF. Funziona perfettamente anche come plugin dei vari browser.
Infine cito il factotum Ghostscript, anch'esso open source e multipiattaforma, e le sue mille interfaccie grafiche tra cui gv (ghostview) e ggv (gnome ghostview).
Creare PDF
Come accennato sopra non esiste in Linux un programma capace di modificare file PDF, è, però, possibile convertire i documenti da altri formati al PDF utilizzando sostanziamente quattro approcci:
- Stampare su file in formato PS e poi convertire in PDF
- Utilizzare le funzioni di esportazione dei programmi usati (ovviamente se disponibili)
- Creare una finta stampante che invece di mandare il lavoro alla stampante reale crei un file PDF
- Passare il comando appropriato al programma dal quale vogliamo creare il PDF
Il primo metodo consiste nell'aprire il file che vogliamo convertire in PDF, poi andare nel menù File -> Stampa e scegliere Stampa su file e specificando il nome e il percorso del file (quella sotto è l'immagine della finestra di stampa di Mozilla):
Fatto questo apriamo una console e digitiamo nella directory
in cui si trova il file PS (oppure specifichiamo l'intero
percorso):
ps2pdf file_stampato.ps risultato.pdf
Più facile a farsi che a dirsi. "ps2pdf"
come avrete capito è una utility di conversione tra
i due formati (il PS è stato creato, come il PDF,
dalla Adobe e può essere considerato il predecessore
del PDF), essa richiama il programma ghostscript con gli
opportuni parametri per ottenere questo risultato. Se premete
il tasto tab dopo aver scritto ps2pdf vedrete che appaiono
altri comandi simili, come ps2pdf14, essi permettono di
definire il livello di compatibilità con i vari formati.
Passando al secondo metodo, posso dire che alcuni programmi evitano di fare il procedimento visto sopra introducendo tra le loro funzioni la possibilità di esportare il documento su cui si sta lavorando in PDF. Lo fanno ad esempio OpenOffice.org (dalla 1.1 in avanti) e Scribus. In particolare quest'ultimo è quello che permette di creare i migliori documenti PDF in Linux, permette ad esempio di incorporare i font usati, includere javascript nelle pagine PDF, permette di includere meccanismi di controllo del colore e tanto altro. Per chi non lo conoscesse Scribus è un programma di desktop publishing in ambiente Linux, assolutamente da provare (non spaventatevi del risultato a video, l'esportazione in PDF sarà eccezionale).
Per creare una stampante virtuale (vi ricordo che se usate KDE ne è già inclusa una che potrete usare attraverso kups) il meccanismo è il seguente, ipotizzando che abbiate una versione di Linux abbastanza recente e utilizziate CUPS come server di stampa:- aprite il vostro browser e collegatevi a CUPS (http://localhost:631)
- andate in Printers -> Add new printer (vi verranno chiesti login e password di root, inseriteli)
- date un nome alla stampante (es. PDF-Writer)
- come device scegliete PDF Writing (se non doveste trovare questo device date un'occhiata in fondo alla pagina)
- come device URI inserite pdf:// seguito dal percorso in cui salvare i PDF (es. pdf://home/vargas/). Il nome della "stampa" sarà ottenuto partendo dalla data corrente.
- come modello scegliete Raw o generic o altra stampante postscript
- finito. Provate a stampare qualcosa.
Quarto metodo. Alcuni programmi permettono di creare dispositivi per la stampa in PDF (Openoffice.org) o di poter specificare un comando per la stampa (moltissimi, ad esempio gedit). OpenOffice.org di default ne imposta due con associati questi comandi
Converter Press (convertitore per qualità stampa)
/usr/bin/gs -q -dNOPAUSE -sDEVICE=pdfwrite -dCompatibilityLevel=1.4
-dPDFSETTINGS=/prepress -dAutoFilterColorImages=false -sColorImageFilter=FlateEncode
-dAutoFilterGrayImages=false -sGrayImageFilter=FlateEncode
-sOutputFile="(OUTFILE)" -
Converter Screen (convertitore per qualità video)
/usr/bin/gs -q -dNOPAUSE -sDEVICE=pdfwrite -dCompatibilityLevel=1.4
-sOutputFile="(OUTFILE)" -
Ovviamente questi comandi con le opportune modifiche possono
funzionare anche con altri programmi (e altri ambienti come
windows), io, ad esempio, ho usato il secondo con gedit
modificando solo la parola OUTPUT con il percorso in cui
salvare il file (/home/vargas/prova.pdf):
Ultima annotazione, tutti i metodi visti sopra (a parte il terzo, ma non sono sicuro) in un modo o nell'altro si poggiano su ghostscript, questo è un programma disponibile anche per Windows, anche gli utenti di questo SO possono quindi crearsi una stampante virtuale, potete trovare le istruzioni QUI (in inglese) o QUI (in italiano) o, per i più pigri, scaricare PDFcreator un programma realizzato per questo scopo (trovate il link in fondo alla pagina).
Manipolare i PDF
Per manipolazione PDf intendo una qualsiasi modifica fatta direttamente al file PDF, infatti è possibile svolgere alcune utili operazioni. Vediamone alcune:
Estrarre immagini
Con l'utility pdfimages contenuta nel pacchetto Xpdf potremo facilmente ricavare le immagini da un file pdf. Il programma funziona abbastanza bene eccetto per il fatto che a volte capovolge le immagini, ma nessun problema con Image Magick saremo in grado di correggerle in un colpo solo.
Il comando è:
pdfimages /percorso/file.pdf /cartella_dove/estrarre/le_immagini/
Trasformare in formato testo
Questo compito può essere agevolemente svolto con un'altra utility contenuta in Xpdf: pdftotext. Anche in questo caso basta un semplice:
pdftotext /percorso/file.pdf /percorso/file.txt
(il file di testo verrà salvato nella directory corrente se non viene specificato altro). Per lo stesso scopo è possibile usare anche ps2ascii.
Trasformare in HTML
In questo caso useremo il programma pdftohtml, esso non fa parte di Xpdf ma si basa su esso. Il programma permette di trasformare un file pdf in una pagina web (oltre che nel formato XML). Lanciato con l'opzione -c verranno inserite anche le immagini e il risultato è davvero eccezionale. L'obiettivo, però, viene raggiunto con un trucchetto: dello sfondo e delle immagini contenute in ogni pagina del file pdf viene creata una singola immagine e poi aggiunto sopra il testo. In questo modo il risultato è ottimo ma le immagini pesano un bel po' e la dimensione finale supera spesso quella del file PDF. Es. (per creare documenti complessi):
pdftohtml -c ./file.pdf ./percorso/file.html
Il programma è disponibile anche per il sistema operativo Windows, per questo SO è disponibile anche una intefaccia grafica: PDF2HTMLgui.
ATT: se usate Mandrake 9.1 per usare l'opzione -c dovrete aggiornare Ghostscript in quanto la versione diffusa con l'OS manca del supporto PNG necessario per creare le immagini di sfondo.
Trasformare in Swf (Flash)
Potete provare a usare SWFTools, troverete maggiori dettagli nella pagina sul formato Swf.
Trasformare in immagini
Volendo é possibile anche trasformare il file pdf, testo e immagini, in una serie di immagini (una per ogni pagina). Questo risultato puó essere ottenuto in diversi modi: con il comando da console pdftoppm (contenuta nel pacchetto xpdf) che converte il file pdf nel file immagine ppm, quest'ultimo formato può essere convertito in altri più comodi con Gimp, ImageMagick o le due utility contenute sempre in Xpdf, ppmtogif e ppmtojpeg:
pdftoppm ./file.pdf file
In alternativa potete provare con il pacchetto Image Magick, ad esempio con questo comando da shell:
convert ./documento.pdf ./documento.bmp
Verranno creati i file documento.bmp.0, documento.bmp.1, ecc... Se volete una interfaccia piú comoda potete aprire il file pdf con l'utility display contenuta sempre in Image Magick o con Gimp e poi salvare ogni pagina in un formato grafico. Questi metodi dovrebbero funzionare anche con Windows, ma dovrete aver installato Ghostscript.
Risoluzione problemi
Non esiste il device pdfwriter
Se non dovesse esistere il device pdfwriter salva questo file col nome "pdf" nella cartella dei backend di cups, dovrebbe trovarsi in /usr/lib/cups/backend/. Poi riavvia cups da root:
/etc/init.d/cups restart
e riprova la procedura.
Come faccio a leggere i file PS in Windows?
Potete provare con Ghostscript.
Argomenti correlati...
...sulla rete
- PDFcreator: programma gratuito e libero per creare una stampante virtuale di PDF in Windows
Commenti
Molto interessante e se
Molto interessante e se riesco a scaricare anche utile.