Có rất nhiều phần mềm trong Windows để hợp nhất các tệp PDF nhưng làm thế nào chúng ta có thể làm điều tương tự trong Ubuntu?
Có rất nhiều phần mềm trong Windows để hợp nhất các tệp PDF nhưng làm thế nào chúng ta có thể làm điều tương tự trong Ubuntu?
Câu trả lời:
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.
pdfshuffler
hoạt động tốt vào ngày 14.04 amd64.
Để hợp nhất hai tệp pdf file1.pdf
và file2.pdf
:
pdftk file1.pdf file2.pdf cat output mergedfile.pdf
Thêm thông tin có sẵn ở đây Way Back Machine .
cat
và output
tuân theo các đối số đầu vào có biến đổi và tiếp theo là một đối số đầu ra.
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.
pdftk
mất 0m0.484s, gs
mất 1m32.898 (chậm hơn gần 200 lần) Tuy nhiên, tệp từ gs
nhỏ hơn khoảng 21%.
file1.pdf file2.pdf
bằngfile*.pdf
gs
đã làm việc với một số tệp PDF "không phù hợp", nơi pdftk
sẽ chạy mãi mãi.
file*.pdf
với file1.pdf file2.pdf
trước khi đi qua các đối số lệnh.
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
out.pdf
sẽ bị ghi đè mà không có cảnh báo, vì vậy pdfunite *.pdf
sẽ không hoạt động như mong đợi.
cp
cũ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 ...
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.
apt
cũng không cho kết quả nào: /
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.pdf
và file2.pdf
. Tạo một tệp được gọi output.tex
và đặ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
.
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ó ... :-)
pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdf
như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.
Sử dụng pdfsam http://www.pdfsam.org/ rất tốt để chia và hợp nhất pdf
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/
Đây là cách tiếp cận của tôi:
Đâ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!