Alat baris perintah untuk memotong file PDF

101

Saya mencari alat baris perintah open source untuk memotong file PDF seperti yang dapat kita lakukan di Adobe Acrobat Pro. Saya sudah mencoba PdfTk, ImageMagick, PyPDF, dan GhostScript — semuanya tidak berhasil sejauh ini.

Rakesh
sumber
Bisakah Anda jelaskan pemangkasan seperti apa yang dapat Anda lakukan dengan Adobe Acrobat pro? Karena saya tidak memilikinya dan karena itu tidak bisa memberi tahu apa yang Anda cari.
xubuntix
Di Adobe Acrobat Pro kita dapat menggunakan kontrol margin untuk memotong PDF. kami dapat memberikan nilai untuk bagian atas, bawah, kanan dan kiri untuk memotong
Rakesh

Jawaban:

124

Saya sarankan Anda melihat PDFcrop .

Jika Anda ingin memotong pdf dengan margin kiri, atas, kanan dan bawah 5, 10, 20, dan 30 pt (poin), maka jalankan

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

di terminal. Untuk benar-benar memotong sesuatu, gunakan nilai negatif dalam argumen untuk memotong. Sebagai contoh,

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

memotong 50 poin dari kiri, atas, kanan, bawah (dalam urutan ini).

Jika Anda hanya menjalankan perintah pdfcrop input, itu akan menampilkan file berjudul input-crop.pdf dengan nol margin. Saya menemukan ini sangat berguna ketika menyertakan ilustrasi pdf dalam dokumen.

Memotong banyak file

Sayangnya, pdfcrop tidak dapat memangkas banyak file saat itu. Namun mudah untuk menulis skrip yang akan memotong semua pdf di folder tempat skrip berada.

Buat file kosong baru, dan panggil itu something.sh. Buka dengan editor teks dan masukkan yang berikut ini:

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

Simpan, dan tutup. Kemudian klik kanan file, pergi ke Properties> Izin dan centang bidang Izinkan mengeksekusi file sebagai program . Sekarang tutup dialog. Jalankan skrip dengan mengklik dua kali dan memilih Jalankan di Terminal . Dan versi terpangkas nol-baru dari semua pdf dengan akhiran -crop sekarang akan dicetak dalam folder. Jika Anda menginginkan margin atau hal-hal lain, tentu saja Anda bisa hanya membuka skrip dan menambahkan argumen setelahnya pdfcrop.

Rasmus
sumber
Perhatikan bahwa alih-alih menentukan margin negatif, Anda juga dapat menggunakan --bbox "<left> <bottom> <right> <top>". Ini memungkinkan untuk menggunakan pendekatan untuk menentukan area tanaman yang dijelaskan dalam jawaban saya di bawah ini .
bluenote10
Apakah ada kemungkinan memberi tahu nomor halaman (yang perlu dipotong)?
LK
Saya khawatir itu semua atau tidak sama sekali. pdfcrop --helpdaftar opsi yang tersedia. Saya tidak dapat melihat apa pun di sana yang memungkinkan menentukan rentang halaman.
Rasmus
7
Membandingkan ukuran output PDFCrop dengan inputnya, sepertinya pdfcrop hanya memodifikasi kotak pembatas. Itu tidak menghapus data. Jadi pendekatan ini tidak cocok untuk membuat pdf lebih kecil, atau menyembunyikan informasi.
init_js
Seperti pesona! bahkan dengan margin yang dibutuhkan pdf!
jojo
36

Terima kasih untuk Rasmus, Anda dapat menginstal pdfcrop dari paket texlive-extra-utils:

sudo apt-get install texlive-extra-utils

Kemudian pangkas file pdf menggunakan perintah pdf crop sebagai:

pdfcrop input.pdf output.pdf

gunakan --helpuntuk melihat parameter yang lebih luar biasa suka--margins

pdfcrop --margins 5 input.pdf output.pdf

yang memotong pdf dengan 5 bp dari setiap sisi halaman

sarigalin
sumber
1
Pengukurannya bp, yang sedikit berbeda dari pt. Lihat tex.stackexchange.com/questions/8260/… .
koppor
2
Bagi saya pdfcrop meningkatkan ukuran file dari 300x (dari 7MB menjadi 2GB). Saya harus melakukan gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdfsetelah itu, yang memperbaiki ukuran file.
fiktor
17

Anda juga dapat memotong file PDF hanya dengan menggunakan Ghostscript. Saya telah menulis skrip kecil untuk menyederhanakan proses (terinspirasi oleh jawaban ini ):

#!/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

Untuk menentukan koordinat pemangkasan, saya menggunakan gv, yang mencetak koordinat kursor mouse menggunakan unit yang sama dengan Ghostscript. Sebagai contoh, di sini saya menentukan koordinat minimum untuk x / y (nilai-nilai di sudut kiri atas):

krop1

Sekarang koordinat maksimum:

crop2

Dan akhirnya, saya menjalankan skrip yang pdf_crop_by_coordinates.sh test.pdf 45 429 38 419menghasilkan test_cropped.pdfyang terlihat seperti itu:

hasil

Saya tidak tahu, bagaimana solusi Ghostscript dibandingkan pdfcropdalam hal kualitas dan kebenaran.

bluenote10
sumber
15

Ketika saya tidak dapat melakukan sesuatu dengan pdftk, tempat berikutnya yang saya putar adalah PDFjam , yang merupakan pembungkus baris perintah untuk paket pdfpages LaTeX (maka Anda juga memerlukan itu dan distro TeX diinstal). Untuk bantuan tentang cara menggunakannya, saya sarankan layar bantuan reguler:

pdfjam --help

karena halaman manual jarang dan halaman Web berkonsentrasi pada contoh.

Untuk memotong PDF, perintah yang Anda butuhkan adalah sesuatu seperti ini:

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

Ini akan menampilkan file bernama input-cropped.pdf. Urutan trim harus kiri, bawah, kanan, atas, sesuai \includegraphicsdari graphicx .

Untuk memberikan gambaran bagaimana perbandingannya dengan PDFcrop, saya punya alasan untuk memotong PDF yang cukup mewah baru-baru ini. Dokumen asli saya adalah 675 kB, versi yang saya pangkas melalui PDF adalah 1.2 MB, sedangkan versi yang dipangkas melalui PDFcrop adalah 4.5 MB. Sementara PDFjam dan PDFcrop menghapus hyperlink dan bookmark yang disematkan, PDFjam dengan --keepinfoopsi mempertahankan properti dokumen (misalnya judul, penulis, subjek).

Alex Ball
sumber
1
Catatan: ini tidak benar-benar menghapus konten yang menjadi off-screen dari PDF, hanya menyembunyikannya. Sama seperti apa komentar @init_js pada jawaban teratas.
Jan Żankowski
3

Ini dapat membantu Anda.
Ini sesuai dengan versi Ubuntu yang lebih baru dan masa pakai. Ini adalah Master PDF Editor . Anda dapat menggunakannya memotong, menambahkan beberapa hal, dll.

Contoh:
Ini sebelum Ini sebelumnya Ini adalah setelah ctrl + k masukkan deskripsi gambar di sini

Shamina
sumber
3

Briss bukan baris perintah, tetapi patut untuk dilihat.

weberjn
sumber
2

Anda dapat menggunakan skrip pypdf dari halaman ini . Namun dalam jawaban untuk pertanyaan stackexchange ini , tampaknya ada banyak pilihan juga.

xubuntix
sumber
Saya tidak bisa mendapatkan apa parameter kiri bawah kanan atas. apakah itu titik, inci, sentimeter?
Rakesh
@Rakesh: Lihat jawaban saya untuk penjelasan tentang parameter dan cara menentukannya dengan mudah.
bluenote10
2

Program pdfCropMargins adalah aplikasi baris perintah untuk secara otomatis memotong margin file PDF.

Program ini tergantung pada program Ghostscript atau program pdftoppm yang diinstal (dan dapat dilacak) pada sistem. Dan menganalisis gambar halaman dengan PIL untuk menemukan kotak pembatas, menggunakan ambang batas 191.

instal menggunakan

pip instal pdfCropMargins

Jalankan menggunakan

pdf-crop-margin -v -s -u file-Anda.pdf

Untuk bantuan

pdf-crop-margin -h | lebih

CharmiChokshi
sumber