-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdiffpdftext
executable file
·112 lines (98 loc) · 3.19 KB
/
diffpdftext
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/bin/bash
# Skript: diffpdf
# Zweck: Zeigt die Unterschiede im Text zweier pdf-Dateien an.
# Verwendet pdftotext (xpdf), diff und (optional) kdiff3
# Globale Variablen
SCRIPTNAME=$(basename $0 .sh)
EXIT_SUCCESS=0
EXIT_FAILURE=1
EXIT_ERROR=2
EXIT_BUG=10
# Variablen für Optionsschalter hier mit Default-Werten vorbelegen
VERBOSE=n
KDIFF3=n
DIFFUSE=n
TKDIFF=n
DIFF=n
STDDIFF=y
# Funktionen
function usage {
echo "Usage: $SCRIPTNAME [-h] [-v] [-d] [-k] [-t] [-u] Basisdatei.pdf ModifizierteDatei.pdf" >&2
echo
echo "$SCRIPTNAME zeigt die inhaltlichen Unterschiede zweier pdf Dateien an."
echo "Es wird entweder diff (Standard) oder kdiff3 verwendet."
echo "Ersteres gibt die Unterschiede auf die Konsole aus,"
echo "letzteres startet einen graphischen diff-Editor."
echo
echo "$SCRIPTNAME -d file1.pdf file2.pdf verwendet diff (Konsole)"
echo "$SCRIPTNAME -k file1.pdf file2.pdf verwendet kdiff3 (Editor)"
echo "$SCRIPTNAME -u file1.pdf file2.pdf verwendet diffuse (Editor)"
echo "$SCRIPTNAME -t file1.pdf file2.pdf verwendet tkdiff (Editor)"
[[ $# -eq 1 ]] && exit $1 || exit $EXIT_FAILURE
}
# Die Option -h für Hilfe sollte immer vorhanden sein, die Optionen
# -v und -o sind als Beispiele gedacht. -o hat ein Optionsargument;
# man beachte das auf "o" folgende ":".
while getopts ':dktuvh' OPTION ; do
case $OPTION in
v) VERBOSE=y
;;
k) KDIFF3=y
STDDIFF=n
;;
u) DIFFUSE=y
STDDIFF=n
;;
t) TKDIFF=y
STDDIFF=n
;;
d) DIFF=y
STDDIFF=n
;;
h) usage $EXIT_SUCCESS
;;
\?) echo "Unbekannte Option \"-$OPTARG\"." >&2
usage $EXIT_ERROR
;;
:) echo "Option \"-$OPTARG\" benötigt ein Argument." >&2
usage $EXIT_ERROR
;;
*) echo "Dies kann eigentlich gar nicht passiert sein..."
>&2
usage $EXIT_BUG
;;
esac
done
# Verbrauchte Argumente überspringen
shift $(( OPTIND - 1 ))
# Eventuelle Tests auf min./max. Anzahl Argumente hier
if (( $# != 2 )) ; then
echo "Genau ZWEI Dateinamen beim Aufruf übergeben." >&2
usage $EXIT_ERROR
fi
# Schleife über alle Argumente
# Wandelt die beiden odt in txt um.
i=1
for ARG ; do
if [[ $VERBOSE = y ]] ; then
echo -n "pdf-Datei: "
echo $ARG
fi
pdftotext "$ARG" /tmp/temp$$DIFFPDF$i
let i=i+1
done
if [[ $DIFF = y || $STDDIFF = y ]] ; then
diff /tmp/temp$$DIFFPDF1 /tmp/temp$$DIFFPDF2
fi
if [[ $KDIFF3 = y ]] ; then
kdiff3 --L1 Basisdatei --L2 ModifizierteDatei /tmp/temp$$DIFFPDF1 /tmp/temp$$DIFFPDF2
fi
if [[ $DIFFUSE = y ]] ; then
diffuse /tmp/temp$$DIFFPDF1 /tmp/temp$$DIFFPDF2
fi
if [[ $TKDIFF = y ]] ; then
tkdiff /tmp/temp$$DIFFPDF1 /tmp/temp$$DIFFPDF2
fi
rm /tmp/temp$$DIFFPDF1
rm /tmp/temp$$DIFFPDF2
exit $EXIT_SUCCESS