# [RISOLTO] Convertire e salvare al volo TIFF Multipagina

## Ciccio Bueo

Visto che da un bel pò sto cercando un programma che mi permetta di visualizzare i file tiff multipagina, e per gnome non sembra esserci nulla che funzioni, o passo a kde, ma non vorrei, oppure, avevo pensato di fare uno script che all'occorenza mi converta i file tiff in pdf.

Configurando hylafax mi sono imbattuto in tiff2pdf,  che dovrebbe proprio fare al caso mio... ma come posso integrarlo, per esempio, in evolution?  

ricapitolando.... mi arrivano i fax multipagina in evolution tramite un servizio internet di ricezione fax, invece che la voce "salva con nome" per l'allegato, vorrei una voce "converti in pdf e guarda"

e possibile? dove posso trovare le informazioni che mi servono per realizzare un tale script?

Grazie    :Very Happy: Last edited by Ciccio Bueo on Mon Jan 31, 2005 7:17 pm; edited 1 time in total

----------

## Ciccio Bueo

correggo... ero convinto di essermi imbattuo in tiff2pdf su hylafax... ma al momento non ne trovo traccia... eppure sono convinto che hylafax mi permetteva di convertire i file ricevuti in pdf...   :Rolling Eyes: 

----------

## Ciccio Bueo

ecco infatti... hylafax spiega che è possibile convertire i tiff in pd in due passaggi, prima si converono in postscript e poi i ps in pdf....  ma come lo faccio lo script?

----------

## fedeliallalinea

Esiste gia' il comando tiff2pdf

```
$ equery belongs `which tiff2pdf`

[ Searching for file(s) /usr/bin/tiff2pdf in *... ]

media-libs/tiff-3.7.1-r1 (/usr/bin/tiff2pdf)
```

----------

## Ciccio Bueo

umm... bene! ma come lo uso? come lo integro? dove trovo notizie su come fare uno script? non so nulla di programmazione....   :Embarassed: 

----------

## randomaze

 *Ciccio Bueo wrote:*   

> umm... bene! ma come lo uso?

 

Penso che:

```
man tiff2pdf
```

possa essere un buon punto di partenza.

 *Quote:*   

> come lo integro? dove trovo notizie su come fare uno script? non so nulla di programmazione....  

 

La programmazione di uno script é abbastanza semplice, in sostanza si tratta di mettere in un file la stessa sequenza di operazioni che faresti manualmente.

Cerca un poco nel forum perché esempi di script da predere ad esempio ce ne sono tanti  :Wink: 

----------

## Ciccio Bueo

mmm... già... il mitico *man*!

però mi succede questo:

```
root@tux matteo # ACCEPT_KEYWORDS=~x86 emerge search tiff2pdf

Searching...

[ Results for search key : tiff2pdf ]

[ Applications found : 0 ]

```

----------

## randomaze

 *Ciccio Bueo wrote:*   

> root@tux matteo # ACCEPT_KEYWORDS=~x86 emerge search tiff2pdf
> 
> Searching...
> 
> [ Results for search key : tiff2pdf ]
> ...

 

 *fedeliallalinea wrote:*   

> $ equery belongs `which tiff2pdf`
> 
> [ Searching for file(s) /usr/bin/tiff2pdf in *... ]
> 
> media-libs/tiff-3.7.1-r1 (/usr/bin/tiff2pdf)

 

Direi che quel programma viene installato con le libtiff.

E probabilmente giá lo hai  :Rolling Eyes: 

----------

## Ciccio Bueo

e in effetti c'è..... 

ora guardo un pò come si fanno gli script, poi vi faccio sapere... grazie!   :Very Happy: 

----------

## Ciccio Bueo

stupendo... funziona!

allora ho fatto così:

```
matteo@tux matteo $ tiff2pdf multi -o prova.pdf

```

dove multi è il file multipagina e prova pdf è l'output....

ora vado di script!

2 mesi è più per imparare questa cosa.... che vergogna...  :Rolling Eyes: 

----------

## Ciccio Bueo

ecco il mio primo abbozzo di script bash:

```
#!/bin/bash

echo "Sto convertendo in pdf"

tiff2pdf multi -o prova2.pdf

exit
```

sto leggento qui per trovare le informazioni:

http://ildp.pluto.it/guide/abs/index.html

intanto funziona... digito ./2pdf e và, anche da user, ora devo "solo" fare in modo che converta i file con il nome giusto.... e poi devo integrarlo in evolution.. mah... staremo a vedere.

----------

## Ciccio Bueo

ummm... difficoltà...

come faccio dirgli di convertimi quel file specifico?

ovvero.. se premo col destro sul file da convertire, e scelgo "altra applicazion", e seleziono il mio script "2pdf" non succede nulla... perchè?

----------

## randomaze

 *Ciccio Bueo wrote:*   

> ummm... difficoltà...
> 
> come faccio dirgli di convertimi quel file specifico?
> 
> ovvero.. se premo col destro sul file da convertire, e scelgo "altra applicazion", e seleziono il mio script "2pdf" non succede nulla... perchè?

 

Forse gli devi dire quale file convertire....

Se avvi lo script con "./2pdf nomefile.tiff" il nome del file é nella variabile ${1}.

----------

## Ciccio Bueo

allora ho modificato lo script così:

```
#!/bin/bash

echo "Sto convertendo in pdf"

tiff2pdf ${1} -o prova2.pdf

exit
```

quidni da shell digito

```
matteo@tux faxpdf $ ./2pdf 20050112_152845_0499589623.tif

Sto convertendo in pdf

matteo@tux faxpdf $

```

e mi trovo il file con il nome prova2.pdf... però se clicco col destro sul file da convertire e scelgo appunto 2pdf  non funziona....

e poi qual'è la variabile per dirgli che il nome del file deve essere lo stesso da cui sono partito? sempre ${1} ?

----------

## Ciccio Bueo

ora funziona... ovvero clicco col destro e faccio 2pdf e mi converte il file con il nome iniziale..

```
#!/bin/bash

echo "Sto convertendo in pdf"

tiff2pdf ${1} -o ${1}.pdf

exit

```

non so come togliergli l'estensione tiff... ma è un problema minimo... 

ora vedo anche il comando in evolution... solo che non capisco dove mi salva il file..

in realtà sarebbe meglio se mi salvasse i file in una cartella specifica e poi me li aprisse con il visualizzatore di pdf....  veramente bella questa cosa degli script.... penso che appena ci prendo un pò la mano posso fare delle cose veramente utili!!!  grazie per l'aiuto!!!   :Cool: Last edited by Ciccio Bueo on Sun Jan 30, 2005 2:31 pm; edited 1 time in total

----------

## comio

 *Ciccio Bueo wrote:*   

> allora ho modificato lo script così:
> 
> ```
> #!/bin/bash
> 
> ...

 

io farei così (scrivo from scratch):

```

#!/bin/bash

FILEIN=$1

FILEOUT=`echo $FILEIN|sed -e 's/.tiff$/.pdf/g'`

echo -n "Conversione..."

tiff2pdf $FILEIN -o $FILEOUT

echo "fatto."

```

Bisgonerebbe controllare se esiste FILEIN, se ha estensione tiff, e altre cosette...

Io comunque farei un visualizzatore... converto in /tmp e poi avvio xpdf (o chi per esso)...

ciao

edit: hoo aggiunto l'ultima riga echo "fatto." 

L'opzione -n di echo server per non far andare a capo.

----------

## Ciccio Bueo

scusami... mi puoi spiegare lo script che hai fatto? perchè vorrei capirlo prima di copiarlo... così magari vi rompo meno le "olive"...   :Very Happy: 

ora sto facendo così:

```
#!/bin/bash

echo "Sto convertendo in pdf"

tiff2pdf ${1} -o ${1}.pdf

gpdf ${1}.pdf

exit

```

così me lo converte e poi me lo apre... e diciamo che mi va molto bene come cosa.. perchè tanto tutti i fax che ricevo li salvo.... 

però per migliorarlo dovrei appunto capire come fargli fare la conversione in pdf in tmp, così resta a me decidere se salvarlo e dove salvarlo...

----------

## stefanonafets

```
#!/bin/bash

1 FILEIN=$1

2 FILEOUT=`echo $FILEIN|sed -e 's/.tiff$/.pdf/g'`

3 echo -n "Conversione..."

4 tiff2pdf $FILEIN -o $FILEOUT 
```

Premetto che nn sono un genio del bash-scripting, 

spieghiamo lo script (ho aggiunto la numerazione alle righe per comodità, NON VA MESSA NELLO SCRIPT):

1 - crea la variabile FILEIN e gli assegna come valore il nome del file da convertire (quello che digito dopo ./2pdf).

2- assegna a FILEOUT il nome del file, sostituendo .tiff con .pdf (nn ne sono sicuro al 100%, non conosco bene sed, per inciso sed è un programma che ti permette di fare manipolazioni testuali, per info #man sed)

3 stampa la scritta "Conversione..." (nn ho capito bene a che serve l'opzione -n)

4- effettua la conversione.

----------

## randomaze

 *comio wrote:*   

> FILEOUT=`echo $FILEIN|sed -e 's/.tiff$/.pdf/g'`
> 
> 

 

Suggerirei:

```
FILEOUT=${FILEIN/\.tiff/\.pdf}
```

che rispetto all'operazione di comio incontra dei problemi nel caso di un FILEIN che si chiama pippo.tiff.pluto.diff ma é piú semplcie da capire per il nostro amico... per imparare ad usare sed c'e' tempo piu' avanti  :Wink: 

Ciccio Bueo, la man page di bash anche se un poco ostica é fortemente consigliata per capire cosa stiamo dicendo  :Wink: 

----------

## Ciccio Bueo

allora... se modifico lo script così:

```
#!/bin/bash

1 FILEIN=$1

2 FILEOUT=`echo $FILEIN|sed -e 's/.tiff$/.pdf/g'`

3 echo -n "Conversione..."

4 tiff2pdf $FILEIN -o $FILEOUT

```

ottengo questo... e in più mi si cancella il file...

```
./2pdf 20050112_152845_0499589623.tif

Sto convertendo in pdf

TIFFOpen: 20050112_152845_0499589623.tif.pdf#!/bin/bash: Cannot open.

tiff2pdf: Can't open output file 20050112_152845_0499589623.tif.pdf#!/bin/bash for writing.

Conversione...tiff2pdf: Can't open input file 20050112_152845_0499589623.tif for reading.

matteo@tux faxpdf $

```

invece quello che sto cercando di fare sarebbe avere da evolution il comando 2pdf e dopo averlo dato, oltre a salvarlo, me lo apre con gpdf... insomma, col il mio script artigianale ci arrivavo vicino, ovvero me lo convertiva e me lo apriva con gpdf... il problema era che non so dove me lo salvasse.... 

ovvero... vorrei che (magicamente...) da evolution clicco su 2pdf, mi si pare gpdf con il file in questione e da lì me lo posso slavare dove voglio... (avendo molti fax devo suddividerli per cartelle)  quidni mi manca di capire qual'è la variabile che mi fa la conversione del file in una cartella temporanea... (oppure già avviene così? nella /tmp/ non c'è traccia dei file che converto..)

----------

## Ciccio Bueo

ho notato che se da evolution apro il file in oggetto con il mio script, me lo apre perfettamente con gpdf, ma se vado da li a salvarne una copia devo scrivere il nome del file, visto che i fax in entrata hanno il nome coposto da una 15 di caratteri (data, ora, numero mittetnete... etc. etc..).. quindi non mi sembra possibile farglieli salvare dove e come voglio, inoltre la conversione avviene nelle cartelle temporanee di evolution, dove oltre al pdf mi trovo anche un file tiff, di qualità decisamente migliore rispetto al mio pdf... come mai? ho guardato il man di tiff2pdf e indica come qualità una variabile solo se si usa una compressione jpeg, che infatti non sto usando...

----------

## comio

 *Ciccio Bueo wrote:*   

> allora... se modifico lo script così:
> 
> invece quello che sto cercando di fare sarebbe avere da evolution il comando 2pdf e dopo averlo dato, oltre a salvarlo, me lo apre con gpdf... insomma, col il mio script artigianale ci arrivavo vicino, ovvero me lo convertiva e me lo apriva con gpdf... il problema era che non so dove me lo salvasse.... 
> 
> ovvero... vorrei che (magicamente...) da evolution clicco su 2pdf, mi si pare gpdf con il file in questione e da lì me lo posso slavare dove voglio... (avendo molti fax devo suddividerli per cartelle)  quidni mi manca di capire qual'è la variabile che mi fa la conversione del file in una cartella temporanea... (oppure già avviene così? nella /tmp/ non c'è traccia dei file che converto..)

 

Ho assunto che il file abbia estensione .tiff... prova a cambiare ".tif" nella regola sed... oppure a scrivere semplicemente:

```

FILEOUT=${FILEIN}.pdf

```

ciao

----------

## stefanonafets

Penso che i file te li salvi nella stessa cartella in cui è posizionato il file di origine.

Questo però dipende da che tipo di variabile passa evolution allo script quando fai "esegui con..." e selezioni il tuo script.

Il problema dello script di comio penso stia nel fatto che lui dava per scontato che l'estensione del file fosse .tiff e non .tif ...

Cmq cerca di capire se quando usi lo script con evolution quest'ultimo passa al primo il percorso relativo del file (./nome-file.tif) o il perccorso assoluto (/dir/dove/è/posizionato/il/file.tif).

Cmq, se esegui lo script da shell e gli passi solo il nome del file, per salvarlo in /temp/nome-file.pdf potresti fare così (scrivo anche io from-scratch, e copio):

```

#!/bin/bash

if [ "$1" = """ ]; then

     echo "Devi passare un file da elaborare allo script"

     exit 1

elif [ ! -e $1 ]; then

     echo "Il file $1 non esiste"

     exit 1

else

     FILEIN=$1

     FILEOUT=`echo $FILEIN|sed -e 's/.tif$/.pdf/g'`

     echo -n "Conversione..." 

     tiff2pdf $FILEIN -o /tmp/$FILEOUT

     gpdf /tmp/$FILEOUT

     exit 0

fi

```

Probabilmente è sbagliato, mal strutturato, grezzo, bruttino, e soprattutto potrebbe contenere errori di sintassi (indi non fungere), ma provalo e fammi sapere.

----------

## knefas

[OT]

 *Ciccio Bueo wrote:*   

> 
> 
> ```
> root@tux matteo # ACCEPT_KEYWORDS=~x86 emerge search tiff2pdf
> 
> ...

 

ACCEPT_KEYWORDS=~x86 e' deprecato. Leggi questo: https://forums.gentoo.org/viewtopic.php?t=225737

[/OT]

----------

## Ciccio Bueo

allora ci sono praticamente risucito... ora devo un pò lavorare sulla qualità del pdf.. che è un pò misera, e fargli rimuovere i file temporanei della cache di evolution.

ho fatto così:

```
#!/bin/bash

FILEIN=$1

FILEOUT=`echo $FILEIN|sed -e 's/.tif$/.pdf/g'`

echo "Conversione..."

tiff2pdf $FILEIN -o $FILEOUT

gpdf $FILEOUT

cp $FILEOUT /home/matteo/faxpdf

exit

```

----------

## Ciccio Bueo

risolto!

Grazie a tutti per il prezioso aiuto!!!!!!!!!!!!!!

fantastici gli script!   :Cool: 

ecco il mio script:

```
#!/bin/bash

FILEIN=$1

FILEOUT=`echo $FILEIN|sed -e 's/.tif$/.pdf/g'`

echo "Conversione..."

tiff2pdf $FILEIN -o $FILEOUT

gpdf $FILEOUT

cp $FILEOUT /home/matteo/faxpdf

rm $FILEIN

rm $FILEOUT

exit

```

lo spiego:

mi arriva via mail il fax, ovvero una mai con allegato il tiff (o tif) 

da evolution faccio "apri con"

scelgo "2pdf" (il mio script)

me lo apre con gpdf

lo guardo... chiudo gpdf

mi trovo il fax salvato in pdf multipagina nella cartella faxpdf

infine vengono cancellati i file temporanei (così non occupo il prezioso spazio su disco!)

Ciao!   :Very Happy: 

----------

## Ciccio Bueo

sto provando a modificare lo script perchè funzioni anche per i file che scrico da internet... ma non funziona, ho provato a cambiare qualche variabile, ma non ne vado fuori... qualche idea?

----------

