File: pdf90

package info (click to toggle)
pdfjam 1.20-2
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k, lenny
  • size: 196 kB
  • ctags: 9
  • sloc: sh: 596; makefile: 47
file content (208 lines) | stat: -rwxr-xr-x 6,040 bytes parent folder | download
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
#! /bin/bash
##
##  pdf90: A shell program to rotate all pages of PDF files
##
##  Author David Firth (http://www.warwick.ac.uk/go/dfirth)
##
version=1.20
echo "This is pdf90 version ""$version"
##
##  Relies on pdflatex and the 'pdfpages' package (version 0.2e 
##  or later).
##
#######################################################################
##  CONFIGURATION: change this block as necessary
##
##  THESE SETTINGS WILL BE OVER-RIDDEN by any found at 
##     /etc/pdfnup.conf
##     /usr/share/etc/pdfnup.conf
##     /usr/local/share/pdfnup.conf
##     /usr/local/etc/pdfnup.conf
##     ~/.pdfnup.conf
##  (which are read in that order)
##  
##  First say where your "pdflatex" program lives:
##
pdflatex="/usr/bin/pdflatex"
#pdflatex="pdflatex.exe"    ## this for Windows computers
##
##  Next a permitted location for temporary files on your system:
##
tempfileDir="/var/tmp" ## /var/tmp is standard on most unix systems
#tempfileDir="C:/tmp"  ## use something like this under Windows
##
##  Now specify the default settings for pdf90:
## 
tidy=true              ## delete all temporary files immediately
##
##  END OF CONFIGURATION
#######################################################################
##
##  Read the configuration file(s) if such exist:
##
for d in /etc /usr/share/etc /usr/local/share /usr/local/etc
do if test -f $d/pdfnup.conf; then
   echo "Reading site configuration from $d/pdfnup.conf"
   source $d/pdfnup.conf
   fi 
done
if test -f ~/.pdfnup.conf; then 
   echo "Reading user defaults from ~/.pdfnup.conf";
   source ~/.pdfnup.conf; 
fi
#######################################################################
##
##  Define the output of "pdf90 --help"
##
helptext="
Usage: pdf90 args
where args must include source pdf filename(s) and optionally also
* a specific name for the output file, e.g. --outfile myrotatedfile.pdf 
* one of --tidy true
         --tidy false
  according to whether or not temporary files should be deleted immediately.
  If --tidy false is used, such files are left in $tempfileDir.

Default arguments for you at this site are
  --tidy $tidy 
  
For information and version history see http://www.warwick.ac.uk/go/pdfjam
"
##
##  Check that necessary LaTeX packages are installed
##
PATH=`dirname "$pdflatex"`:$PATH
export PATH
case `kpsewhich pdfpages.sty` in
	"") echo "pdf90: pdfpages.sty not installed"; exit 1;;
esac
case `kpsewhich eso-pic.sty` in
	"") echo \
	    "pdf90: eso-pic.sty not installed (see the pdfpages manual)"
	    exit 1;;
esac
case `kpsewhich everyshi.sty` in
	"") echo \
	    "pdf90: everyshi.sty not installed (see the pdfpages manual)"
	    exit 1;;
esac
##
##  Now do the argument loop...
##
sourcePath=
outFile=
inFiles=0
newline='
'
while test -n "${1}"; do
  case "${1}" in
  	*.pdf|*.PDF) inFiles=`expr $inFiles + 1`;
  	       sourcePath="$sourcePath$newline${1}";;
  	--help) echo "$helptext";
            exit 0;;
 	--outfile) outFile="${2}" 
  	           case "$outFile" in
  	           	*".pdf");;
  	           	*) echo "pdf90: outfile name must end in .pdf"; 
  	           	   exit 1;;
  	           esac
  	           shift;;
  	--tidy) tidy="${2}"
  	        shift;;
  	*) echo "pdf90: unrecognised argument ${1}"; exit 1;;
  esac
  shift
done
if test $inFiles -gt 1 ; then
  if test "$outFile" != "" ; then
    echo "pdf90: --outfile cannot be used with multiple input files"; 
    echo "pdf90: no files processed"
    exit 1;
  fi
fi
case "$sourcePath" in
  "") echo "pdf90: no pdf source file specified
For information on usage try \"pdf90 --help\""; exit 1;;
esac
OIFS=IFS
IFS="$newline"
for k in $sourcePath
do
  if test -f "$k"; then :; 
    else echo "pdf90: ""$k"" does not exist, no files were processed"; 
    exit 1;
  fi
done
##
##  That's the arguments done.
##
##
##  Now work on the input file (or files in turn)
##
pwd=`pwd | sed 's/ /\\ /'`
counter=0
for inFile in $sourcePath
do
  counter=`expr $counter + 1`
  echo "Processing $inFile..."
  cd "$pwd"
  pdfName=`basename "$inFile"`
  sourceDir=`dirname "$inFile"` ; cd "$sourceDir" ; sourceDir=`pwd`
  sourceFullPath="$sourceDir"/"$pdfName"
  cd "$pwd"
  case "$outFile" in
	  "") ## no --outfile argument supplied
	      outfileNameRoot=`echo "$pdfName" | sed 's/\.pdf$//i'`-rotated;
	      outfileDir="$sourceDir";
	      outFile="$outfileNameRoot"".pdf";;
	   *) ## --outfile argument was supplied
	      outfileNameRoot=`basename "$outFile" | sed 's/\.pdf$//i';`
	      outfileDir=`dirname "$outFile"` ; 
	      cd "$outfileDir" ; 
	      outfileDir=`pwd` ;;
  esac
  case "$outfileDir"/"$outfileNameRoot"".pdf" in
    $sourceFullPath) echo "pdf90: outfile and source cannot be the same";
  	            exit 1;;
    //"$outfileNameRoot"".pdf") outfileDir="";;  ## in case of output 
  esac                                           ## to the root directory!
  ##
  ##  Now edit the temporary LaTeX input file
  ##
  uniqueName="$RANDOM$RANDOM$RANDOM"-"$counter"
  ln -s "$sourceFullPath" "$tempfileDir"/"$uniqueName"source.pdf
  texFile="$tempfileDir"/"$uniqueName".tex
  msgFile="$tempfileDir"/"$uniqueName".msgs
  (sed s*pdfname*"$tempfileDir"/"$uniqueName"source.pdf* <<EndTemplate
\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-,fitpaper=true,angle=90]{pdfname}
\end{document}
EndTemplate
) | sed 's/^[^b]egin/\\begin/' > $texFile
  echo "  Temporary LaTeX file for this job is ""$texFile"
  ##
  ##  Now run pdflatex and tidy up
  ##
  echo "  Calling pdflatex..."
  cd "$tempfileDir"
  "$pdflatex" --interaction batchmode "$texFile" > "$msgFile"
  if test -f "$tempfileDir"/"$uniqueName"".aux";  
        ## ie if LaTeX didn't choke
    then if cp "$tempfileDir"/"$uniqueName".pdf \
               "$outfileDir"/"$outfileNameRoot"".pdf"
         then echo "  Finished: output is"\
                   "$outfileDir"/"$outfileNameRoot"".pdf"
         fi
    case "$tidy" in
      true) rm "$tempfileDir"/"$uniqueName"* ;;
    esac
    outFile=""
  else echo "  Failed: output file not written"
  fi 
done
IFS=OIFS