PDF dosyalarını kırpmak için komut satırı aracı


101

PDF dosyasını Adobe Acrobat Pro'da yapabildiğimiz gibi kırpmak için açık kaynaklı bir komut satırı aracı arıyorum. PdfTk, ImageMagick, PyPDF ve GhostScript'i denedim - hepsi bugüne kadar başarılı olamadı.


Adobe Acrobat pro ile ne tür bir kırpma yapabileceğinizi açıklayabilir misiniz? Çünkü bende yok ve bu yüzden ne aradığını söyleyemem.
xubuntix

Adobe Acrobat Pro'da PDF'yi kırpmak için kenar boşluğu denetimlerini kullanabiliriz.
Kırpmaya mahsus

Yanıtlar:


124

PDFcrop'a bir göz atmanızı öneririm .

5, 10, 20 ve 30 pt (puan) değerinde sol, üst, sağ ve alt kenar boşluklarıyla pdf kırpmak istiyorsanız, o zaman

pdfcrop --margins '5 10 20 30' input.pdf output.pdf

Terminalde Bir şeyi gerçekten uzaklaştırmak için, kırpma argümanında negatif değerler kullanın. Örneğin,

pdfcrop --margins '-50 -50 -50 -50' input.pdf output.pdf

sola, yukarı, sağa, alttan 50 pt ekler (bu sırayla).

Yalnızca komutu çalıştırırsanız , sıfır-kenar boşluklu input-crop.pdfpdfcrop input başlıklı bir dosya çıkarır . Pdf resimlerini belgelere eklerken bunu çok kullanışlı buluyorum.

Birden fazla dosyayı kırpma

Ne yazık ki, pdfcrop o zaman birden fazla dosyayı kırpamaz. Ancak, tüm pdfs'leri betiğin bulunduğu klasöre kopyalayacak bir komut dosyası yazmak kolaydır.

Yeni bir boş dosya oluşturun ve arayın something.sh. Bir metin editörüyle açın ve aşağıdakileri ekleyin:

#!/bin/bash
for FILE in ./*.pdf; do
  pdfcrop "${FILE}"
done

Sakla ve kapat. Ardından dosyayı sağ tıklayın, Özellikler> İzinler'e gidin ve Dosyayı program olarak çalıştırmaya izin ver alanını kontrol edin . Şimdi diyaloğu kapat. Komut dosyasını çift tıklatarak ve Terminalde Çalıştır'ı seçerek çalıştırın . Ve şimdi, -crop sonekiyle tüm pdfs'lerin sıfır kenar boşluklu kırpılmış hali şimdi klasörde basılacaktır. Kenar boşlukları veya başka şeyler istiyorsanız, elbette sadece betiği açıp sonra argümanlar ekleyebilirsiniz pdfcrop.


Negatif kenar boşlukları belirlemek yerine, bunun da kullanabileceğini unutmayın --bbox "<left> <bottom> <right> <top>". Bu benim tarif kırpma alanını belirlemek için bir yaklaşım kullanmasına izin verir aşağıda cevabını .
bluenote10

Sayfa numarasını söyleme olasılığı var mı (kesilmesi gerekiyor)?
LK

Korkarım hepsi ya da hiç. pdfcrop --helpmevcut seçenekleri listeler. Orada çeşitli sayfalar belirleyebilecek bir şey göremiyorum.
Rasmus

7
PDFCrop çıktısının boyutunu girdiyle karşılaştırarak, pdfcrop yalnızca sınırlayıcı kutuları değiştirmiş gibi görünüyor. Verileri kaldırmaz. Dolayısıyla bu yaklaşım pdf'i küçültmek veya bilgileri gizlemek için uygun olmaz.
init_js

Bir cazibe gibi! marjlarda bile pdf gerekli!
jojo

36

Rasmus için teşekkürler, pdfcrop'u texlive-extra-utils paketinden yükleyebilirsiniz:

sudo apt-get install texlive-extra-utils

Ardından pdf crop komutunu kullanarak pdf dosyalarını kırpın:

pdfcrop input.pdf output.pdf

--helpgibi daha şaşırtıcı parametreleri görmek için kullanın--margins

pdfcrop --margins 5 input.pdf output.pdf

hangi sayfanın her tarafından 5 bp pdf kırpma


1
Ölçüm, bpbiraz farklıdır pt. Bakınız tex.stackexchange.com/questions/8260/… .
koppor

2
Benim için pdfcrop dosya boyutunu 300x'ten (7MB'den 2GB'a kadar) şişirdi. Daha gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdfsonra dosya boyutunu düzeltmek zorunda kaldım .
fiktör

17

Ayrıca, basitçe Ghostscript kullanarak PDF dosyalarını da kırpabilirsiniz. Süreci basitleştirmek için küçük bir senaryo yazdım ( bu cevaba göre ):

#!/bin/bash

if [ $# -lt 5 ]
then
  echo "Usage: `basename $0` <pdf-file> <x_min> <x_max> <y_min> <y_max>"
  echo "Notes:"
  echo " - all coordinates are absolute; no calculation of width/height necessary"
  echo " - use 'gv' to determine the coordinates"
  exit 65
fi

file="$1"
xmin="$2"
xmax="$3"
ymin="$4"
ymax="$5"

base="${file%.*}"
outfile="${base}_cropped.pdf"

echo "writing to: $outfile"

gs \
  -o $outfile \
  -sDEVICE=pdfwrite \
  -c "[/CropBox [$xmin $ymin $xmax $ymax] /PAGES pdfmark" \
  -f $file

Kırpma koordinatlarını belirlemek için gv, fare imlecinin koordinatlarını Ghostscript ile aynı birimleri kullanarak basan kullanıyorum. Örneğin, burada x / y için minimum koordinatları (sol üst köşedeki değerler) belirlerim:

crop1

Şimdi maksimum koordinatlar:

crop2

Sonunda, şöyle bir senaryo pdf_crop_by_coordinates.sh test.pdf 45 429 38 419üreten bir senaryo çalıştırıyorum test_cropped.pdf:

sonuç

Yine de, Ghostscript çözümünün pdfcropkalite ve doğruluk açısından nasıl karşılaştırılacağı hakkında hiçbir fikrim yok .


15

Pdftk ile bir şey yapamadığımda , açacağım bir sonraki yer pdfpages LaTeX paketi için bir komut satırı sarmalayıcısı olan PDFjam'dır (dolayısıyla buna ve bir TeX dağıtımına da ihtiyacınız vardır). Nasıl kullanılacağı hakkında yardım için, düzenli yardım ekranını öneririm:

pdfjam --help

man sayfası seyrek olduğu ve Web sayfası örnekler üzerinde yoğunlaştığı için.

Bir PDF'yi kırpmak için ihtiyacınız olan komut şuna benzer:

pdfjam --keepinfo --trim "10mm 15mm 10mm 15mm" --clip true --suffix "cropped" input.pdf

Bu denilen bir dosya çıktısı alacaktır input-cropped.pdf. Düzeltir sırası uyarınca, alt, sağ, üst bırakılmalıdır \includegraphicsgelen graphicx .

PDFcrop ile nasıl kıyaslandığına dair bir fikir vermek için, son zamanlarda oldukça süslü bir PDF'yi mahvetmeme neden oldu. Orijinalim 675 kB idi, PDFjam aracılığıyla kırpılmış sürümüm 1.2 MB iken, PDFcrop aracılığıyla kırpılmış sürüm 4.5 MB idi. Hem PDFjam hem de PDFcrop gömülü köprüleri ve yer imlerini çıkarırken, PDFjam --keepinfoseçeneği ile belge özelliklerini korudu (örn. Başlık, yazar, konu).


1
Not: Bu, ekrandan çıkan içeriği PDF'den gerçekten kaldırmaz, yalnızca gizler. En çok puan alan cevapta @ init_js yorumlarındakilerle aynı.
Jan Żankowski


3

Bu size yardımcı olabilir.
Bu, Ubuntu'nun ve yaşamın yeni sürümüne uygundur. Bu Master PDF Editör . Kırpma kullanabilirsiniz, bazı şeyler ekleyin, vb.

Örnek:
Bu önce Bu daha önce ctrl + k sonrasıdır görüntü tanımını buraya girin




2

PdfCropMargins programı otomatik olarak PDF dosyalarını marjları kırpmak için bir komut satırı uygulamasıdır.

Bu program, Ghostscript programına veya sistemde kurulu olan (ve konumlandırılabilir) pdftoppm programına bağlıdır. Ve 191 eşiğini kullanarak sınırlayıcı kutuları bulmak için sayfa görüntülerini PIL ile analiz edin.

kullanarak yükle

pip yükleme pdfCropMargins

Kullanarak çalıştır

pdf-crop-margins -v -s -u sizin-dosya.pdf

Yardım için

pdf-crop-margins -h | Daha

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.