| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- #!/usr/bin/env bash
- ## https://de.wikipedia.org/wiki/Comic-Book-Format
- ## https://www.din-formate.de/reihe-a-din-groessen-mm-pixel-dpi.html
- ## https://www.ihre-ideenfabrik.de/sp_faq/din-formate/
- title="compress_pdf "$version""
- end="Complete :P"
- ## do not change!
- FILE=$*
- DPI=0
- #=== FUNCTION ================================================================
- # NAME: chooseDPI
- # DESCRIPTION:
- #===============================================================================
- chooseDPI() {
- while [ "$DPI" == 0 ]
- do
- #DPI=`zenity --list --title="$title" --text="Choose DPI" --width=680 --height=270 --column="Value" --column="DPI" 72 72 150 "150 (default)" 300 300`
- DPI=`zenity --list --title="$title" --text="Choose DPI" --width=100 --height=270 --column="DPI" 72 150 300`
- [ $? -ne 0 ] && exit 2
- done
- }
- #=== FUNCTION ================================================================
- # NAME: chooseDinSize
- # DESCRIPTION: create ssh tunnel to application server
- #===============================================================================
- chooseDinSize() {
- while [ ! "$DINNORM" ]
- do
- DIN_A3="`echo \"scale=0; \${DPI}*11.693333333/1\" | bc -l`x`echo \"scale=0; \${DPI}*16.536666667/1\" | bc -l`"
- DIN_A4="`echo \"scale=0; \${DPI}*8.266666667/1\" | bc -l`x`echo \"scale=0; \${DPI}*11.693333333/1\" | bc -l`"
- DIN_A5="`echo \"scale=0; \${DPI}*5.826666667/1\" | bc -l`x`echo \"scale=0; \${DPI}*8.266666667/1\" | bc -l`"
- read DINNORM DINSIZE <<< $(zenity --list --print-column=ALL --separator=' ' --title="$title" --text="vdvds" --width=680 --height=270 --column="Din Norm" --column="Format" A3 $DIN_A3 A4 $DIN_A4 A5 $DIN_A5)
- [ $? -ne 0 ] && exit 2
- done
- }
- #=== FUNCTION ================================================================
- # NAME: extractFile
- # DESCRIPTION:
- #===============================================================================
- function extractFile() {
- mkdir $$
- case $(file --mime-type -b "${FILE}") in
- ## PDF
- application/pdf)
- pdfimages -j "${FILE}" $$/bild
- ;;
- ## CBR
- application/x-rar)
- unrar e -y "${FILE}" $$/
- ;;
- ## CBZ
- application/zip)
- unzip -j "${FILE}" -d $$/
- ;;
- ## directory
- inode/directory)
- cp -R "${FILE}"/* $$/
- ## remove trailing /
- FILE="${FILE%\/}"
- ;;
- *)
- FILETYP="unknown"
- exit 1
- ;;
- esac
- }
- #=== FUNCTION ================================================================
- # NAME: RotateAutoPage
- # DESCRIPTION: rotate images
- #===============================================================================
- RotateAutoPage() {
- while [ $# -gt 0 ]; do
- w=`identify -format "%[fx:w]" "$1"`
- h=`identify -format "%[fx:h]" "$1"`
- if [ $w -gt $h ]
- then
- convert "$1" -rotate 270 "$1"
- fi
- shift
- done
- }
- #=== FUNCTION ================================================================
- # NAME: renameExtFiles
- # DESCRIPTION: rename 01.jpg 001.jpg ...
- #===============================================================================
- renameExtFiles() {
- for counter in {01..99}; do
- ## PID=678 -> test -f 678/89.* && mv 678/89.* 678/089.jpg
- test -f $$/${counter}.* \
- && mv $$/${counter}.* $$/0${counter}.${FILE##*.}
- # find $$ -name "${counter}.*" | xargs
- done
- }
- #=== FUNCTION ================================================================
- # NAME: checkCorruptPictures
- # DESCRIPTION: Detect corrupt pictures
- #===============================================================================
- #checkCorruptPictures() {
- #
- # find . -iname *g" -o -iname "*f" -type f 2>/dev/null | xargs identify -verbose >/dev/null 2>&1; echo $?
- #
- #}
- #=== FUNCTION ================================================================
- # NAME: createPDF
- # DESCRIPTION:
- #===============================================================================
- createPDF() {
- # convert -compress jpeg -resize !874x1240 -density 150x150 -units PixelsPerInch $$/*g $$/*G $$/*/*g $$/*/*G $$/*/*f $$/*/*F "${1%\.pdf}_${compression}.pdf"
- convert -compress jpeg -resize !${DINSIZE} -density ${DPI}x${DPI} -units PixelsPerInch $$/*g $$/*G $$/*/*g $$/*/*G $$/*/*f $$/*/*F "${FILE%\.*}_${DPI}_${DINNORM}.pdf"
- }
- #=== FUNCTION ================================================================
- # NAME: cleanup
- # DESCRIPTION: delete tmp files
- #===============================================================================
- cleanup() {
-
- rm -R $$/
- }
- #=== Scriptablauf ================================================================
- #
- #
- #===================================================================================
- chooseDPI
- ## chooseDinSize
- chooseDinSize
- ## extract images from file
- extractFile
- ## rotate images
- RotateAutoPage $$/*g $$/*G $$/*/*g $$/*/*G $$/*/*f $$/*/*F
- #find $$ -type f -regex '.*[gfGF]$' | while read file;
- #do
- # RotateAutoPage "${file}"
- #done
- ## rename extracted images
- renameExtFiles
- ## create new PDF
- createPDF
- ## delete tmp files
- cleanup
|