pdftk
– http://www.pdflabs.com/
– pdftk 1.41 (versione compilata staticamente) [per chi non lo avesse nei repertori software della propria distribuzione]
sebbene non nasca come strumento per l’imposizione, purtuttavia, può risultare utile, nella fase preliminare [il riordino pagine (shuffle for imposing)] per poi affidare l’imposizione vera e propria a Multivalent.jar
– Multivalent.jar- ultima versione free coi tool d’imposizione – link 1
– Multivalent.jar – ultima versione free coi tool d’imposizione – webseeded torrent link 2
PRIMO PASSO
con pdftk e una versione modificata dello script reorder4booklet, riordiniamo opportunamente le pagine del file pdf
IMPORTANTE
il numero totale delle pagine del file pdf deve tassativamente essere un multiplo di 4
se non lo fossero, occorre aggiungergliene un numero necessario a raggiungere il multiplo intero più prossimo di 4 (es: se il numero di pagine fosse 11, basterebbe aggiungerne un’altra sola per arrivare a 12)
aggiunta che può essere fatta in automatico, con il mio script
addblankforbooklet
#!/bin/sh #script to add automatically blank pages at the end of a pdf document, in order to make its pages a multiply of 4, so you can print as booklet using Multivalent.jar tool Impose # # download Multivalent.jar (with tools included) from: http://goo.gl/QGgvb echo "Enter file name" read filename altxlarg="`pdfinfo -box $filename| grep MediaBox | cut -d : -f2 | awk '{print $3 FS $4}'`" echo "%PDF-1.4 %µí®û 3 0 obj << /Length 0 >> stream endstream endobj 4 0 obj << /ProcSet [/PDF ] /ExtGState << /GS1 1 0 R >> >> endobj 5 0 obj << /Type /Halftone /HalftoneType 1 /HalftoneName (Default) /Frequency 60 /Angle 45 /SpotFunction /Round >> endobj 1 0 obj << /Type /ExtGState /SA false /OP false /HT /Default >> endobj 2 0 obj << /Type /Page /Parent 7 0 R /Resources 4 0 R /Contents 3 0 R >> endobj 7 0 obj << /Type /Pages /Kids [2 0 R ] /Count 1 /MediaBox [0 0 595 841] >> endobj 6 0 obj << /Type /Catalog /Pages 7 0 R >> endobj 8 0 obj << /CreationDate (D:20110915222508) /Producer (libgnomeprint Ver: 2.12.1) >> endobj xref 0 9 0000000000 65535 f 0000000278 00000 n 0000000357 00000 n 0000000017 00000 n 0000000072 00000 n 0000000146 00000 n 0000000535 00000 n 0000000445 00000 n 0000000590 00000 n trailer << /Size 9 /Root 6 0 R /Info 8 0 R >> startxref 688 %%EOF" | sed -e "s/595 841/$altxlarg/g">blank.pdf && pdftk blank.pdf output fixed.pdf && mv fixed.pdf blank.pdf pages="`pdftk $filename dump_data | grep NumberOfPages | cut -d : -f2`" if [ $(( $pages % 4 )) -eq 0 ] then echo "the pages are already a multiple of 4. Script will be stopped" && exit 1 elif [ $(( $pages / 4 )) -eq 0 ] then val0="`echo "scale=0; 4-$pages" | bc -l`" else val1="`echo "scale=0; $pages/4" | bc -l`"; echo $val1 fi if [ $(( $pages / 4 )) -eq 0 ] ; then echo "adding $val0 blank pages" ; sleep 1s && numpages=`for ((a=1; a <= $val0; a++)); do echo -n " B1 "; done` && pdftk A=$filename B=blank.pdf cat A $numpages output 4multiply.pdf else val2="`let ADDITION=$val1+1; echo $ADDITION`" val3="`let MULTIPLICATION=$val2*4; echo $MULTIPLICATION`" val4="`echo "scale=0; $val3-$pages" |bc -l`" echo "adding $val4 blank pages" ; sleep 1s numpages="`for ((a=1; a <= $val4; a++)); do echo -n " B1 "; done`" pdftk A=$filename B=blank.pdf cat A $numpages output 4multiply.pdf fi
a questo punto, con la versione modificata dello script reorder4booklet
#!/bin/bash # #reorder4boolet, uno script per calcolare la corretta sequenza di imposizione per un libretto A5 ricavato stampando due pagine in formato A5 su di un A4 orizzontalmente orientato. Lo script aggiunge le necessarie bianche alla sequenza qualora il numero delle pagine non fosse un multiplo di 4 # #modificato per il riordino pagine preliminare all'imposizione (shuffle for imposing) con pdftk # (($# == 0)) && { echo "Usage: $0 number of pages" exit 1 } >&2 pages=$1 if [ $(( $pages % 4 )) -eq 0 ] then #pages4="`let DIVISION=$pages/2; echo $DIVISION`" pages4="$(( $pages/2 ))" for ((x=$pages, y=1;x>=$pages4, y<=$pages4;x--, y++)); do echo "$x $y "; done | awk 'NR %2==1 {print $1, $2} NR % 2==0 { print $2, $1 }' | tr '\n' ' ' | xargs elif [ $(( $pages / 4 )) -eq 0 ] then #echo "number $pages is not a multiple of 4" val0="$(( 4-$pages ))" else val1="$(( $pages/4 ))" #echo "number $pages is not a multiple of 4" val2="$(( $val1+1 ))" val3="$(( $val2*4 ))" val4="$(( $val3-$pages ))" blankandpages="$(( $pages+$val4 ))" pages4="$(( $blankandpages/2 ))" #echo "adding $val4 blank pages" ; sleep 1s for ((x=$blankandpages, y=1;x>=$pages4, y<=$pages4;x--, y++)); do echo "$x $y "; done | awk 'NR %2==1 {print $1, $2} NR % 2==0 { print $2, $1 }' | tr '\n' ' '| xargs fi exit 0
invochiamo pdftk con questa sintassi:
pdftk file.pdf cat `reorder4booklet numero di pagine` output riordinato.pdf
es: se il nostro pdf ha 64 pagine:
pdftk file.pdf cat `reorder4booklet 64` output riordinato.pdf
che produrrà la seguente sequenza
64 1 2 63 62 3 4 61 60 5 6 59 58 7 8 57 56 9 10 55 54 11 12 53 52 13 14 51 50 15 16 49 48 17 18 47 46 19 20 45 44 21 22 43 42 23 24 41 40 25 26 39 38 27 28 37 36 29 30 35 34 31 32 33
64
64-riordinato
che, con Multivalent.jar, imposizioneremo a due a due su ogni facciata di un foglio A4 orizzontale per ottenere il risultato finale da stampare in fogli A4 e poi tagliare al centro della risma per richiudere le due metà su di se stesse e rilegare il libretto risultante
java -cp /percorso/Multivalent.jar tool.pdf.Impose -sep 0.4 -dim 2×1 -paper 29.7x21cm 64-riordinato.pdf
64-riordinato-up