2011-01-17 8 views

risposta

1

Utilizzare uno strumento chiamato tiff2ps dal set strumenti forniti da libtiff:

http://www.libtiff.org/tools.html

volta che avete il tiff in formato ps, è possibile chiamare ps2pdf a convertirsi pdf, che fa parte del pacchetto ghostscript nella maggior parte delle distribuzioni Linux.

+0

c'è un modo per fare questo con appena IM e/o GS? – StackOverflowNewbie

+0

Prova a 'convertire l'output original.tif% d.tif' e controlla se lo divide in più file. Quindi, in uno script, converti tutti in un poscritto usando Imagemagick. Quindi utilizzare ghostscript per stampare ogni file ps sul dispositivo pdf. –

+0

qual è il punto del passaggio intermedio della conversione di TIFF in PS? Se riesco a combinare più TIFF in un PDF direttamente, dovrei usare questo approccio? – StackOverflowNewbie

7
convert multipage.tiff -density 300x300 -compress jpeg multipage.pdf 

Questo dovrebbe funzionare, anche se ci possono essere alcuni problemi.

+0

non comporterà questo risultato in un PDF di 1 pagina? – StackOverflowNewbie

+1

@StackOverflowNewbie: quando l'ho provato, ha generato un PDF multipagina sulla mia versione. Sembra funzionare come elencare i file separatamente. – Orbling

+0

@StackOverflowNewbie: Personalmente, ritengo che IM sia in grado di creare un hash corretto di PDF, quindi probabilmente dividere il TIFF utilizzando l'IM per PDF a pagina singola e utilizzare pdftk per combinarli. – Orbling

0

Ho avuto una situazione simile di conversione di un file TIFF multipagina. ma nel mio caso l'estensione risultante era una miniatura JPG. Tuttavia, credo che questo codice seguente verrà eseguito per convertire TIFF in PDF. http://sourcecodemania.com/how-to-convert-text-to-speech-with-php/

<?php 
try 
{ 
// Saving every page of a TIFF separately as a JPG thumbnail 
$images = new Imagick("testing.tif"); 
foreach($images as $i=>$image) { 
    // Providing 0 forces thumbnail Image to maintain aspect ratio 
    $image->thumbnailImage(768,0); 
    $image->writeImage("page".$i.".jpg"); 
    echo "<img src='page$i.jpg' alt='images' ></img>"; 
} 
$images->clear(); 
} 
catch(Exception $e) 
{ 
     echo $e->getMessage(); 
} 
?> 

I commenti sono benvenuti http://www.sourcecodemania.com

0
#!/bin/bash 
# scanadf frontend 
# kdialog info at http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs#Menu_and_Selection_Dialogs 
# i/o redirection at http://tldp.org/LDP/abs/html/io-redirection.html 
# variable to file i/o at http://www.linuxquestions.org/questions/programming-9/bash-script-%96-reading-and-writing variables-to-a-separate-file-365158/ 
# 
#rev. 1.2 03.02.12 
# 
#NOTE: TO RUN THIS SCRIPT YOU WILL NEED TO CREATE THE DIRECTORIES REFERRED TO IN THE SCRIPT. 
#THE ANSWER TO THE QUESTION IS THE TWO-PASS COMMANDS BELOW "convert" and "gs" 
#THE CONVERT COMMAND COMBINES ALL THE TIFFS IN THE DIRECTORY INTO A SINGLE PDF 
#THE GS (GHOSTSCRIPT) COMMAND RESIZES TO 8.5X11 AND COMPRESSES 
# 
# 
#THIS IS A KDIALOG SCRIPT AND WILL ONLY RUN IN KDE. KDIALOG COMMANDS COULD BE REPLACED BY DIALOG COMMANDS 
#ALTERNATIVELY, THE KDIALOG COMMANDS COULD BE REPLACED BY COMMAND LINE COMMANDS AND RUN IN A TERMINAL. 
# 

yn1=1 
cd ~/.getscan/ 
. config 
while [ $yn1 = 1 ]; 
do 
    cd ~/.getscan/tmp/ 
    kdialog --title "scanner activated" --passivepopup "scanner warming up" 
    if [ $scnr = 2 ];then 
     scanadf --mode $clr --resolution $res -y 279 --source 'Automatic Document Feeder(left aligned,Duplex)' 2>test.txt 
    else 
     scanadf --mode $clr --resolution $res -y 279 2>test.txt 
    fi 
    err1=$(cat test.txt) 
    rm test.txt 
# 
#scanner error trap 
# 
    if [ $? = 1 ];then 
    kdialog --title "scanner error" --msgbox "$err1" 
    else 
# 
#don't want to accidentally create in tmp folder. 
#"label" kdialog option didn't work 
# 
    kdialog --title "scanner info" --passivepopup "$err1" 5 
    cd ~/downloads/transfer 
    name=`kdialog --getsavefilename :newscan.pdf "*.pdf"` 
    cd ~/.getscan/tmp/ 
# convert * $name 
    convert * tmp/temp.pdf 
    gs -o $name -sDEVICE=pdfwrite -dPDFFitPage -r300x300 -g2550x3300 tmp/temp.pdf 
    rm * 
    rm tmp/* 
    okular $name 
fi 
    yn1=`kdialog --title "continue?" --radiolist "Select:" 1 "scan another document?" on 2 "stop" off 3 "change settings" off --geometry 150x100+300+300 ` 
if [ $yn1 = 2 ];then 
    yn1="y" 
fi 
if [ $yn1 = 3 ];then 
    cd ~/.getscan/ 
    . config 
    if [ $scnr = 2 ];then 
     scnr="ADF-Duplex" 
    fi 
    res1=`kdialog --title "scanner resolution" --radiolist "Select Resolution:" 1 "100" off 2 "200" off 3 "300" on 4 "400" off 5 "500" off 6 "600"` 
    if [ $res1 = 3 ];then 
     res1=300 
    fi 
    echo res=$res1 > config 
    clr1=`kdialog --title "color" --radiolist "Select Resolution:" 1 "black & white" on 2 "24bit color" off` 
    if [ $clr1 = 1 ];then 
     clr1=black 
    fi 
    if [ $clr1 = 2 ];then 
     clr1="'24bit color'" 
    fi 
    echo clr=$clr1 >> config 
    scnr1=`kdialog --title "mode" --radiolist "Select Resolution:" 1 "ADF" on 2 "ADF duplex" off` 
    if [ $scnr1 = 1 ];then 
     scnr1="1" 
    fi 
    if [ $scnr1 = 2 ];then 
     scnr1="2" 
    fi 
    echo scnr=$scnr1 >> config 
    . config 
    yn1=1 
    fi 
done 
exit 0 
+0

Grazie per aver postato una risposta! Mentre uno snippet di codice può rispondere alla domanda è comunque bello aggiungere alcune informazioni aggiuntive, come spiegare, ecc. – j0k

1

Usa seguente codice per generare più pagine PDF da più file di paging tiff:

<?php 

$images = new Imagick($pathToYourFile); 

foreach($images as $i=>$image) { 
    $image->setImageFormat("pdf"); 
    $images->addImage($image); 
} 

$images->writeImages($yourFileName.'.pdf', true); 

?> 
+1

La domanda non richiede la soluzione PHP. – Dmitry