|
|
@@ -78,42 +78,51 @@ EXIT_INVALID_PAPER_SIZE=50 |
|
|
|
# Main function called at the end |
|
|
|
main() { |
|
|
|
printVersion 1 'verbose' |
|
|
|
checkDeps |
|
|
|
checkDeps |
|
|
|
vprint " Input file: $INFILEPDF" |
|
|
|
vprint " Output file: $OUTFILEPDF" |
|
|
|
getPageSize |
|
|
|
vPrintSourcePageSizes ' Source' |
|
|
|
local finalRet=$EXIT_ERROR |
|
|
|
|
|
|
|
if isMixedMode; then |
|
|
|
vprint " Mixed Tasks: Resize & Scale" |
|
|
|
vprint " Scale factor: $SCALE" |
|
|
|
vPrintSourcePageSizes ' Source' |
|
|
|
outputFile="$OUTFILEPDF" # backup outFile name |
|
|
|
tempFile="${OUTFILEPDF%.pdf}.__TEMP__.pdf" # set a temp file name |
|
|
|
OUTFILEPDF="$tempFile" # set output to tmp file |
|
|
|
pageResize # resize to tmp file |
|
|
|
finalRet=$? |
|
|
|
INFILEPDF="$tempFile" # get tmp file as input |
|
|
|
OUTFILEPDF="$outputFile" # reset final target |
|
|
|
PGWIDTH=$RESIZE_WIDTH # we already know the new page size |
|
|
|
PGHEIGHT=$RESIZE_HEIGHT # from the last command (Resize) |
|
|
|
vPrintSourcePageSizes ' New' |
|
|
|
pageScale # scale the resized pdf |
|
|
|
finalRet=$(($finalRet+$?)) |
|
|
|
# remove tmp file |
|
|
|
rm "$tempFile" >/dev/null 2>&1 || printError "Error when removing temporary file: $tempFile" |
|
|
|
elif isResizeMode; then |
|
|
|
vprint " Single Task: Resize PDF Paper" |
|
|
|
vprint " Scale factor: Disabled (resize only)" |
|
|
|
vPrintSourcePageSizes ' Source' |
|
|
|
pageResize |
|
|
|
finalRet=$? |
|
|
|
else |
|
|
|
local scaleMode="" |
|
|
|
vprint " Single Task: Scale PDF Contents" |
|
|
|
isManualScaledMode && scaleMode='(manual)' || scaleMode='(auto)' |
|
|
|
vprint " Scale factor: $SCALE $scaleMode" |
|
|
|
vPrintSourcePageSizes ' Source' |
|
|
|
pageScale |
|
|
|
finalRet=$? |
|
|
|
fi |
|
|
|
|
|
|
|
return $EXIT_SUCCESS |
|
|
|
if [[ finalRet -eq $EXIT_SUCCESS ]]; then |
|
|
|
vprint " Final Status: File created successfully" |
|
|
|
else |
|
|
|
vprint " Final Status: Errors were detected. Exit status: $finalRet" |
|
|
|
fi |
|
|
|
|
|
|
|
return $finalRet |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@@ -134,7 +143,7 @@ initDeps() { |
|
|
|
|
|
|
|
# Checks for dependencies errors, run after getting options |
|
|
|
checkDeps() { |
|
|
|
if [[ $MODE = "IDENTIFY" ]]; then |
|
|
|
if [[ $MODE = "IDENTIFY" ]]; then |
|
|
|
vprint "Checking for imagemagick's identify" |
|
|
|
if notIsAvailable "$IDBIN"; then printDependency 'imagemagick'; fi |
|
|
|
fi |
|
|
@@ -234,7 +243,7 @@ pageScale() { |
|
|
|
vprint " Translation X: $XTRANS" |
|
|
|
vprint " Translation Y: $YTRANS" |
|
|
|
|
|
|
|
# Do it. |
|
|
|
# Scale page |
|
|
|
"$GSBIN" \ |
|
|
|
-q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dSAFER \ |
|
|
|
-dCompatibilityLevel="1.5" -dPDFSETTINGS="/printer" \ |
|
|
@@ -243,23 +252,34 @@ pageScale() { |
|
|
|
-dDEVICEWIDTHPOINTS=$PGWIDTH -dDEVICEHEIGHTPOINTS=$PGHEIGHT \ |
|
|
|
-sOutputFile="$OUTFILEPDF" \ |
|
|
|
-c "<</BeginPage{$SCALE $SCALE scale $XTRANS $YTRANS translate}>> setpagedevice" \ |
|
|
|
-f "$INFILEPDF" & |
|
|
|
wait ${!} |
|
|
|
-f "$INFILEPDF" |
|
|
|
|
|
|
|
return $? |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# Runs the ghostscript paper resize script |
|
|
|
pageResize() { |
|
|
|
# Get new paper sizes if not custom paper |
|
|
|
isNotCustomPaper && getGSPaperSize "$RESIZE_PAPER_TYPE" |
|
|
|
|
|
|
|
# Flip detect |
|
|
|
local tmpInverter="" |
|
|
|
if [[ $FLIP_DETECTION -eq $TRUE && $PGWIDTH -gt $PGHEIGHT && $RESIZE_WIDTH -lt $RESIZE_HEIGHT ]]; then |
|
|
|
vprint " Flip Detect: Wrong orientation!" |
|
|
|
vprint " Inverting Width <-> Height" |
|
|
|
tmpInverter=$RESIZE_HEIGHT |
|
|
|
RESIZE_HEIGHT=$RESIZE_WIDTH |
|
|
|
RESIZE_WIDTH=$tmpInverter |
|
|
|
if [[ $FLIP_DETECTION -eq $TRUE ]]; then |
|
|
|
if [[ $PGWIDTH -gt $PGHEIGHT && $RESIZE_WIDTH -lt $RESIZE_HEIGHT ]]; then |
|
|
|
vprint " Flip Detect: Wrong orientation!" |
|
|
|
vprint " Inverting Width <-> Height" |
|
|
|
tmpInverter=$RESIZE_HEIGHT |
|
|
|
RESIZE_HEIGHT=$RESIZE_WIDTH |
|
|
|
RESIZE_WIDTH=$tmpInverter |
|
|
|
else |
|
|
|
vprint " Flip Detect: No change needed" |
|
|
|
fi |
|
|
|
else |
|
|
|
vprint " Flip Detect: Disabled" |
|
|
|
fi |
|
|
|
vprint " Resizing to: $(uppercase $RESIZE_PAPER_TYPE) ( $RESIZE_WIDTH x $RESIZE_HEIGHT ) pts" |
|
|
|
|
|
|
|
vprint " Resizing to: $(uppercase "$RESIZE_PAPER_TYPE") ( "$RESIZE_WIDTH" x "$RESIZE_HEIGHT" ) pts" |
|
|
|
|
|
|
|
# Change page size |
|
|
|
"$GSBIN" \ |
|
|
@@ -270,9 +290,9 @@ pageResize() { |
|
|
|
-dDEVICEWIDTHPOINTS=$RESIZE_WIDTH -dDEVICEHEIGHTPOINTS=$RESIZE_HEIGHT \ |
|
|
|
-dFIXEDMEDIA -dPDFFitPage \ |
|
|
|
-sOutputFile="$OUTFILEPDF" \ |
|
|
|
-f "$INFILEPDF" & |
|
|
|
wait ${!} |
|
|
|
-f "$INFILEPDF" |
|
|
|
|
|
|
|
return $? |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|