Bagaimana cara menggabungkan beberapa file PDF?


Jawaban:


209

PDF-Shuffler Instal PDF-Shuffler

Jika Anda menginginkan alat dengan GUI sederhana, coba pdfshuffler . Hal ini memungkinkan penggabungan PDF serta menata ulang dan menghapus halaman. Untuk pemrosesan batch dan / atau tugas yang lebih rumit, pdftk tentu saja lebih kuat.

Cuplikan layar PDF-Shuffler


Saya mencoba ini - itu tidak berhasil pada 10,04
David Oneill

Pada 12.04, pdfshuffler selalu mengeluh bahwa ada "terlalu banyak nilai untuk dibuka", membuatnya tidak dapat digunakan.
despens

8
Menginstal dan bekerja seperti pesona pada 14.04. Terima kasih banyak !!
Zlatty

1
Saya juga dapat mengkonfirmasi pdfshufflerberfungsi dengan baik pada 14,04 amd64.
conualfy

2
Juga berfungsi dengan baik pada 16.04.1
Sanjay Manohar

334

pdftkInstal pdftk

Untuk menggabungkan dua file pdf, file1.pdfdan file2.pdf:

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

Info lebih lanjut tersedia di sini Way Back Machine .


5
pdftk buggy - bugs.launchpad.net/ubuntu/+source/pdftk/+bug/779908 . gs mungkin lambat, tetapi bekerja dengan sempurna [Jawaban IgnitE]
Pushpak Dagade

@PushpakDagade ghostscript mengacaukan anotasi, terutama komentar yang telah diperiksa (kotak centang ditandai dengan tanda centang), tidak akan lagi memiliki tanda centang ini. Saya tidak mengetahui cara untuk mengatasi ini. Juga, jika Anda menggabungkan PDF v1.5 + 1.6, output akan menjadi 1.4 secara default. Itu perilaku yang aneh.
Jonathan Komar

2
pdftk memiliki penggunaan yang tidak biasa di mana perintah catdan outputikuti argumen input variadic dan diikuti oleh argumen output.
Jeff Puckett

3
Paket ini tampaknya telah dihapus pada 2018.04.
Nicolas Raoul

1
@NicolasRaoul Saya baru saja mengunduhnya sebagai instal cepat.
Maks

161

Ghostscript adalah paket (tersedia secara default di Ubuntu) yang memungkinkan Anda untuk melihat atau mencetak file PostScript dan PDF ke format lain, atau untuk mengonversi file-file tersebut ke format lain.
Untuk menggunakan Ghostscript untuk menggabungkan file PDF, ketikkan sesuatu seperti berikut ini:

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

Berikut ini penjelasan singkat dari perintah tersebut:

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.

File input Anda bahkan tidak perlu file PDF. Anda juga dapat menggunakan file PostScript atau EPS, atau campuran ketiganya.

Ada banyak hal yang dapat Anda lakukan dengan Ghostscript. Anda dapat membaca dokumentasinya untuk lebih jelasnya.

Sumber


2
Benar, tapi ini sangat lambat. Saya baru saja mencoba menyatukan 45 x 400K, satu halaman PDF. pdftkmengambil 0m0.484s, gsmengambil 1m32.898s (itu hampir 200x lebih lambat) File dari gssekitar 21% lebih kecil.
Aidan

2
perintah ini juga berfungsi jika Anda menggunakan wildcard untuk daftar file yang akan digabungkan. misalnya, ganti file1.pdf file2.pdfdenganfile*.pdf
Antonios Hadjigeorgalis

2
Bagi saya gsbekerja dengan beberapa PDF "tidak sesuai" di mana pdftkhanya akan berjalan selamanya.
ntc2

1
Gunakan -dPDFSETTINGS=/prepressopsi dari peningkatan kualitas. Semua berkat berkat kontributor
Mohnish

6
@AntoniosHadjigeorgalis Hanya untuk referensi dan pemahaman yang baik: itu bukan perintah yang mendukung wildcard, itu sebenarnya shell yang menggantikan file*.pdfdengan file1.pdf file2.pdfsebelum meneruskan argumen ke perintah.
Midgard

82

Anda juga menggunakan pdfunite untuk menggabungkan dokumen pdf:

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

12
PERINGATAN: File yang ada out.pdfakan ditimpa tanpa peringatan, jadi pdfunite *.pdftidak akan berfungsi seperti yang diharapkan.
krlmlr

1
@ krlmlr Anda selalu dapat memasukkan output ke direktori lain.
BЈовић

Cukup adil, cpjuga menimpa argumen terakhir tanpa peringatan. Ini hanya untuk pengguna yang terburu-buru (seperti saya) - Saya beruntung memiliki cadangan file yang dimaksud ...
krlmlr

1
Upvote: Ini adalah alat baris perintah sederhana tanpa GUI klik-dan-air liur seperti banyak jawaban lain di sini. Ini dengan baik merangkum kompleksitas dari solusi GhostScript (sebagian besar setara).
tripleee

1
Ini juga sangat cepat. Melakukan pekerjaan dengan baik. Pada server yang sangat lambat (aws t1.micro), gs membutuhkan 9 detik, pdftk membutuhkan 4 detik dan pdfunite ini membutuhkan 0,9 detik untuk menggabungkan dua file!
rsmoorthy

34

Rantai PDF Instal Rantai PDF

Solusi yang sangat bagus adalah PDFChain. Ini GUI adalah tampilan depan PDFTK di mana Anda dapat menggabungkan, membagi atau bahkan menambahkan beberapa latar belakang ke file PDF Anda.


Ini jawaban terbaik. Ini berfungsi dengan baik, terlepas dari versi Ubuntu.
Paulo Coghi

Bekerja di Ubuntu 14.04 tanpa repot!
akun

Berfungsi bagus di Ubuntu 18.04!
orschiro


@ user2413 itu snap store, bukan satu-satunya sumber untuk perangkat lunak di Ubuntu. Mencoba mencari apttidak memberi hasil apa pun: /
jena


8

Pendekatan alternatif adalah dengan menggunakan Lateks seperti yang dijelaskan dalam posting ini ( tanpa akses root dengan asumsi Anda telah menginstal pdflatex ): https://tex.stackexchange.com/questions/8662/merge-two-pdf-files-output-by- getah

Ini berguna jika Anda tidak memiliki alat yang disebutkan atau hak root, tetapi Anda memiliki pdflatex.

Saya menyalin kode tex di bawah ini untuk bergabung file1.pdfdan file2.pdf. Buat file yang dipanggil output.texdan masukkan:

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

Dan untuk mengkompilasi, cukup gunakan: pdflatex output.tex

File yang digabungkan akan dinamai sebagai output.pdf.


6

Saya menggunakan pdfseparate untuk mengekstrak halaman tertentu dari file pdf besar:

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

dan aftewards saya bergabung dengan mereka semua melalui perintah:

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

Ini bergabung:

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

ke:

out2014-12-14_23_25_36.pdf

Mungkin ada cara yang lebih mudah untuk mengatasinya ... :-)


Substitusi proses tidak berguna dan bahkan berpotensi berbahaya . Baris perintah yang benar jauh lebih sederhana adalah pdfunite output_*.pdf out$(date +%Y-%m-%d-%H_%M_%S).pdftetapi tidak memiliki urutan ls -v. Perbaikan yang jelas dan sepele adalah memberi nama file Anda sehingga mereka secara alami mengurutkan dalam urutan yang ingin Anda sertakan. Jika Anda benar-benar ingin ls -v, Anda setidaknya bisa kehilangan pipa tr, yang tidak menghasilkan apa-apa di sini.
tripleee




1

Inilah pendekatan saya:

  • Saya ingin mudah diakses sehingga saya membuat pintasan klik kanan di Nautilus (lihat https://help.ubuntu.com/community/NautilusScriptsHowto )
  • Saya ingin ini sangat cepat jadi saya menggunakan pdfunite
  • pdfunite hanya menerima filepath di tengah-tengah perintah jadi saya harus menggaruk kepala untuk mengelola spasi di filepath. Jadi saya mengambil asumsi bahwa semua filepath akan dimulai dengan "/ home /" dan diakhiri dengan ".pdf"

Inilah hasilnya:

#!/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'

Cukup tempel skrip ini di

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

dan beri nama "merge_pdfs.sh" (misalnya). Kemudian buat itu dapat dieksekusi (klik kanan pada merge_pdfs.sh -> tab Izin -> centang "Izinkan mengeksekusi file sebagai program"

Jadi sekarang untuk menggabungkan file pdf, Anda hanya perlu memilihnya -> klik kanan -> skrip -> merge_pdfs.sh dan itu akan membuat file "merged.pdf" di direktori yang sama

Semoga ini bisa membantu!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.