|
|
@@ -0,0 +1,189 @@
|
|
|
+#!/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
|
|
|
+
|
|
|
+
|
|
|
+
|