Вот вам удобный и полезный скрипт для оболочки 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?