Mac OS X: Cách hợp nhất các tệp pdf trong một thư mục theo tên tệp của chúng


30

Tôi muốn kết hợp vài trăm file pdf trong một thư mục tự động theo tên tập tin của họ.

Ví dụ

Các tập tin 1000.1.pdf 1000.2.pdf 1000.3.pdf 1000.x.pdf nên được hợp nhất thành 1000.pdf

2000.abc.pdf 2000.def.pdf 2000.ghi.pdf 2000.jkl.pdf 2000.5.pdf thành 2000.pdf .

Tôi không muốn sử dụng các giải pháp dựa trên Preview / Automator (nếu có) vì so với phần mềm của bên thứ ba như Adobe Acrobat hoặc PDFpen thường xuyên hợp nhất các tệp pdf (tùy thuộc vào tài liệu nguồn) làm tăng đáng kể kích thước tệp (xem ví dụ Điều gì khiến kích thước tệp PDF tăng khi lưu trong Bản xem trước? )

bạn có bất kì gợi ý nào không? Cảm ơn bạn!


Kết hợp các tệp PDF sẽ luôn tăng kích thước tệp, vấn đề của bạn chính xác là gì?
nohillside

1
@patrix Tôi đang nói về hàng trăm tập tin sẽ được hợp nhất. Như được liên kết ở trên, có thể có sự gia tăng đáng kể về kích thước tệp với các công cụ khác nhau có trong Mac OS X. Tại sao tôi muốn có một tệp văn bản được hợp nhất với kích thước tăng lên đôi khi vài trăm phần trăm ?
lejonet

2
@patrix, lejone8 ​​muốn tự động hợp nhất các tệp PDF nhưng với tỷ lệ 1 + 1 = 2, không phải với 1 + 1 = 5? hoặc nhiều hơn trong kích thước tập tin. Hơn nữa, lejonet8 chỉ ra rõ ràng rằng việc sử dụng các sản phẩm của Apple không được chấp nhận do chúng có hiệu suất kém so với các sản phẩm của bên thứ ba! Tôi không biết lý do tại sao bạn xóa bình luận của tôi, nhưng vì vậy nó được.
Ruskes

1
Tôi không hiểu yêu cầu Tự động hóa. Rất đơn giản và nhanh chóng để sắp xếp (sắp xếp) các tệp theo tên, sau đó chọn tất cả trong danh mục mong muốn và thực hiện hợp nhất trong một lần nhấp vào bất kỳ chương trình có sẵn nào như được trả lời ở đây hoặc các chương trình khác. Kích thước tệp kết quả sẽ phụ thuộc vào loại và nội dung của tệp PDF, do đó, 1 + 1 = 2 là không thể. Lejonet8 dường như bị treo trên lý do tại sao các chương trình của Apple tạo ra các tệp pdf lớn hơn các tệp khác. Chúc may mắn khi trả lời rằng.
Ruskes

2
Bạn có thể vui lòng chỉnh sửa câu hỏi để mô tả chi tiết hơn "tự động" nghĩa là gì đối với bạn (dường như nó có nghĩa là những điều khác nhau đối với những người đã dành thời gian để đề xuất giải pháp cho vấn đề của bạn)? Điều gì sẽ kích hoạt việc hợp nhất các tài liệu? Những mẫu nào nên được sử dụng để tìm tập tin phù hợp? Đặc biệt câu trả lời của DW có vẻ rất tự động ngay từ cái nhìn đầu tiên nhưng có thể có nhiều câu hỏi đằng sau câu hỏi của bạn hơn chúng ta biết ngay bây giờ.
nohillside

Câu trả lời:


25

Hãy thử pdftk . Đây là phần mềm dòng lệnh có thể tham gia các tệp PDF (và cũng thực hiện nhiều nội dung khác, nhưng điều đó không liên quan ở đây). Bạn có thể tải nó từ trang web pdftk chính thức .

Cú pháp mẫu:

pdftk old1.pdf old2.pdf old3.pdf cat output new.pdf

sẽ tạo ra các tập tin new.pdfcó chứa các nối các tập tin old1.pdf, old2.pdf, old3.pdf.

Để giải quyết vấn đề của bạn, với tên tệp ví dụ của bạn:

pdftk 1000.*.pdf cat 1000.pdf
pdftk 2000.*.pdf cat 2000.pdf

vân vân Bạn có thể sử dụng kịch bản lệnh shell để thực hiện điều này hoàn toàn tự động nếu muốn (nhưng bạn sẽ phải dành một ít thời gian cho việc học cách viết kịch bản shell).


Giả sử tất cả các tệp được đặt tên 1000.x, 2000.x, v.v., một tập lệnh shell có thể trông giống như thế này

#!/bin/bash

for n in {1..9}; do
    if [[ -r ${n}000.1.pdf ]]; then
        rm -f ${n}000.pdf
        pdftk ${n}000.*.pdf cat ${n}000.pdf && mv ${n}000.*.pdf ~/.Trash/
    fi
done

Cảm ơn bạn đã nhận xét của bạn, nhưng tôi không thấy đâu là quy trình công việc cho nhu cầu của tôi (hàng trăm tệp có tên tương tự, được hợp nhất theo các tên này).
lejonet

1
@ lejonet8, đó chính xác là nơi các công cụ dòng lệnh tỏa sáng! Tôi đã chỉnh sửa câu trả lời của mình để cho bạn một ví dụ về cách thực hiện điều đó. Làm việc chi tiết hơn có lẽ nằm ngoài phạm vi của câu hỏi này, và liên quan nhiều hơn đến cách viết kịch bản shell.
DW

Cảm ơn bạn vì câu trả lời. Thật không may khi chạy nó trên các tệp của tôi, nó đã dẫn đến thông báo lỗi này: Lỗi: Văn bản không mong muốn trong phạm vi trang kết thúc, tại đây: 1000.pdf
lejonet

1
@ lejonet8 Có lẽ bạn có thể giải thích các yêu cầu tự động hóa của mình hơn một chút trong câu hỏi . Bạn đang tìm kiếm những thứ như "Hành động thư mục" hay như vậy? Điều gì sẽ kích hoạt quá trình nối ở nơi đầu tiên?
nohillside

3
@ lejonet8, Bạn có thể phải thử nghiệm một chút để xem cách làm cho pdftk hoạt động cho bạn. Một thông báo lỗi, không có ngữ cảnh, rất tiếc là không đủ để tôi chẩn đoán vấn đề. Hãy thử nối một số cặp tệp. Thí nghiệm. Xem nếu bạn có thể chẩn đoán khi pdftk không / không hoạt động và nguyên nhân. Đọc hướng dẫn. Sau đó, đăng câu hỏi về cách làm cho pdftk hoạt động trên trang web Stack Exchange phù hợp hoặc trang web hỏi và trả lời khác. FWIW, pdftk rất đáng tin cậy đối với tôi, làm việc với nhiều tệp pdf được tạo bởi nhiều chương trình khác nhau. Tất nhiên kinh nghiệm của bạn có thể thay đổi.
DW

52

Có một tập lệnh Python ẩn trong Automator.app tham gia các tệp .PDF

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --help
Usage: join [--output <file>] [--shuffle] [--verbose]

Ví dụ sử dụng:

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf

2
Cảm ơn bạn vì câu trả lời. Tôi không thể nhận xét về nền tảng kỹ thuật (có thể có sự khác biệt trong việc hợp nhất trong Trình tự động và Xem trước). Tùy thuộc vào các tệp nguồn, có thể có sự gia tăng đáng kể về kích thước tệp. Tôi vừa thử lại lần nữa và bốn tệp có kích thước tổng cộng 12 mb khi được nối với tài liệu 32 mb. Điều này là không thể chấp nhận được.
lejonet

Xin lỗi, không thể giúp với điều đó.
akuhn

4
Tôi đã thêm lệnh này dưới dạng bí danh trong ~/.bash_profiletệp của mình như thế này: alias catpdf="/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf"vì vậy tôi có thể chỉ cần cdvào một thư mục chứa tệp PDF và chạy catpdf.
Stewart Macdonald

2
Nâng cấp để sử dụng khéo léo tập lệnh Python ẩn trong APP! Tôi quyết định sử dụng pdftk mặc dù cho giải pháp mạnh mẽ hơn.
Blairg23

1
@lejonet Nền tảng kỹ thuật là cả hai đều sử dụng cùng một khung (Quartz.CoreGraphics vào ngày 10.11), như bạn đoán. Điều này có thể được nhìn thấy từ các dòng đầu tiên của tập lệnh `tham gia '(nhập câu lệnh).
hans_meine

8

Bạn có thể sử dụng pdfunitephân phối với poppler. Bạn có thể cài đặt popplervới Homebrew:

brew install poppler

Và bây giờ sử dụng nó:

pdfunite input1.pdf input2.pdf input3.pdf output.pdf

popplercũng đi kèm với các lệnh khác: pdfdetach, pdffonts, pdfimages, pdfinfo, pdfseparate, pdftocairo, pdftohtml, pdftoppm, pdftops, pdftotext, ngoài pdfunite.


0

pdftk không hoạt động nữa trên El Capitan! (HĐH X.10.10)

Một thay thế là pagemaster từ PDFTron . Cú pháp sẽ là:

pagemaster -m *.pdf -o output.pdf

Nó không có vấn đề tăng kích thước tệp của giải pháp Automator ở trên, vì nó sử dụng thư viện PDF tùy chỉnh.

Lưu ý: đây không phải là một công cụ miễn phí. Phiên bản demo thêm một hình mờ mỏng trên mỗi trang.

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.