Forum Linux.pl

Programowanie => Bash, skrypty powłoki => Wątek zaczęty przez: mariuszad w 2019-10-25, 08:22:40

Tytuł: Masowa konwersja z formatu JPG do PDF
Wiadomość wysłana przez: mariuszad w 2019-10-25, 08:22:40
Witam

Muszę przekonwertować ponad 1 mln skanów z formatu jpg do pdf.  Mam je zorganizowane w następujący sposób:

├── images
│   ├── katalog1
│   │   ├── index.html
│   │   ├── Rok_2017
│   │   │   ├── index.html
│   │   │   ├── nr1
│   │   │   │   ├── index.html
│   │   │   │   ├── nr1-001.jpg
│   │   │   │   ├── nr1-zoom-001.jpg
│   │   │   │   ├── nr1-002.jpg
│   │   │   │   ├── nr1-zoom-002.jpg
│   │   │   │   ├── nr1-003.jpg
│   │   │   │   ├── nr1-zoom-003.jpg
│   │   │   ├── nr2
│   │   │   │   ├── index.html
│   │   │   │   ├── nr2-001.jpg
│   │   │   │   ├── nr2-zoom-001.jpg
│   │   │   │   ├── nr2-002.jpg
│   │   │   │   ├── nr2-zoom-002.jpg
│   │   │   │   ├── nr2-003.jpg
│   │   │   │   ├── nr2-zoom-003.jpg
│   │   ├── Rok_2018
│   │   │   ├── index.html
│   │   │   ├── nr1
│   │   │   │   ├── index.html
│   │   │   │   ├── nr1-001.jpg
│   │   │   │   ├── nr1-zoom-001.jpg
│   │   │   │   ├── nr1-002.jpg
│   │   │   │   ├── nr1-zoom-002.jpg
│   │   │   │   ├── nr1-003.jpg
│   │   │   │   ├── nr1-zoom-003.jpg
│   │   │   ├── nr2
│   │   │   │   ├── index.html
│   │   │   │   ├── nr2-001.jpg
│   │   │   │   ├── nr2-zoom-001.jpg
│   │   │   │   ├── nr2-002.jpg
│   │   │   │   ├── nr2-zoom-002.jpg
│   │   │   │   ├── nr2-003.jpg
│   │   │   │   ├── nr2-zoom-003.jpg
│   ├── katalog2
│   │   ├── index.html
│   │   ├── Rok_2017
│   │   │   ├── index.html
│   │   │   ├── nr1
│   │   │   │   ├── index.html
│   │   │   │   ├── nr1-001.jpg
│   │   │   │   ├── nr1-zoom-001.jpg
│   │   │   │   ├── nr1-002.jpg
│   │   │   │   ├── nr1-zoom-002.jpg
│   │   │   │   ├── nr1-003.jpg
│   │   │   │   ├── nr1-zoom-003.jpg
│   │   │   ├── nr2
│   │   │   │   ├── index.html
│   │   │   │   ├── nr2-001.jpg
│   │   │   │   ├── nr2-zoom-001.jpg
│   │   │   │   ├── nr2-002.jpg
│   │   │   │   ├── nr2-zoom-002.jpg
│   │   │   │   ├── nr2-003.jpg
│   │   │   │   ├── nr2-zoom-003.jpg
│   │   ├── Rok_2018
│   │   │   ├── index.html
│   │   │   ├── nr1
│   │   │   │   ├── index.html
│   │   │   │   ├── nr1-001.jpg
│   │   │   │   ├── nr1-zoom-001.jpg
│   │   │   │   ├── nr1-002.jpg
│   │   │   │   ├── nr1-zoom-002.jpg
│   │   │   │   ├── nr1-003.jpg
│   │   │   │   ├── nr1-zoom-003.jpg
│   │   │   ├── nr2
│   │   │   │   ├── index.html
│   │   │   │   ├── nr2-001.jpg
│   │   │   │   ├── nr2-zoom-001.jpg
│   │   │   │   ├── nr2-002.jpg
│   │   │   │   ├── nr2-zoom-002.jpg
│   │   │   │   ├── nr2-003.jpg
│   │   │   │   ├── nr2-zoom-003.jpg

Skany pochodzą z lat 2014-2019 i w każdym roczniku jest do  52 numerów. Zależy mi aby z plików zawierających w nazwie "zoom" wygenerować pdf-y o takiej samej nazwie co nazwy plików jpg. Znalazłem skrypt który (niedokładnie tak jakbym chciał) konwertuje ale muszę go uruchamiać ręcznie  w każdym z 52 numerów dla każdego rocznika. W takim tempie skończyłbym pewnie za rok :(.
Dlatego zastanawiam się czy moglibyście pomóc mi napisać skrypt który skonwertowałby cały zasób do nowej lokalizacji zachowując przy okazji obecną strukturę katalogów?

Myślałem o wykorzystaniu convert z ImageMagic

Za wszelką pomoc będę niezmiernie wdzięczny.

Pozdrawiam
mariuszad
Tytuł: Odp: Masowa konwersja z formatu JPG do PDF
Wiadomość wysłana przez: Paweł Kraszewski w 2019-10-25, 10:10:23
Ale chcesz mieć 1 PDF na numer z wieloma stronami z kolejnymi JPG-ami, czy stricte 1JPG -> 1PDF?
Tytuł: Odp: Masowa konwersja z formatu JPG do PDF
Wiadomość wysłana przez: mariuszad w 2019-10-25, 11:14:42
1JPG-1PDF
Tytuł: Odp: Masowa konwersja z formatu JPG do PDF
Wiadomość wysłana przez: Paweł Kraszewski w 2019-10-25, 11:33:01
Cytat:  link=topic=25667.msg137898#msg137898 date=1571994882
1JPG-1PDF
Co mi do tego... :)

#!/bin/bash

if [ "$1" -a -f "$1" ]; then
    KAT=$(dirname "$1")
    IMGNAME=$(basename "$1")
    OKAT="PDF${KAT#./images}"
    PDFNAME="${IMGNAME%jpg}pdf"
    mkdir -p "${OKAT}"
    img2pdf -o "${OKAT}/${PDFNAME}" "$1"
else
    if ! which img2pdf &>/dev/zero; then
        echo "Zainstaluj program img2pdf"
        exit 1
    fi
   
    if [ ! -d "images" ]; then
        echo "Uruchom w katalogu zawierającym podkatalog images!"
        exit 2
    fi
   
    find . -iname "*-zoom-*.jpg" -exec $0 "{}" \;
fi

Testuj na kopii. Powinien odtworzyć strukturę katalogów poniżej image w nowym podkatalogu PDF.
Tytuł: Odp: Masowa konwersja z formatu JPG do PDF
Wiadomość wysłana przez: mariuszad w 2019-10-25, 11:41:42
Wielkie dzięki. Zabieram się do testów
Tytuł: Odp: Masowa konwersja z formatu JPG do PDF
Wiadomość wysłana przez: mariuszad w 2019-10-25, 12:06:44
Działa perfekcyjnie! O to właśnie mi chodziło!
Tytuł: Odp: Masowa konwersja z formatu JPG do PDF
Wiadomość wysłana przez: Paweł Kraszewski w 2019-10-25, 15:58:45
Proszszsz...