You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.2 KiB
42 lines
1.2 KiB
#!/bin/sh |
|
## |
|
## pdfresize -- resize a PDF document |
|
## Copyright (c) 2018 Ralf S. Engelschall <rse@engelschall.com> |
|
## Licensed under MIT license. |
|
## |
|
|
|
# determine parameters |
|
if [ $# -ne 3 ]; then |
|
echo "pdfresize: USAGE: pdfresize <scale-factor> <input-pdf> <output-pdf>" 1>&2 |
|
exit 1 |
|
fi |
|
scale="$1" |
|
input="$2" |
|
output="$3" |
|
|
|
# determine input size in 72PT units |
|
size=`pdfinfo $input | grep "Page size:" | sed -e 's;^[^0-9]*\([0-9]*\).*x \([0-9]*\).*;\1x\2;'` |
|
input_w=`echo $size | sed -e 's;x.*$;;'` |
|
input_h=`echo $size | sed -e 's;^.*x;;'` |
|
|
|
# calculate new size |
|
output_w=`(echo "scale = 0"; echo "$input_w * $scale" ) | @l_prefix@/bin/bc | sed -e 's;\..*;;'` |
|
output_h=`(echo "scale = 0"; echo "$input_h * $scale" ) | @l_prefix@/bin/bc | sed -e 's;\..*;;'` |
|
|
|
# perform resizing with the help of Ghostscript |
|
@l_prefix@/bin/gs \ |
|
-q \ |
|
-dNOPAUSE \ |
|
-dBATCH \ |
|
-sDEVICE=pdfwrite \ |
|
-dSAFER \ |
|
-dCompatibilityLevel="1.5" \ |
|
-dPDFSETTINGS="/printer" \ |
|
-dSubsetFonts=false \ |
|
-dEmbedAllFonts=true \ |
|
-r72 \ |
|
-g${output_w}x${output_h} \ |
|
-sOutputFile=$output \ |
|
-c "<</BeginPage{ $scale $scale scale 0 0 translate}>> setpagedevice" \ |
|
-f $input |
|
|
|
|