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.
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.
Câu trả lời:
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
.
--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 .
pdfcrop --help
liệ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.
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
gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS="/ebook" -sOutputFile=output2.pdf output.pdf
sau đó, mà đã sửa kích thước tập tin.
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):
Bây giờ tọa độ tối đa:
Và cuối cùng, tôi chạy kịch bản pdf_crop_by_coordinates.sh test.pdf 45 429 38 419
sản xuất một test_cropped.pdf
cái giống như thế:
Mặc dù vậy, tôi không biết giải pháp Ghostscript so sánh như thế nào pdfcrop
về chất lượng và tính chính xác.
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 \includegraphics
từ 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 --keepinfo
tùy chọn giữ nguyên các thuộc tính tài liệu (ví dụ: tiêu đề, tác giả, chủ đề).
Nếu một công cụ đồ họa cũng tốt, tôi khuyên bạn nên krop
: http://arminstraub.com/software/krop
Đ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
Bạn có thể sử dụng tập lệnh pypdf từ trang này . Nhưng trong câu trả lời cho câu hỏi stackexchange này , dường như cũng có nhiều lựa chọn.
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