giovedì 7 luglio 2011

Modificare un file PDF

Ho a che fare in continuazione con file PDF e loro modifica. Mi trovo benissimo nel compiere queste operazioni via terminale, anche perché mi sbrigo prima. Mi annoto anche qui queste operazioni e le condivido con voi.

Ovviamente esistono alternative che fanno uso di strumenti grafici, come PDF Mod, PDF Chain, PDF Shuffler, PDF Split and Merge (pdfsam).

I pacchetti usati in questo post sono: ghostscript, pdftk, poppler-utils, che vanno installati se non li avete già.

Manipolazione del PDF

Unire più PDF in uno solo

pdftk input_A.pdf input_B.pdf input_C.pdf cat output output.pdf

Unire tutti i PDF di una directory in uno solo

pdftk *.pdf cat output output.pdf

Dividere un unico file PDF in tanti file PDF quante sono le sue pagine

pdftk input.pdf burst

Estrarre da PDF alcune pagine

pdftk input.pdf cat 10-20 output output.pdf

Estrarre da PDF alcune pagine non consecutive

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

Ruotare un PDF di 90° a destra (clockwise)

Col seguente comando ruotiamo tutte le pagine (dalla prima alla fine) verso Est:

pdftk input.pdf cat 1-endE output output.pdf

Ruotare un PDF di 90° a sinistra (counter-clockwise)

pdftk input.pdf cat 1-endW output output.pdf

Ruotare un PDF di 180°

pdftk input.pdf cat 1-endS output output.pdf

Estrarre immagini dal PDF

È consigliabile crearsi prima una directory (ad esempio pdf_images) dove far confluire tutte le immagini e poi dare:

pdfimages input.pdf pdf_images/

Convertire un PS in PDF

ps2pdf -dPDFSETTINGS=/screen input.ps output.pdf

dove screen può essere:

screen (72 dpi)
ebook (150 dpi)
printer (300 dpi)
prepress (300 dpi)

Convertire un PDF in PS

pdf2ps input.pdf output.ps

Ridurre le dimensioni di un PDF

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

Modificare i metadati di un PDF

Estraiamo prima le informazioni esistenti in un file di testo:

pdftk input.pdf dump_data output info.txt

Modifichiamo le informazioni e reimportiamole in un nuovo PDF con:

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

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

PDF e immagini

Convertire un PDF in PNG

convert -density 300 input.pdf output.png

Tutte le pagine saranno convertite in immagine. I file immagine risultanti avranno questo nome:

output-0.jpg --> Pagina 1 output-1.jpg --> Pagina 2 ecc.

La stessa conversione può essere effettuata con pdftoppm, un componente di poppler-utils.

Convertire un PDF in PNG specificando le dimensioni di uscita

convert -scale 940 input.pdf output.png

Convertire un PDF in PNG specificando la risoluzione di uscita

convert -density 300 input.pdf output.png

Estrarre da PDF una pagina e convertirla in PNG

convert input.pdf[0] output.png
0 sta per pagina 1, 1 per pagina 2 e così via.
Anche in questo comando si possono usare le opzioni -scale e -density.

Estrarre da un PDF più pagine non consecutive e convertirle in PNG

convert -density 300 -scale 940 input.pdf[0,2,6,11,16,21,26,33,38] output.png

Convertire un PDF in un PDF immagine (rasterizzare il PDF)

convert -density 300 input.pdf output.pdf

Convertire più PNG in PDF (A4 verticale)

convert -adjoin -page 210x297 *.png output.pdf

Convertire più PNG in PDF (A4 orizzontale)

convert -adjoin -page 297x210 *.png output.pdf