2011-01-17 6 views
6

Мне нужно преобразовать многостраничный TIFF в многостраничный PDF-файл. У меня есть доступ к ImageMagick и GhostScript (в среде * nix). Как мне это сделать? Благодарю.ImageMagick или GhostScript: конвертировать многостраничный TIFF в многостраничный PDF

UPDATE:

Оказывается, что мой тестовый файл был неправильно (у него не было несколько страниц), что заставило меня думать, что моя команда была неправильно. Это, кажется, работает для меня: convert input.tif output.pdf

ответ

1

Используйте инструмент под названием tiff2ps из набора инструментов, представленной LibTIFF:

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

После того как вы размолвку в формате пс, вы можете позвонить ps2pdf преобразовать pdf, который является частью пакета ghostscript в большинстве дистрибутивов Linux.

+0

есть способ сделать это только с IM и/или GS? – StackOverflowNewbie

+0

Попробуйте 'convert original.tif output% d.tif' и посмотрим, разделит ли он его на несколько файлов. Затем в скрипте конвертируйте каждый в постскриптум с помощью Imagemagick. Затем используйте ghostscript для печати каждого файла ps в pdf-устройстве. –

+0

Какова точка промежуточного этапа преобразования TIFF в PS? Если я могу объединить несколько TIFF в PDF напрямую, должен ли я использовать этот подход? – StackOverflowNewbie

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

Это должно сработать, хотя могут возникнуть некоторые проблемы.

+0

не приведет ли это к 1 странице PDF? – StackOverflowNewbie

+1

@StackOverflowNewbie: Когда я попробовал, это привело к многостраничному PDF-файлу в моей версии. Кажется, нужно работать так же, как перечислять файлы по отдельности. – Orbling

+0

@StackOverflowNewbie: Лично я нахожу, что IM может сделать правильный хеш PDF-файлов, поэтому, вероятно, разделить TIFF с помощью IM на одностраничные PDF-файлы и использовать pdftk для их объединения. – Orbling

0

У меня была аналогичная ситуация с преобразованием многостраничного файла TIFF. но в моем случае результирующее расширение было миниатюрой JPG. Тем не менее, я считаю, что этот следующий код будет работать для преобразования TIFF в 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(); 
} 
?> 

Комментарии приветствуются 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

Спасибо за сообщение! В то время как фрагмент кода может ответить на вопрос, по-прежнему замечательно добавлять дополнительную информацию, например, объяснять и т. Д. – j0k

1

Используйте следующий код для создания несколько страниц PDF из многостраничного TIFF файла:

<?php 

$images = new Imagick($pathToYourFile); 

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

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

?> 
+1

Вопрос не требует решения PHP. – Dmitry

Смежные вопросы