ΠΠΎΡ Π²Π°ΠΌ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΡΠΊΡΠΈΠΏΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Linux ΠΈ Unix, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ PDF-ΡΠ°ΠΉΠ»Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Ghostscript.
ΠΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²Π°Ρ PDF-ΡΠ°ΠΉΠ» Π½Π° ΡΠΎΠΌΠ½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ ΡΠ°ΠΉΡ.
ΠΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΡΡΠΎ ΠΈΠ· ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°.
ΠΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΊΠ°ΠΊ Π½Π° CentOS, ΡΠ°ΠΊ ΠΈ Π½Π° Ubuntu/Debian Linux.
ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ macOS, FreeBSD ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Ghostscript.
Π‘ΠΌΠΎΡΡΠ΅ΡΡ Π²ΡΠ΅ FAQ ΠΏΠΎ GNU/LinuxGhostscript – ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Ρ Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ (GNU Affero General Public License + ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅) Π΄Π»Ρ ΡΠ°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° PDF ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΡΠ·ΡΠΊΠ° PostScript ΠΈ PDF ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΌΠΎΡΡΠ°.
ΠΡΠΈΠΌΠ΅Ρ ΡΠΊΡΠΈΠΏΡΠ° ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΡΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ PDF-ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ΄ Linux.
ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ Π² Π΄ΡΡΠ³ΠΈΡ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ Ghostscript ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, macOS ΠΈΠ»ΠΈ FreeBSD.
Π‘ΠΊΡΠΈΠΏΡ Π΄Π»Ρ Unix ΠΈ Linux Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° PDF-ΡΠ°ΠΉΠ»Π°
#!/bin/sh Β # http://www.alfredklomp.com/programming/shrinkpdf # Licensed under the 3-clause BSD license: # # Copyright (c) 2014-2019, Alfred Klomp # All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # 1. Redistributions of source code must retain the above copyright notice, # this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. # 3. Neither the name of the copyright holder nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. Β # # Modified by Vivek Gite to suit my needs # shrink () { gs \ -q -dNOPAUSE -dBATCH -dSAFER \ -sDEVICE=pdfwrite \ -dCompatibilityLevel=1.3 \ -dPDFSETTINGS=/screen \ -dEmbedAllFonts=true \ -dSubsetFonts=true \ -dAutoRotatePages=/None \ -dColorImageDownsampleType=/Bicubic \ -dColorImageResolution=$3 \ -dGrayImageDownsampleType=/Bicubic \ -dGrayImageResolution=$3 \ -dMonoImageDownsampleType=/Subsample \ -dMonoImageResolution=$3 \ -sOutputFile="$2" \ "$1" } Β check_smaller () { # If $1 and $2 are regular files, we can compare file sizes to # see if we succeeded in shrinking. If not, we copy $1 over $2: if [ ! -f "$1" -o ! -f "$2" ]; then return 0; fi ISIZE="$(echo $(wc -c "$1") | cut -f1 -d\ )" OSIZE="$(echo $(wc -c "$2") | cut -f1 -d\ )" if [ "$ISIZE" -lt "$OSIZE" ]; then echo "Input smaller than output, doing straight copy" >&2 cp "$1" "$2" fi } Β usage () { echo "Reduces PDF filesize by lossy recompressing with Ghostscript." echo "Not guaranteed to succeed, but usually works." echo " Usage: $1 infile [outfile] [resolution_in_dpi]" } Β IFILE="$1" Β # Need an input file: if [ -z "$IFILE" ]; then usage "$0" exit 1 fi Β # Output filename defaults to "-" (stdout) unless given: if [ ! -z "$2" ]; then OFILE="$2" else OFILE="-" fi Β # Output resolution defaults to 72 unless given: if [ ! -z "$3" ]; then res="$3" else res="90" fi Β shrink "$IFILE" "$OFILE" "$res" || exit $? Β check_smaller "$IFILE" "$OFILE"
ΠΠ°ΠΊ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ PDF-ΡΠ°ΠΉΠ»Π° Π² Linux Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ bash
Π‘ΠΊΠ°ΡΠ°ΠΉΡΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΊΡΠΈΠΏΡ Π² ΡΠ²ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ.
Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠ°Π²Π° Π½Π° ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ» Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ chmod:
chmod +x ~/bin/shrinkpdf.sh
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π΅Π³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
~/bin/shrinkpdf.sh input.pdf output.pdf
~/bin/shrinkpdf.sh input.pdf output.pdf 100
~/bin/shrinkpdf.sh input.pdf output.pdf 120
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ls Π΄Π»Ρ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ°ΠΉΠ»Π°:
ls -lh input.pdf
ls -lh output.pdf
ΡΠΌ. ΡΠ°ΠΊΠΆΠ΅:
- π¦Β ΠΠ°ΠΊ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ PDF Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Linux
- π§Β ΠΠ°ΠΊ ΡΠΆΠ°ΡΡ Π²Π΅ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΠΏΠΎΠΌΠΎΡΡΡ xz ΠΈ tar Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Linux
- π§Β ΠΠ°ΠΊ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΠΉΠ» Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Linux?
![]()
