| @@ -12,7 +12,7 @@ Better than explaining is showing it: | |||
| #### Checking File Information | |||
| ``` | |||
| $ ./pdfScale.sh -i ../input-nup.pdf | |||
| pdfScale.sh v2.0.3 - Paper Sizes | |||
| pdfScale.sh v2.1.0 - Paper Sizes | |||
| ------------+----------------------------- | |||
| File | input-nup.pdf | |||
| Paper Type | A4 Landscape | |||
| @@ -27,7 +27,7 @@ This also shows a very special case of a PDF file that has no `/MediaBox` define | |||
| It is a dumb container of n-up binary PDF pages. So, `grep` fails on this one. | |||
| ``` | |||
| $ pdfscale -v ../input-nup.pdf | |||
| pdfscale v2.0.2 - Verbose Execution | |||
| pdfscale v2.1.0 - Verbose Execution | |||
| Single Task: Scale PDF Contents | |||
| Input File: ../input-nup.pdf | |||
| Output File: ../input-nup.SCALED.pdf | |||
| @@ -46,7 +46,7 @@ pdfscale v2.0.2 - Verbose Execution | |||
| #### Resize to A0 and Scale by 1.05 (+5%) | |||
| ``` | |||
| $ pdfscale -v -r a0 -s 1.05 ../mixsync\ manual\ v1-2-3.pdf | |||
| pdfscale v2.0.0 - Verbose Execution | |||
| pdfscale v2.1.0 - Verbose Execution | |||
| Mixed Tasks: Resize & Scale | |||
| Input File: ../mixsync manual v1-2-3.pdf | |||
| Output File: ../mixsync manual v1-2-3.A0.SCALED.pdf | |||
| @@ -69,7 +69,7 @@ pdfscale v2.0.0 - Verbose Execution | |||
| #### Resize to A2 and disables Auto-Rotation | |||
| ``` | |||
| $ pdfscale -v -r A2 -a none ../input.pdf | |||
| pdfscale v2.0.0 - Verbose Execution | |||
| pdfscale v2.1.0 - Verbose Execution | |||
| Single Task: Resize PDF Paper | |||
| Input File: ../input.pdf | |||
| Output File: ../input.A2.pdf | |||
| @@ -83,100 +83,113 @@ pdfscale v2.0.0 - Verbose Execution | |||
| Run Resizing: A2 ( 1191 x 1684 ) pts | |||
| Final Status: File created successfully | |||
| ``` | |||
| #### Resize to custom 200x200 mm, disable Flip-Detection and Scale by 0.95 (-5%) | |||
| ``` | |||
| $ pdfscale -v -v -r 'custom mm 200 200' -f disable -s 0.95 ../mixsync\ manual\ v1-2-3.pdf | |||
| 2017-05-15:08:48:06 | pdfscale v2.0.2 - Verbose Execution | |||
| 2017-05-15:08:48:06 | Mixed Tasks: Resize & Scale | |||
| 2017-05-15:08:48:06 | Input File: ../mixsync manual v1-2-3.pdf | |||
| 2017-05-15:08:48:06 | Output File: ../mixsync manual v1-2-3.CUSTOM.SCALED.pdf | |||
| 2017-05-15:08:48:06 | Get Page Size: Adaptive Enabled | |||
| 2017-05-15:08:48:06 | Method: Grep | |||
| 2017-05-15:08:48:06 | Source Width: 842 postscript-points | |||
| 2017-05-15:08:48:06 | Source Height: 595 postscript-points | |||
| 2017-05-15:08:48:06 | Auto Rotate: PageByPage | |||
| 2017-05-15:08:48:06 | Flip Detect: Disabled | |||
| 2017-05-15:08:48:06 | Run Resizing: CUSTOM ( 567 x 567 ) pts | |||
| 2017-05-15:08:48:06 | New Width: 567 postscript-points | |||
| 2017-05-15:08:48:06 | New Height: 567 postscript-points | |||
| 2017-05-15:08:48:06 | Scale Factor: 0.95 | |||
| 2017-05-15:08:48:06 | Translation X: 14.920605 | |||
| 2017-05-15:08:48:06 | Translation Y: 14.920605 | |||
| 2017-05-15:08:48:06 | Run Scaling: -5 % | |||
| 2017-05-15:08:48:07 | Final Status: File created successfully | |||
| #### Resize to custom 200x300 mm, disable Flip-Detection and Scale by 0.95 (-5%) | |||
| ``` | |||
| $ pdfscale -v -v -r 'custom mm 200 300' -f disable -s 0.95 ../mixsync\ manual\ v1-2-3.pdf | |||
| 2017-05-19:08:07:14 | pdfscale v2.1.0 - Verbose Execution | |||
| 2017-05-19:08:07:14 | Mixed Tasks: Resize & Scale | |||
| 2017-05-19:08:07:14 | Input File: ../mixsync manual v1-2-3.pdf | |||
| 2017-05-19:08:07:14 | Output File: ../mixsync manual v1-2-3.CUSTOM.SCALED.pdf | |||
| 2017-05-19:08:07:14 | Get Page Size: Adaptive Enabled | |||
| 2017-05-19:08:07:14 | Method: Grep | |||
| 2017-05-19:08:07:14 | Source Width: 842 postscript-points | |||
| 2017-05-19:08:07:14 | Source Height: 595 postscript-points | |||
| 2017-05-19:08:07:14 | Auto Rotate: PageByPage | |||
| 2017-05-19:08:07:14 | Flip Detect: Disabled | |||
| 2017-05-19:08:07:14 | Run Resizing: CUSTOM ( 567 x 850 ) pts | |||
| 2017-05-19:08:07:14 | New Width: 567 postscript-points | |||
| 2017-05-19:08:07:14 | New Height: 850 postscript-points | |||
| 2017-05-19:08:07:14 | Scale Factor: 0.95 | |||
| 2017-05-19:08:07:14 | Translation X: 14.920605 | |||
| 2017-05-19:08:07:14 | Translation Y: 22.367750 | |||
| 2017-05-19:08:07:14 | Run Scaling: -5 % | |||
| 2017-05-19:08:07:15 | Final Status: File created successfully | |||
| ``` | |||
| ## Help info | |||
| ``` | |||
| $ ./pdfScale.sh -h | |||
| pdfScale.sh v2.0.0 | |||
| $ pdfscale -h | |||
| pdfscale v2.1.0 | |||
| Usage: pdfScale.sh <inFile.pdf> | |||
| pdfScale.sh -i <inFile.pdf> | |||
| pdfScale.sh [-v] [-s <factor>] [-m <page-detection>] <inFile.pdf> [outfile.pdf] | |||
| pdfScale.sh [-v] [-r <paper>] [-f <flip-detection>] [-a <auto-rotation>] <inFile.pdf> [outfile.pdf] | |||
| pdfScale.sh -p | |||
| pdfScale.sh -h | |||
| pdfScale.sh -V | |||
| Usage: pdfscale <inFile.pdf> | |||
| pdfscale -i <inFile.pdf> | |||
| pdfscale [-v] [-s <factor>] [-m <page-detection>] <inFile.pdf> [outfile.pdf] | |||
| pdfscale [-v] [-r <paper>] [-f <flip-detection>] [-a <auto-rotation>] <inFile.pdf> [outfile.pdf] | |||
| pdfscale -p | |||
| pdfscale -h | |||
| pdfscale -V | |||
| Parameters: | |||
| -v Verbose mode, prints extra information | |||
| -v, --verbose | |||
| Verbose mode, prints extra information | |||
| Use twice for timestamp | |||
| -h Print this help to screen and exits | |||
| -V Prints version to screen and exits | |||
| -m <mode> Page size Detection mode | |||
| May disable the Adaptive Mode | |||
| -i <file> Prints <file> Page Size information to screen and exits | |||
| -s <factor> Changes the scaling factor or forces scaling | |||
| Defaults: 0.95 / no scaling (resize mode) | |||
| -h, --help | |||
| Print this help to screen and exits | |||
| -V, --version | |||
| Prints version to screen and exits | |||
| -n, --no-overwrite | |||
| Aborts execution if the output PDF file already exists | |||
| By default, the output file will be overwritten | |||
| -m, --mode <mode> | |||
| Paper size detection mode | |||
| Modes: a, adaptive Default mode, tries all the methods below | |||
| g, grep Forces the use of Grep method | |||
| m, mdls Forces the use of MacOS Quartz mdls | |||
| p, pdfinfo Forces the use of PDFInfo | |||
| i, identify Forces the use of ImageMagick's Identify | |||
| -i, --info <file> | |||
| Prints <file> Paper Size information to screen and exits | |||
| -s, --scale <factor> | |||
| Changes the scaling factor or forces mixed mode | |||
| Defaults: 0.95 (scale mode) / Disabled (resize mode) | |||
| MUST be a number bigger than zero | |||
| Eg. -s 0.8 for 80% of the original size | |||
| -r <paper> Triggers the Resize Paper Mode | |||
| Resize PDF paper proportionally | |||
| Uses a valid paper name or a custom defined paper | |||
| -f <mode> Flip Detection Mode, defaults to 'auto'. | |||
| Inverts Width <-> Height of a Resized PDF. | |||
| Modes: a, auto - automatic detection, default | |||
| f, force - forces flip W <-> H | |||
| d, disable - disables flipping | |||
| -a <mode> GS Auto-Rotation Setting, defaults to 'PageByPage'. | |||
| Setting for GS -dAutoRotatePages. | |||
| Modes: p, pagebypage - auto-rotates pages individually | |||
| a, all - rotates all pages (or none) depending | |||
| on a kind of "majority decision" | |||
| n, none - retains orientation of each page | |||
| -p Prints Ghostscript paper info tables to screen | |||
| -r, --resize <paper> | |||
| Triggers the Resize Paper Mode, disables auto-scaling of 0.95 | |||
| Resize PDF and fit-to-page | |||
| <paper> can be: source, custom or a valid std paper name, read below | |||
| -f, --flip-detect <mode> | |||
| Flip Detection Mode, defaults to 'auto' | |||
| Inverts Width <-> Height of a Resized PDF | |||
| Modes: a, auto Keeps source orientation, default | |||
| f, force Forces flip W <-> H | |||
| d, disable Disables flipping | |||
| -a, auto-rotate <mode> | |||
| Setting for GS -dAutoRotatePages, defaults to 'PageByPage' | |||
| Uses text-orientation detection to set Portrait/Landscape | |||
| Modes: p, pagebypage Auto-rotates pages individually | |||
| n, none Retains orientation of each page | |||
| a, all Rotates all pages (or none) depending | |||
| on a kind of "majority decision" | |||
| -p, --print-papers | |||
| Prints Standard Paper info tables to screen and exits | |||
| Scaling Mode: | |||
| The default mode of operation is scaling mode with fixed paper | |||
| size and scaling pre-set to 0.95. By not using the resize mode | |||
| you are using scaling mode. Flip-Detection and Auto-Rotation are | |||
| disabled in Scaling mode. | |||
| - The default mode of operation is scaling mode with fixed paper | |||
| size and scaling pre-set to 0.95 | |||
| - By not using the resize mode you are using scaling mode | |||
| - Flip-Detection and Auto-Rotation are disabled in Scaling mode, | |||
| you can use '-r source -s <scale>' to override. | |||
| Resize Paper Mode: | |||
| Disables the default scaling factor! (0.95) | |||
| Changes the PDF Paper Size in points. Will fit-to-page. | |||
| - Disables the default scaling factor! (0.95) | |||
| - Changes the PDF Paper Size in points. Will fit-to-page | |||
| Mixed Mode: | |||
| In mixed mode both the -s option and -r option must be specified. | |||
| The PDF will be first resized then scaled. | |||
| - In mixed mode both the -s option and -r option must be specified | |||
| - The PDF will be first resized then scaled | |||
| Output filename: | |||
| The output filename is optional. If no file name is passed | |||
| the output file will have the same name/destination of the | |||
| input file with added suffixes: | |||
| - Having the extension .pdf on the output file name is optional, | |||
| it will be added if not present. | |||
| - The output filename is optional. If no file name is passed | |||
| the output file will have the same name/destination of the | |||
| input file with added suffixes: | |||
| .SCALED.pdf is added to scaled files | |||
| .<PAPERSIZE>.pdf is added to resized files | |||
| .<PAPERSIZE>.SCALED.pdf is added in mixed mode | |||
| Page Size Detection Modes: | |||
| a, adaptive Default mode, tries all the methods below | |||
| g, grep Forces the use of grep method | |||
| m, mdls Forces the use of MacOS Quartz mdls | |||
| p, pdfinfo Forces the use of PDFInfo | |||
| i, identify Forces the use of ImageMagick's Identify | |||
| Valid Paper Names: (case-insensitive) | |||
| Standard Paper Names: (case-insensitive) | |||
| A0 A1 A2 A3 A4 | |||
| A4SMALL A5 A6 A7 A8 | |||
| A9 A10 ISOB0 ISOB1 ISOB2 | |||
| @@ -189,43 +202,53 @@ Valid Paper Names: (case-insensitive) | |||
| HALFLETTER HAGAKI | |||
| Custom Paper Size: | |||
| Paper size can be set manually in Milimeters, Inches or Points. | |||
| Use: pdfScale.sh -r 'custom <measurement> <width> <height>' | |||
| Ex: pdfScale.sh -r 'custom mm 300 300' | |||
| Measurements can be: mm, inch, pts. | |||
| Custom paper definition MUST be quoted into a single parameter. | |||
| Actual size is applied in points (mms and inches are transformed). | |||
| - Paper size can be set manually in Milimeters, Inches or Points | |||
| - Custom paper definition MUST be quoted into a single parameter | |||
| - Actual size is applied in points (mms and inches are transformed) | |||
| - Measurements: mm, mms, milimeters | |||
| pt, pts, points | |||
| in, inch, inches | |||
| Use: pdfscale -r 'custom <measurement> <width> <height>' | |||
| Ex: pdfscale -r 'custom mm 300 300' | |||
| Using Source Paper Size: (no-resizing) | |||
| - Wildcard 'source' is used used to keep paper size the same as the input | |||
| - Usefull to run Flip-Detection and Auto-Rotation without resizing | |||
| - Eg. pdfscale -r source ./input.dpf | |||
| Options and Parameters Parsing: | |||
| - From v2.1.0 (long-opts) there is no need to pass file names at the end | |||
| - Anything that is not a short-option is case-insensitive | |||
| - Short-options: case-sensitive Eg. -v for Verbose, -V for Version | |||
| - Long-options: case-insensitive Eg. --SCALE and --scale are the same | |||
| - Subparameters: case-insensitive Eg. -m PdFinFo is valid | |||
| - Grouping short-options is not supported Eg. -vv, or -vs 0.9 | |||
| Additional Notes: | |||
| - Adaptive Page size detection will try different modes until | |||
| it gets a page size. You can force a mode with -m 'mode'. | |||
| - Options must be passed before the file names to be parsed. | |||
| - Having the extension .pdf on the output file name is optional, | |||
| it will be added if not present. | |||
| - File and folder names with spaces should be quoted or escaped. | |||
| - The scaling is centered and using a scale bigger than 1 may | |||
| result on cropping parts of the pdf. | |||
| - Most of the options are case-insensitive, Ex: -m PdFinFo | |||
| - File and folder names with spaces should be quoted or escaped | |||
| - The scaling is centered and using a scale bigger than 1.0 may | |||
| result on cropping parts of the PDF | |||
| - For detailed paper types information, use: pdfscale -p | |||
| Examples: | |||
| pdfScale.sh myPdfFile.pdf | |||
| pdfScale.sh -i '/home/My Folder/My PDF File.pdf' | |||
| pdfScale.sh myPdfFile.pdf "My Scaled Pdf" | |||
| pdfScale.sh -v -v myPdfFile.pdf | |||
| pdfScale.sh -s 0.85 myPdfFile.pdf My\ Scaled\ Pdf.pdf | |||
| pdfScale.sh -m pdfinfo -s 0.80 -v myPdfFile.pdf | |||
| pdfScale.sh -v -v -m i -s 0.7 myPdfFile.pdf | |||
| pdfScale.sh -r A4 myPdfFile.pdf | |||
| pdfScale.sh -v -v -r "custom mm 252 356" -s 0.9 -f "../input file.pdf" "../my new pdf" | |||
| pdfscale myPdfFile.pdf | |||
| pdfscale -i '/home/My Folder/My PDF File.pdf' | |||
| pdfscale myPdfFile.pdf "My Scaled Pdf" | |||
| pdfscale -v -v myPdfFile.pdf | |||
| pdfscale -s 0.85 myPdfFile.pdf My\ Scaled\ Pdf.pdf | |||
| pdfscale -m pdfinfo -s 0.80 -v myPdfFile.pdf | |||
| pdfscale -v -v -m i -s 0.7 myPdfFile.pdf | |||
| pdfscale -r A4 myPdfFile.pdf | |||
| pdfscale -v -v -r "custom mm 252 356" -s 0.9 -f "../input file.pdf" "../my new pdf" | |||
| ``` | |||
| ## GhostScript Paper Tables | |||
| The `-p` parameter prints detailed paper types information | |||
| ``` | |||
| $ ./pdfScale.sh -p | |||
| pdfScale.sh v2.0.0 | |||
| $ pdfscale -p | |||
| pdfscale v2.1.0 | |||
| Valid Ghostscript Paper Sizes accepted | |||
| Paper Sizes Information | |||
| +-----------------------------------------------------------------+ | |||
| | ISO STANDARD | | |||
| @@ -350,14 +373,20 @@ sudo yum install imagemagick pdfinfo | |||
| brew install imagemagick xpdf | |||
| ``` | |||
| ## Clone using git | |||
| ``` | |||
| git clone https://github.com/tavinus/pdfScale.git | |||
| cd ./pdfScale | |||
| ./pdfScale.sh --version | |||
| ``` | |||
| ## System Install | |||
| The installer will name the executable as `pdfscale` with no uppercase chars and without the `.sh` extension. | |||
| If you have `make` installed you can use it to install to `/usr/local/bin/pdfscale` with: | |||
| ``` | |||
| sudo make install | |||
| ``` | |||
| ``` | |||
| To remove the installation use: | |||
| ``` | |||
| sudo make uninstall | |||