Trích xuất trang đầu tiên từ nhiều pdf


17

Đã có khoảng 500 tệp PDF để đi qua và trích xuất trang đầu tiên của. Sau đó, họ cần trải qua quá trình chuyển đổi tốn thời gian, vì vậy hy vọng sẽ cố gắng tiết kiệm thời gian bằng cách có một quy trình hàng loạt để trích xuất trang đầu tiên từ 500 pdf và đặt nó vào pdf mới. Đã có một cú chọc quanh Acrobat nhưng không thể tìm thấy phương pháp thực sự nào cho việc này đối với nhiều tệp. Có ai biết bất kỳ chương trình hoặc phương pháp nào khác mà điều này có thể đạt được? Nguồn mở và miễn phí rõ ràng là thuận lợi hơn :)

EDIT: Thực sự đã có một số thành công khi sử dụng GhostScript để trích xuất chỉ một trang. Bây giờ đang xem làm thế nào để bó nó và lấy danh sách các tập tin và sử dụng chúng.


Các bước khác trong quy trình chuyển đổi liên quan gì?
Ignacio Vazquez-Abrams

Về chỉnh sửa của bạn, xem của tôi chỉnh sửa.
frabjous

Câu trả lời:


26

Sử dụng pdftk ...

Trên mac và linux từ dòng lệnh.

for file in *.pdf ; do pdftk "$file" cat 1 output "${file%.pdf}-page1.pdf" ; done

Trên Windows, bạn có thể tạo một tệp bó. Mở Notepad, dán cái này vào trong:

for %%I in (*.pdf) do "pdftk.exe" "%%I" cat 1 output "%%~nI-page1.pdf"

Bạn có thể cần thay thế "pdftk.exe" bằng đường dẫn đầy đủ đến pdftk, ví dụ: "C:\Program Files\pdftk\pdftk.exe hoặc bất cứ điều gì nó là. (Tôi không sử dụng Windows nên tôi không biết.)

Lưu nó với một phần mở rộng kết thúc bằng .bat, thả nó vào thư mục với các tệp PDF và nhấp đúp chuột.

Bạn có thể làm điều tương tự với Ghostscript, vâng.

Hãy xem nào. Đối với Mac và Linux (tất cả một dòng):

for file in *.pdf ; do gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="${file%.pdf}-page1.pdf" -dFirstPage=1 -dLastPage=1 "$file" ; done

Tôi không chắc chắn chính xác lệnh tương ứng sẽ là gì đối với tệp bó Windows. Dự đoán tốt nhất của tôi (- Tôi không có cửa sổ nên tôi không thể kiểm tra--):

for %%I in (*.pdf) do "C:\Program Files\gs\gs9.00\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutPutFile#"%%~nI-page1.pdf" -dFirstPage#1 -dLastPage#1 "%%I"

Kiểm tra kỹ đường dẫn đến tập lệnh ma thực thi của bạn là đúng, và tôi đã không kiểm tra điều này vì tôi không sử dụng Windows.


EDIT: OK, tôi mới nhận ra rằng bạn có thể không muốn 500 tệp PDF 1 trang, nhưng một tệp PDF kết hợp tất cả chúng. Chỉ cần chạy ở trên, và điều đó sẽ để lại cho bạn 500 tệp PDF 1 trang. Để kết hợp chúng bằng pdftk ... trên mac và linux:

pdftk *-page1.pdf cat output combined.pdf

Tôi nghĩ rằng nó có thể giống nhau trên Windows, ngoại trừ có thể cần đường dẫn đầy đủ đến pdftk, như trên. Bạn chỉ có thể thêm dòng đó sau dòng trên trong tệp bó của bạn.

Với Ghostscript ... trên mac và linux:

gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="combined.pdf" *-page1.pdf

Và nó có thể giống nhau trên Windows, ngoại trừ thay thế "gs" ở đầu bằng đường dẫn đầy đủ đến gswin32c.exe, như trên.

Có thể có một cách ghostscript để thực hiện cả hai trong một bước, nhưng tôi quá lười để tìm ra nó ngay bây giờ.

Nếu thứ tự kết hợp chúng là quan trọng, thì chúng ta sẽ cần thêm thông tin.


đó là lệnh tôi đang tìm kiếm đã dành cả buổi chiều để đọc về nếu các vòng lặp trong linux! Lệnh ban đầu của bạn là lệnh chính xác, tức là tôi cần 500 trang pdf. Đã quản lý để có được tất cả các trang đầu tiên trong một pdf nhưng việc chuyển đổi thành excel sau đó làm cho nó không thể quản lý được. Người dùng của tôi có một số yêu cầu bố cục và yêu cầu rất cụ thể gây phẫn nộ nhưng đầy thách thức. cảm ơn sự giúp đỡ của bạn !!
Tim Alexander

2

Hôm nay phải làm điều đó trong Linux. Nó cũng hoạt động cho Mac. Thực hiện lệnh sau từ thiết bị đầu cuối của bạn.

lpr -o page-ranges="1-1" path/to/folder/*.pdf

lpr nộp công việc cho máy in.

Lưu ý cách sử dụng ký tự * trong lệnh. Điều này sẽ chạy lệnh cho tất cả các tệp PDF của bạn trong thư mục.


Như bạn chỉ ra, điều này sẽ gửi công việc đến máy in. Đó không phải là những gì OP đang yêu cầu.
Nick K9

1

Tôi nghĩ rằng bạn có thể sử dụng một máy in ảo pdf, như pdf-forge.

Bạn chỉ cần "in" trang đầu tiên, bây giờ tôi đang dùng mac và không thể thử nhưng tôi khá chắc chắn rằng bạn có thể làm nó nhiều hơn một lần.

Chúc may mắn!!

Trufa


cảm ơn những gợi ý về những điều đó những thứ này đã đưa tôi đến GhostScript, có vẻ như nó có thể làm những gì tôi muốn. Cảm ơn
Tim Alexander

@Tim Alexander, không có vấn đề gì cả !!
Trufa

0

như đối với lệnh tệp bó của windows (.bat) (%% dành cho các biến trong tệp bat)

trích xuất trang đầu tiên của pdf dưới dạng jpg với độ phân giải / kích thước giảm

for %%I in (*.pdf) do "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#jpeg -r20 -sOutputFile#"%%~nI.jpg" -dFirstPage#1 -dLastPage#1 "%%I"

(trong bài viết trên, sOutputFile đã viết sai .. và với đường dẫn hiện tại của bản cài đặt gs x86 tiêu chuẩn)

(cũng nhìn vào Sử dụng Ghostscript để chuyển đổi PDF nhiều trang thành JPG đơn? )


0

Trên Linux

Tôi đã viết dòng lệnh này

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} pdftk {} cat 1 output {}.firstpage.pdf

Nhưng nó thực hiện công việc, tôi đã thử nghiệm nó, nó cũng hoạt động với nhiều cấp độ thư mục bạn có. Chỉ cần chắc chắn rằng bạn chạy nó một gốc của cấu trúc thư mục. Mỗi thư mục sẽ có cho mỗi tệp pdf một pdf có mục đích kết thúc bằng .firstpage.pdf

Bạn cần pdftktree đối với điều này và trên Ubuntu Linux, bạn có thể cài đặt nó với apt:

sudo apt install pdftk tree
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.