Công cụ dòng lệnh để cắt tập tin PDF


101

Tôi đang tìm kiếm một công cụ dòng lệnh mã nguồn mở để cắt tệp PDF giống như chúng ta có thể làm trong Adobe Acrobat Pro. Tôi đã thử PdfTk, ImageMagick, PyPDF và GhostScript, tất cả đều không thành công cho đến nay.


Bạn có thể vui lòng mô tả loại cắt xén nào bạn có thể làm với Adobe Acrobat pro không? Bởi vì tôi không có nó và do đó không thể nói những gì bạn đang tìm kiếm.
xubuntix

Trong Adobe Acrobat Pro, chúng ta có thể sử dụng các điều khiển lề để cắt PDF. chúng tôi có thể cung cấp giá trị cho đỉnh, đáy, phải và trái để cắt
Rakesh

Câu trả lời:


124

Tôi sẽ đề nghị bạn hãy xem PDFcrop .

Nếu bạn muốn cắt pdf với các lề trái, trên, phải và dưới là 5, 10, 20 và 30 pt (điểm), thì hãy chạy

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

trong thiết bị đầu cuối. Để thực sự cắt một cái gì đó đi, sử dụng các giá trị âm trong đối số cho crop. Ví dụ,

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

trồng 50 điểm từ trái, trên, phải, dưới (theo thứ tự này).

Nếu bạn chỉ chạy lệnh pdfcrop input, nó sẽ xuất ra một tệp có tiêu đề input-crop.pdf với lề không. Tôi thấy điều này rất tiện dụng khi bao gồm các minh họa pdf trong tài liệu.

Cắt nhiều tập tin

Thật không may, pdfcrop không thể cắt nhiều tệp tại thời điểm đó. Tuy nhiên, thật dễ dàng để viết một tập lệnh sẽ cắt tất cả các tệp pdf trong thư mục mà tập lệnh được đặt.

Tạo một tập tin trống mới và gọi nó something.sh. Mở nó bằng một trình soạn thảo văn bản và chèn như sau:

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

Lưu nó, và đóng lại. Sau đó nhấp chuột phải vào tệp, đi đến Thuộc tính> Quyền và kiểm tra trường Cho phép thực thi tệp dưới dạng chương trình . Bây giờ hãy đóng hộp thoại. Chạy tập lệnh bằng cách nhấp đúp vào tập lệnh và chọn Chạy trong Terminal . Và phiên bản mới, không giới hạn của tất cả các tệp pdf có hậu tố -crop giờ sẽ được in trong thư mục. Nếu bạn muốn có lề hoặc những thứ khác, tất nhiên bạn có thể chỉ cần mở tập lệnh và thêm đối số sau pdfcrop.


Lưu ý rằng thay vì chỉ định tỷ lệ lợi nhuận âm, người ta cũng có thể sử dụng --bbox "<left> <bottom> <right> <top>". Điều này cho phép sử dụng phương pháp để xác định vùng trồng trọt được mô tả trong câu trả lời của tôi dưới đây .
bluenote10 ngày

Có khả năng cho biết số trang (cần được cắt)?
LK

Tôi sợ đó là tất cả hoặc không có gì. pdfcrop --helpliệt kê các tùy chọn có sẵn. Tôi không thể thấy bất cứ điều gì ở đó sẽ cho phép chỉ định một loạt các trang.
Rasmus

7
So sánh kích thước đầu ra của PDFCrop với đầu vào của nó, có vẻ như pdfcrop chỉ sửa đổi các hộp giới hạn. Nó không xóa dữ liệu. Vì vậy, cách tiếp cận này sẽ không phù hợp để làm cho pdf nhỏ hơn hoặc ẩn thông tin.
init_js

Giống như một sự quyến rũ! ngay cả với lề pdf cần thiết!
jojo

36

Cảm ơn Rasmus, bạn có thể cài đặt pdfcrop từ gói texlive-Extra-utils:

sudo apt-get install texlive-extra-utils

Sau đó cắt tập tin pdf bằng lệnh crop pdf như:

pdfcrop input.pdf output.pdf

sử dụng --helpđể xem các thông số tuyệt vời hơn như--margins

pdfcrop --margins 5 input.pdf output.pdf

Cắt pdf với 5 bp từ mỗi bên của trang


1
Các phép đo là bp, hơi khác với pt. Xem tex.stackexchange.com/questions/8260/ .
koppor

2
Đối với tôi pdfcrop làm tăng kích thước tệp từ 300x (từ 7MB đến 2GB). Tôi đã phải làm gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdfsau đó, mà đã sửa kích thước tập tin.
fiktor

17

Bạn cũng có thể cắt các tệp PDF chỉ bằng cách sử dụng Ghostscript. Tôi đã viết một kịch bản nhỏ để đơn giản hóa quá trình (lấy cảm hứng từ câu trả lời này ):

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

Để xác định tọa độ cho việc cắt xén, tôi sử dụng gv, nó in tọa độ của con trỏ chuột bằng cách sử dụng cùng đơn vị với Ghostscript. Ví dụ: ở đây tôi xác định tọa độ tối thiểu cho x / y (các giá trị ở góc trên bên trái):

vụ mùa1

Bây giờ tọa độ tối đa:

vụ 2

Và cuối cùng, tôi chạy kịch bản pdf_crop_by_coordinates.sh test.pdf 45 429 38 419sản xuất một test_cropped.pdfcái giống như thế:

kết quả

Mặc dù vậy, tôi không biết giải pháp Ghostscript so sánh như thế nào pdfcropvề chất lượng và tính chính xác.


15

Khi tôi không thể làm gì với pdftk, nơi tiếp theo tôi bật là PDFjam , đây là trình bao bọc dòng lệnh cho gói LaTeX pdf (do đó bạn cũng cần cài đặt và bản phân phối TeX). Để được trợ giúp về cách sử dụng, tôi khuyên dùng màn hình trợ giúp thường xuyên:

pdfjam --help

vì trang man rất thưa thớt và trang Web tập trung vào các ví dụ.

Để cắt PDF, lệnh bạn cần là như thế này:

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

Điều này sẽ xuất ra một tập tin gọi là input-cropped.pdf. Thứ tự của các chi tiết trang trí nên được trái, dưới, phải, trên, theo \includegraphicstừ graphicx .

Để đưa ra ý tưởng về cách so sánh với PDFcrop, tôi đã gây ra một bản PDF khá lạ mắt gần đây. Bản gốc của tôi là 675 kB, phiên bản cắt của tôi qua PDFjam là 1,2 MB, trong khi phiên bản được cắt qua PDFcrop là 4,5 MB. Mặc dù cả PDFjam và PDFcrop đều loại bỏ các siêu liên kết và dấu trang được nhúng, PDFjam với --keepinfotùy chọn giữ nguyên các thuộc tính tài liệu (ví dụ: tiêu đề, tác giả, chủ đề).


1
Lưu ý: điều này không thực sự xóa nội dung ngoài màn hình khỏi PDF, chỉ ẩn nội dung đó. Giống như những gì @init_js nhận xét trong câu trả lời được ghi điểm cao nhất.
Jan Żankowski


3

Điều này có thể giúp bạn.
Điều này phù hợp với phiên bản mới hơn của Ubuntu và cuộc sống. Đây là Master PDF Editor . Bạn có thể sử dụng nó crop, thêm một số thứ, vv

Ví dụ:
Đây là trước Đây là trước Đây là sau ctrl + k nhập mô tả hình ảnh ở đây




2

Các pdfCropMargins chương trình là một ứng dụng dòng lệnh để tự động cắt bên lề của tập tin PDF.

Chương trình này phụ thuộc vào chương trình Ghostscript hoặc chương trình pdftoppm đang được cài đặt (và định vị) trên hệ thống. Và phân tích hình ảnh trang bằng PIL để tìm các hộp giới hạn, sử dụng ngưỡng 191.

cài đặt bằng

Pip cài đặt pdfCropMargins

Chạy bằng cách sử dụng

pdf-crop-lề -v -s -u your-file.pdf

Để được giúp đỡ

pdf-crop-lề -h | hơn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.