Определите, имеет ли каждая страница в PDF одинаковую высоту

Я использую следующий код для преобразования книг 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, поэтому существует сегмент else convert «$i1.high[x2500]». Однако изначально у меня там не было написано [x2500].


Итак, мне интересно, вместо того, чтобы удалять все книги, которые я уже преобразовал,
есть ли способ выяснить, имеет ли какая-либо из страниц высоту, которая отличается от 2500 в большом pdf (файлы .high, .png и отдельные .pdf уже удалены), поэтому я могу затем удалить и преобразовать эту книгу, чтобы страницы jpg тоже имели высоту 2500? Спасибо


Кроме того, если кто-нибудь знает менее запутанный способ сделать это, я был бы признателен, если бы они сказали мне это


Если вы нужен пример одной страницы в формате .swf и другой в формате .jpg для пояснительных целей:
http://content.yudu.com/android/dJcuwVV99lEgqWoc/content/1.high — swf
http://content.yudu.com/android/dJcuwVV99lEgqWoc/content/2.high — jpg


person shaneod    schedule 02.02.2014    source источник


Ответы (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 пикселей на дюйм. PDF обычно занимает 72 dpi. Поэтому я ожидаю, что ваш преобразованный 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

Надеюсь, это поможет...

person leu    schedule 03.02.2014