DEV Community

Barış AKSU
Barış AKSU

Posted on

Kolay ve Hızlı PDF Sıkıştırma: Ghostscript Kullanımı

Selamlar,

ChatGPT Plus aboneliği aldığımdan beri kendim için birçok Custom GPT oluşturdum :) ancak burada karşılaştığım en büyük sorun PDF dosyalarının boyutları oldu. Bunun için internette birçok araç var ama upload etmek de zaman kaybına yol açıyor. Ee madem zahmetsiz ve kolay bir yol arıyoruz gelin Ghostscript nedir, pdf'leri ghostscript ile nasıl küçültebiliriz buna bakalım.

Ghostscript Nedir?

Ghostscript, PDF, PostScript ve diğer sayfa tanımlama dilleriyle çalışmak için kullanılan, açık kaynak kodlu bir yazılımdır. Bu araç, PDF'leri dönüştürmek, birleştirmek ve boyutunu değiştirmek gibi çeşitli işlemler için kullanılabilir.

Ghostscript'i Yükleme

Ghostscript adresinden işletim sisteminize uygun yönergeleri takip ederek Ghostscript'i kurabilirsiniz. Linux makinamda Ghostscript'in başarıyla kurulduğunu şu şekilde anlayabiliyorum:

╰─❯ gs -v                                                                                                                                                     
GPL Ghostscript 10.01.2 (2023-06-21)
Copyright (C) 2023 Artifex Software, Inc.  All rights reserved.
Enter fullscreen mode Exit fullscreen mode

Komut

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=mydocsmaller.pdf mydoc.pdf
Enter fullscreen mode Exit fullscreen mode

Bu komut, belgenizin boyutunu küçültür. Şimdi bu parametreleri yakından tanıyalım.

-sDEVICE=pdfwrite: Çıktı dosyasının PDF formatında olacağını belirtir.
-dCompatibilityLevel=1.4: PDF'in uyumluluk seviyesini belirtir.
-dPDFSETTINGS=/screen: Çıktı kalitesini ve çözünürlüğünü belirler. /screen ayarı, düşük çözünürlükte (72 dpi) görüntüler oluşturur, bu da dosya boyutunu küçültür.

/screen: düşük çözünürlük, 72 dpi görüntüler
/ebook: biraz daha yüksek çözünürlük, 150 dpi görüntüler
/printer: yüksek kaliteli baskılar için, 300 dpi görüntüler
/prepress: basın kalitesi çıktı, 300 dpi görüntüler
/default: bir dizi parametreyi varsayılan ayarlara sıfırlar

-dNOPAUSE, -dQUIET, -dBATCH: İşlem sırasında herhangi bir duraksama veya mesaj gösterilmemesini sağlar.
-sOutputFile: Oluşturulacak dosyanın adını belirtir.
mydoc.pdf: Küçültmek istediğiniz PDF dosyasının adıdır.

Bu ayrıntıları sürekli hatırlamak zor olabilir, değil mi? O zaman gelin, bunu bir betiğe dönüştürelim.

Betiğe Dönüştürme

Aşağıdaki betik, yukarıda bahsedilen işlemi basitleştirir:

#!/bin/bash

usage() {
  echo "Usage: $0 -i <input_file> -o <output_file>" 1>&2;
  exit 1;
}

while getopts ":i:o:" opt; do
  case ${opt} in
    i )
      input_file=$OPTARG
      ;;
    o )
      output_file=$OPTARG
      ;;
    \? )
      echo "Invalid option: -$OPTARG" 1>&2
      usage
      ;;
    : )
      echo "Invalid option: -$OPTARG requires an argument" 1>&2
      usage
      ;;
  esac
done
shift $((OPTIND -1))

if [ -z "${input_file}" ] || [ -z "${output_file}" ]; then
  usage
fi

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile="${output_file}" "${input_file}"
Enter fullscreen mode Exit fullscreen mode

Yukarıdaki betikte aslında çok bir şey yapmadık. Yaptığımız tek şey o çirkin görüntüyü ortadan kaldıracak 2 parametre eklemek oldu. Bu kodları gsPDF.sh olarak veya istediğiniz herhangi bir isimle kaydedin. Ardından chmod +x gsPDF.sh komutu ile gerekli izinleri verin.

Artık ./gsPDF.sh -i mydoc.pdf -o mydocsmaller.pdf şeklinde kullanabileceğiniz kullanışlı bir betiğiniz var, burada -i girdi (input) ve -o çıktı (output) anlamına gelir.

Umarım bu bilgiler sizin için yararlı olmuştur. Başka bir yazıda görüşmek üzere :).

Top comments (0)