Attenzione: l'articolo è stato scritto da oltre 1 anno, le informazioni in esso contenute potrebbero essere datate e non più attuali.

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:

  1. Stampare su file in formato PS e poi convertire in PDF
  2. Utilizzare le funzioni di esportazione dei programmi usati (ovviamente se disponibili)
  3. Creare una finta stampante che invece di mandare il lavoro alla stampante reale crei un file PDF
  4. 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):

Stampa con 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):

Opzioni di stampa

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
Il tuo voto: Nessuno Media: 2 (2 voti)

Commenti

Molto interessante e se

Molto interessante e se riesco a scaricare anche utile.