Làm cách nào để trích xuất và / hoặc xóa trang cuối cùng của một loạt các tệp PDF?


14

Một trong những nhà cung cấp của chúng tôi bắt đầu xử lý một hình ảnh khổng lồ không cần thiết đến trang PDF cuối cùng mà chúng tôi nhận được từ họ. Tôi cần phải cắt nó ra. Tuy nhiên, chúng tôi có hàng trăm trong số này, vì vậy không nên vào bằng tay. Cách tốt nhất để trích xuất và sau đó xóa (Tốt nhất là cách đầu tiên, sau đó là cách khác; Tôi vẫn cần xác nhận qua tệp tin rằng tôi không xóa một trang không có hình ảnh) trang cuối cùng của PDF? HĐH là Linux.

Tôi có thể trích xuất nó bằng ghostscript, với một vài thứ khác gs -dFirstPage=5 -dLastPage=5, nhưng tôi cần tự động hóa cái này, tôi không thể đi qua và tự tìm hiểu số trang cuối cùng là gì.

Có ý kiến ​​gì không?

Chỉnh sửa: Để làm rõ, tôi chỉ muốn tách ra / xóa trang cuối cùng. Không phải hình ảnh trong đó, đặc biệt là giai đoạn trang cuối cùng.


1
Nhìn vào pdftk- Tôi khẳng định nó có thể được thực hiện để làm việc chung cho loại nhiệm vụ này.
Daniel Andersson


2
Không từ xa một bản sao đó.
Andrew

Tôi cảm thấy như tôi nên làm rõ mặc dù: Tôi không quan tâm đến việc xóa một hình ảnh trên trang cuối cùng. Tôi quan tâm đến việc xóa trang cuối cùng, giai đoạn.
Andrew

1
Câu hỏi liên quan với nhiều câu trả lời khác nhau trên Hỏi Ubuntu: askubfox.com/questions/221962/ cấp
TuringTux

Câu trả lời:


2

Như @Daniel Andersson đã nhận xét, điều này có thể dễ dàng thực hiện với pdftk:

pdftk input.pdf cat end-1 output temp.pdf
pdftk temp.pdf  cat end-2 output output.pdf
rm temp.pdf

Tôi không biết nếu nó có thể được thực hiện với một cuộc gọi đến pdftk mặc dù ...

Chỉnh sửa : bạn có thể kết hợp nó với câu trả lời của thanosk và sử dụng (trong bash):

pdftk input.pdf cat 1-$((last-1)) output output.pdf

khi bạn đã trích xuất trang cuối cùng vào biến $last.


Ví dụ không hoạt động. Tìm thấy câu trả lời của @Sid Steward để làm việc tốt hơn.
Đọc

14

Để tiếp tục cải thiện câu trả lời của @ Elder, pdftk phiên bản 1.45 trở lên có các phương tiện để tham chiếu các trang theo thứ tự ngược lại bằng cách thêm chữ cái viết thường r vào số trang. Trang cuối cùng trong PDF là r1, trang tiếp theo là r2, v.v.

Ví dụ: cuộc gọi pdftk duy nhất:

pdftk input.pdf cat 1-r2 output output.pdf

sẽ bỏ trang cuối cùng từ input.pdf - đầu vào phải dài ít nhất hai trang.

Để chỉ trích xuất trang cuối cùng của tệp PDF để kiểm tra kích thước tệp của nó, hãy chạy:

pdftk input.pdf cat r1 output final_page.pdf

Pdftk có sẵn trên Linux. Nhiều distro có một nhị phân bạn có thể cài đặt. Tuy nhiên, bạn nên chắc chắn rằng đó là phiên bản 1.45 trở lên. Nếu không, bạn có thể xây dựng pdftk từ mã nguồn.


điều rN chính xác là những gì tôi cần, bởi vì hệ thống tạo pdf dựa trên latex của tôi luôn tạo ra một số trang trống ở đầu và gần cuối tài liệu, tôi phải xóa chúng ở cuối. Bây giờ tôi chỉ cần gọi: pdftk A = Pocket20.pdf cat A3-r6 r3-end output_to_print.pdf loại bỏ hai trang đầu tiên và thứ 4, thứ 5 cuối cùng.
Martin T.

1

pdfinfo sẽ cung cấp cho bạn kích thước của tệp pdf thực tế và pdfimages sẽ cung cấp cho bạn một chỉ mục của các hình ảnh trong tệp pdf đã nói. Vì vậy, bạn có thể viết một kịch bản trong mẫu

#!/bin/bash
for i in *.pdf
do
        j=$(pdfinfo "$i" |awk '/^Pages/ { print $2}')
        pdfimages -list -p -f "$j" "$i"
done

sẽ trả về nếu một tệp cụ thể có hình ảnh ở trang cuối. Nếu có thì bạn có thể làm bất cứ thao tác nào bạn cần làm.


0

Đây là một giải pháp sử dụng pdfjam thay vì pdftk:

#!/bin/sh
fname=`basename $1`
pdfjam $1 1-$((`pdfinfo $1 | grep Pages | grep -shoPe '\d+'` - ${2:-1})) -o ${fname%.*}-trimmed.pdf

Trong đó đối số thứ nhất là tệp cần cắt và đối số thứ hai là số lượng trang cần cắt (mặc định là 1).


0

Một giải pháp lót sẽ được sử dụng findcùng pdftk:

find . -name "*.pdf" -exec pdftk {} cat 1-r2 output cut/{} \;

LƯU Ý : các tệp đã cắt được lưu trữ trong ví dụ này trong thư mục con được gọi cutđể giữ tên tệp gốc vì pdftkkhông cho phép ghi đè các tệp đầu vào.

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.