User Tools

Site Tools


Sidebar

No ai soldati italiani all'estero

Indice

Eventi

Energia

Rigacci.Org usa energia elettrica da fonti rinnovabili, grazie al gruppo di acquisto Merci Dolci.

Merci Dolci - Energia Rinnovabile

Software libero!

Petizione contro i brevetti software

Faunalia: Soluzioni GIS professionali

Debian

www.gnu.org www.kernel.org

doc:appunti:prog:pdf

Ricette PDF e PostScript

Ruotare e scalare automaticamente un PDF per la stampa

Problema: un documento PDF in A3 orientamento landscape da mandare in stampa automaticamente su carta A4.

Il documento originale contiene le informazioni sul formato pagina (in punti) e sull'orientamento:

/Type/Page/MediaBox [0 0 842 1191]
/Rotate 90

Purtroppo il comando gs come filtro di stampa o attraverso il comando pdf2ps produce un documento PostScript che include il seguente snippet:

%%PageBoundingBox: 0 0 1191 842

cioè la pagina rimane un A4 landscape e questo crea problemi in fase di stampa.

Una soluzione è utilizzare pdftops (fornito dal pacchetto poppler-utils) che non aggiunge le informazioni sulla PageBoundingBox e quindi effettuare la rotazione/ridimensionamento con epsffit (pacchetto psutils):

pdftops -eps document.pdf - | epsffit -m -c 0 0 595 842 > document.eps

L'intero documento originale viene incapsulato e ridimensionato in un A4, quindi è bene che sia di una singola pagina. L'opzione -m seleziona l'orientamento più conveniente.

Shift di una pagina PostScript

Una stampa preparata con gs a partire da un file PostScript può essere shiftata con un opportuno comando PostScript.

Basta creare un file (ad esempio offset.ps) che indichi ad esempio 1/2 pollice (36 punti) di offset verso sinistra e 1 pollice (72 punti) verso il basso:

<</PageOffset [-36 72]>> setpagedevice

quindi creare la pagina per la stampa con:

gs -dNOPAUSE -dQUIET -sDEVICE=laserjet -r600x600 -sOutputFile=file.pcl offset.ps file.ps -c quit

Rasterizzazione di un PDF

pdftoppm -r 360 file.pdf file_ppm
convert -density 150 -quality 100 input.pdf output.jpg

per rimuovere eventuali trasparenze e sostituirle con uno sfondo bianco:

convert -density 300 -background white -alpha remove input.pdf output.png

Estrazione di alcune pagine

Il comando pdftk è contenuto nell'omonimo pacchetto Debian. Come estrarre da pag. 6 a pag. 14:

pdftk A=document.pdf cat A6-14 output document_p6-14.pdf

Unione di più documenti

Il comando pdfunite è contenuto nel pacchetto Debian poppler-utils:

pdfunite part1.pdf part2.pdf document.pdf

oppure si utilizza il pdftk:

pdftk "part1.pdf" "part2.pdf" cat output "document.pdf"

Conversione di raster in PDF

Per convertire correttamente in PDF definendo la dimensione della pagina e la risoluzione, vedere le istruzioni per la conversione di immagini acquisite con scanner.

Modifica del formato pagina

Se un documento è in formato diverso da quello desiderato (lo si appura con pdfinfo) si può alterare il formato pagina con pdfjam (dal pacchetto Debian texlive-extra-utils), ecco un esempio di conversione in formato A4:

pdfjam --outfile document-a4.pdf --paper a4paper document.pdf

Creazione dei bookmark (indice)

Anzitutto si estrae dal pdf i metadati esistenti:

pdftk document.pdf dump_data output pdf_data.txt

nel file pdf_data.txt che viene generato è possibile aggiungere sezioni del tipo:

BookmarkBegin
BookmarkTitle: L'et&#224; della pietra
BookmarkLevel: 1
BookmarkPageNumber: 159

Eventuali caratteri non ASCII vanno codificati con il codice numerico HTML. Infine si genera il nuovo pdf prendendo i metadati dal file modificato:

pdftk document.pdf update_info pdf_data.txt output new_document.pdf
doc/appunti/prog/pdf.txt · Last modified: 2018/03/14 21:25 by niccolo