Làm cách nào để hợp nhất một số tệp PDF?


Câu trả lời:


209

Trình xáo trộn PDF Cài đặt PDF-Shuffler

Nếu bạn muốn có một công cụ với GUI đơn giản, hãy thử pdfshuffler . Nó cho phép hợp nhất các tệp PDF cũng như sắp xếp lại và xóa các trang. Để xử lý hàng loạt và / hoặc các tác vụ phức tạp hơn, pdftk dĩ nhiên mạnh hơn.

Ảnh chụp màn hình của PDF-Shuffler


Tôi đã thử điều này - nó không hoạt động vào ngày 10.04
David Oneill

Vào ngày 12.04, pdfshuffler luôn phàn nàn rằng có "quá nhiều giá trị để giải nén", khiến nó không thể sử dụng được.
despens

8
Cài đặt và hoạt động như một bùa mê vào ngày 14.04. Cảm ơn nhiều!!
Zlatty

1
Tôi cũng có thể xác nhận pdfshufflerhoạt động tốt vào ngày 14.04 amd64.
conualfy

2
Cũng hoạt động tuyệt vời vào ngày 16.04.1
Sanjay Manohar

334

pdftkCài đặt pdftk

Để hợp nhất hai tệp pdf file1.pdffile2.pdf:

pdftk file1.pdf file2.pdf cat output mergedfile.pdf

Thêm thông tin có sẵn ở đây Way Back Machine .


5
pdftk là lỗi - bug.launchpad.net/ubfox/+source/pdftk/+orms/779908 . gs có thể chậm, nhưng hoạt động hoàn hảo [Câu trả lời của IgnitE]
Pushpak Dagade

@PushpakDagade ghostscript gây rối với các chú thích, đặc biệt là các bình luận đã được kiểm tra (hộp kiểm được đánh dấu bằng dấu kiểm), sẽ không còn dấu kiểm này nữa. Tôi không nhận thức được một cách xung quanh này. Ngoài ra, nếu bạn hợp nhất PDF v1.5 + 1.6, đầu ra sẽ là 1.4 theo mặc định. Đó là hành vi kỳ lạ.
Jonathan Komar

2
pdftk có cách sử dụng khác thường trong đó các lệnh catoutputtuân theo các đối số đầu vào có biến đổi và tiếp theo là một đối số đầu ra.
Jeff Puckett

3
Gói dường như đã bị xóa trong năm 2018.04.
Nicolas Raoul

1
@NicolasRaoul Tôi vừa tải xuống dưới dạng cài đặt nhanh.
Tối đa

161

Ghostscript là một gói (có sẵn theo mặc định trong Ubuntu) cho phép bạn xem hoặc in các tệp PostScript và PDF sang các định dạng khác hoặc để chuyển đổi các tệp đó sang các định dạng khác.
Để sử dụng Ghostscript để kết hợp các tệp PDF, hãy nhập nội dung như sau:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dAutoRotatePages=/None -sOutputFile=finished.pdf  file1.pdf file2.pdf

Dưới đây là một lời giải thích ngắn gọn về lệnh:

gs         starts the Ghostscript program.
-dBATCH    once Ghostscript processes the PDF files, it should exit.
           If you don't include this option, Ghostscript will just keep running.
-dNOPAUSE  forces Ghostscript to process each page without pausing for user interaction.
-q         stops Ghostscript from displaying messages while it works
-sDEVICE=pdfwrite 
           tells Ghostscript to use its built-in PDF writer to process the files.
-sOutputFile=finished.pdf
           tells Ghostscript to save the combined PDF file with the specified name.
-dAutoRotatePages=/None
           Acrobat Distiller parameter AutoRotatePages controls the automatic orientation selection algorithm: For instance: -dAutoRotatePages=/None or /All or /PageByPage.

Các tệp đầu vào của bạn thậm chí không cần phải là các tệp PDF. Bạn cũng có thể sử dụng các tệp PostScript hoặc EPS hoặc bất kỳ hỗn hợp nào trong ba.

Có rất nhiều thứ bạn có thể làm với Ghostscript. Bạn có thể đọc tài liệu của nó để biết thêm chi tiết.

Nguồn


2
Đúng, nhưng nó cực kỳ chậm. Tôi vừa thử ghép 45 x 400K, các tệp PDF một trang. pdftkmất 0m0.484s, gsmất 1m32.898 (chậm hơn gần 200 lần) Tuy nhiên, tệp từ gsnhỏ hơn khoảng 21%.
Aidan

2
lệnh này cũng hoạt động nếu bạn sử dụng ký tự đại diện cho danh sách các tệp được kết hợp. ví dụ: thay thế file1.pdf file2.pdfbằngfile*.pdf
Antonios Hadjigeorgalis

2
Đối với tôi gsđã làm việc với một số tệp PDF "không phù hợp", nơi pdftksẽ chạy mãi mãi.
ntc2

1
Sử dụng -dPDFSETTINGS=/prepresstùy chọn từ cải tiến chất lượng. Tất cả là nhờ người đóng góp
Mohamel

6
@AntoniosHadjigeorgalis Chỉ cần để tham khảo và hiểu biết tốt: đó không phải là lệnh hỗ trợ ký tự đại diện, đó là thực sự là vỏ thay thế file*.pdfvới file1.pdf file2.pdftrước khi đi qua các đối số lệnh.
Midgard

82

Bạn cũng sử dụng pdfunite để hợp nhất các tài liệu pdf:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf

12
CẢNH BÁO: Một tệp hiện có out.pdfsẽ bị ghi đè mà không có cảnh báo, vì vậy pdfunite *.pdfsẽ không hoạt động như mong đợi.
krlmlr

1
@krlmlr Bạn luôn có thể đặt đầu ra vào một thư mục khác.
Bовић

Đủ công bằng, cpcũng ghi đè lên lập luận cuối cùng mà không cần cảnh báo. Điều này chỉ dành cho những người dùng vội vã (như bản thân tôi) - Tôi thật may mắn vì tôi đã có một bản sao lưu của tập tin được đề cập ...
krlmlr

1
Upvote: Đây là một công cụ dòng lệnh đơn giản không có GUI click-and-drool như nhiều câu trả lời khác ở đây. Nó gói gọn sự phức tạp của giải pháp GhostScript (phần lớn tương đương).
tripleee

1
Điều này cũng rất nhanh. Làm tốt công việc Trên máy chủ rất chậm (aws t1.micro), gs mất 9 giây, pdftk mất 4 giây và pdfunite này mất 0,9 giây để hợp nhất hai tệp!
rsmoorthy

34

Chuỗi PDF Cài đặt chuỗi PDF

Một giải pháp rất hay là PDFChain. GUI của nó là một giao diện của PDFTK nơi bạn có thể hợp nhất, phân tách hoặc thậm chí thêm một số nền vào các tệp PDF của mình.


Đây là câu trả lời tốt nhất. Nó hoạt động hoàn hảo, bất kể phiên bản Ubuntu.
Paulo Coghi

Hoạt động trên Ubuntu 14.04 mà không gặp rắc rối!
của tôi_ram

Hoạt động tuyệt vời trên Ubuntu 18.04!
orschiro


@ user2413 đó là một cửa hàng nhanh, không phải là nguồn duy nhất cho phần mềm trong Ubuntu. Dù vậy, cố gắng tìm kiếm aptcũng không cho kết quả nào: /
jena


8

Một cách tiếp cận khác là sử dụng latex như được giải thích trong bài đăng này ( không có quyền truy cập root giả sử rằng bạn đã cài đặt pdflatex ): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- mủ cao su

Điều này hữu ích trong trường hợp bạn không có các công cụ được đề cập cũng như các đặc quyền gốc, nhưng bạn có pdflatex.

Tôi sao chép mã tex dưới đây để hợp nhất file1.pdffile2.pdf. Tạo một tệp được gọi output.texvà đặt:

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[pages=-]{file1}
\includepdf[pages=-]{file2}
\end{document}

Và để biên dịch, chỉ cần sử dụng: pdflatex output.tex

Các tập tin hợp nhất sẽ được đặt tên là output.pdf.


6

Tôi sử dụng pdfseparate để trích xuất các trang cụ thể từ tệp pdf lớn:

pdfseparate -f  156 -l 157 input.pdf  output_%d.pdf 
pdfseparate -f  1   -l 2   input.pdf  output_%d.pdf 

và sau khi tôi tham gia tất cả chúng thông qua lệnh:

pdfunite $(ls -v output_*.pdf | tr '\n' ' ') out$(date  +%Y-%m-%d_%H_%M_%S ).pdf

Điều này tham gia:

output_1.pdf output_2.pdf output_156.pdf output_157.pdf  

vào:

out2014-12-14_23_25_36.pdf

Có thể có một cách dễ dàng hơn để đối phó ... :-)


Sự thay thế quá trình là không cần thiết và thậm chí có thể gây hại . Một dòng lệnh đơn giản hơn nhiều pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdfnhưng nó thiếu thứ tự ls -v. Một sửa chữa rõ ràng và tầm thường là đặt tên cho các tệp của bạn để chúng tự nhiên sắp xếp theo thứ tự bạn muốn đưa chúng vào. Nếu bạn hoàn toàn muốn ls -v, ít nhất bạn có thể mất đường ống tr, điều này không thực hiện được gì ở đây.
tripleee



4

Bạn có thể sử dụng pdftk để hợp nhất và sửa đổi các tài liệu PDF nói chung. Ngoài ra, có một dịch vụ trực tuyến để làm việc đó: http://www.pdfmerge.com/


1

Đây là cách tiếp cận của tôi:

  • Tôi muốn nó có thể truy cập dễ dàng vì vậy tôi đã tạo một lối tắt nhấp chuột phải trong Nautilus (xem https://help.ubfox.com/community/NautilusScriptsHowto )
  • Tôi muốn nó rất nhanh vì vậy tôi đã sử dụng pdfunite
  • pdfunite chỉ chấp nhận các filepath ở giữa lệnh nên tôi phải gãi đầu để quản lý các khoảng trắng trong filepath. Vì vậy, tôi đã đưa ra giả định rằng tất cả các filepath sẽ bắt đầu bằng "/ home /" và kết thúc bằng ".pdf"

Đây là kết quả:

#!/bin/sh
CLEANED_FILE_PATHS=$(echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's,.pdf /home/,.pdf\\n/home/,g')
echo $CLEANED_FILE_PATHS | bash -c 'IFS=$'"'"'\n'"'"' read -d "" -ra x;pdfunite "${x[@]}" merged.pdf'

Juste dán đoạn script này vào

/home/your_username/.local/share/nautilus/scripts

và đặt tên là "merge_pdfs.sh" (ví dụ). Sau đó làm cho nó có thể thực thi được (nhấp chuột phải vào merge_pdfs.sh -> tab Quyền -> đánh dấu "Cho phép thực thi tệp dưới dạng chương trình"

Vì vậy, bây giờ để hợp nhất các tệp pdf, bạn chỉ cần chọn chúng -> nhấp chuột phải -> script -> merge_pdfs.sh và nó sẽ tạo một tệp "merged.pdf" trong cùng thư mục

Hy vọng nó giúp!

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.