确定PDF中的每个页面是否具有相同的高度

时间:2014-02-02 17:02:46

标签: bash pdf resize flash

我使用以下代码将swf书籍转换为pdf:

swftopdf () {
    if [ ! -f "$1.pdf" ]; then
        wget "http://content.yudu.com/android/dJcuwVV99lEgqWoc/content/$1.high";
        mimetype=$(file $1.high --mime-type);
        if [ "$mimetype" == "$1.high: application/x-shockwave-flash" ]; then
            swfrender -Y 2500 "$1.high" -o "$1.png"; convert "$1.png" "$1.pdf";
        else
            convert "$1.high[x2500]" "$1.pdf";
        fi;
        rm -rf $1.high; rm -rf $1.png;
    fi;
};
for i in {1..244}; do
    while [ ! -f "$i.pdf" ]; do
        swftopdf $i;
    done;
done;
filelist=$(ls|sort -n);
pdftk $filelist cat output '/home/shane/Desktop/Complete Ebooks/Secondary Level/Leaving Cert/Folens/Othello.pdf' compress; rm -rf *.pdf

很少,.high文件会是jpg而不是swf,因此为什么有其他转换“$ i1.high [x2500]”段。但是,我最初没有[x2500]写在那里。

所以,我想知道的是,而不是删除我已经转换的所有书籍,有没有办法弄清楚是否有任何一个页面有高度在大pdf (.high,.png和个人.pdf已经删除)中不同于2500,所以我可以删除并重新转换该书,以便jpg页面的高度也是2500? 由于


此外,如果有人知道这样做的不那么复杂的方式,如果他们告诉我,我会很感激

如果你需要一个例子,1页是.swf,另一个是.jpg,为了解释的目的:
http://content.yudu.com/android/dJcuwVV99lEgqWoc/content/1.high - 瑞士法郎 http://content.yudu.com/android/dJcuwVV99lEgqWoc/content/2.high - jpg

1 个答案:

答案 0 :(得分:1)

由于您安装了ImageMagick,因此您可以使用identify来回答是否所有页面都具有相同高度的问题。以下是任意选择PDF的示例:

> identify MyFile.pdf 
MyFile.pdf[0] PDF 524x751 524x751+0+0 16-bit Bilevel DirectClass 49.6KB 0.050u 0:00.050
MyFile.pdf[1] PDF 524x751 524x751+0+0 16-bit Bilevel DirectClass 49.6KB 0.050u 0:00.050
MyFile.pdf[2] PDF 524x751 524x751+0+0 16-bit Bilevel DirectClass 49.6KB 0.050u 0:00.040

如果identify的输出没有告诉高度为2500,请不要感到惊讶:您的示例JPG文件的分辨率为149 ppi。 PDF通常需要72dpi。所以我希望你转换的JPG的高度为1208(= 2500 * 72/149):

> convert 2.high[x2500] 2.pdf
> identify 2.pdf

2.pdf PDF 870x1208 870x1208+0+0 16-bit Bilevel DirectClass 132KB 0.010u 0:00.000

希望有帮助...