pengembangan-web-mp-pd.com

Gabungkan/konversikan banyak PDF file menjadi satu PDF

Bagaimana saya bisa menggabungkan/mengonversi banyak file PDF menjadi satu file PDF besar?

Saya mencoba yang berikut, tetapi konten file target tidak seperti yang diharapkan:

convert file1.pdf file2.pdf merged.pdf

Saya memerlukan solusi baris perintah (CLI) yang sangat sederhana/dasar. Yang terbaik adalah jika saya dapat menyalurkan output dari penggabungan/konversi langsung ke pdf2ps (seperti yang dicoba pada pertanyaan sebelumnya yang saya ajukan di sini: Linux piping (convert -> pdf2ps -> lp) ).

910
alcohol

Maaf, saya berhasil menemukan jawabannya sendiri menggunakan google dan sedikit keberuntungan :)

Bagi mereka yang tertarik;

Saya menginstal pdftk (pdf toolkit) di server debian kami, dan menggunakan perintah berikut ini saya mencapai hasil yang diinginkan:

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

OR

gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=output.pdf file1.pdf file2.pdf file3.pdf ...

Ini pada gilirannya dapat disalurkan langsung ke pdf2ps.

445
alcohol

Menimbang bahwa pdfunite adalah bagian dari poppler yang memiliki peluang lebih tinggi untuk diinstal, penggunaannya juga lebih sederhana daripada pdftk:

pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
1208
Hubert Kario

Coba skrip ghost yang baik:

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -sOutputFile=merged.pdf mine1.pdf mine2.pdf

atau bahkan cara ini untuk versi yang disempurnakan untuk PDF beresolusi rendah (terima kasih kepada Adriano karena menunjukkan ini):

gs -dBATCH -dNOPAUSE -q -sDEVICE=pdfwrite -dPDFSETTINGS=/prepress -sOutputFile=merged.pdf mine1.pdf mine2.pdf

Dalam kedua kasus, resolusi ouput jauh lebih tinggi dan lebih baik daripada cara ini menggunakan convert:

convert -density 300x300 -quality 100 mine1.pdf mine2.pdf merged.pdf

Dengan cara ini Anda tidak perlu menginstal apa pun, hanya bekerja dengan apa yang sudah Anda instal di sistem Anda (setidaknya keduanya datang secara default di rhel saya).

Semoga ini membantu,

PEMBARUAN: pertama-tama terima kasih atas semua komentar Anda yang Baik !! hanya tip yang dapat bekerja untuk kalian, setelah googling, saya menemukan trik luar biasa untuk mengecilkan ukuran PDF, saya menguranginya menjadi satu PDF dari 300 MB menjadi hanya 15 MB dengan resolusi yang dapat diterima! dan semua ini dengan ghostscript yang bagus, ini dia:

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/default -dNOPAUSE -dQUIET -dBATCH -dDetectDuplicateImages -dCompressFonts=true -r150 -sOutputFile=output.pdf input.pdf

tepuk tangan!!

455
Gery

Juga pdfjoin a.pdf b.pdf akan membuat b-joined.pdf baru dengan isi a.pdf dan b.pdf

46
rodrigob

Anda dapat menggunakan perintah convert secara langsung,

misalnya.

convert sub1.pdf sub2.pdf sub3.pdf merged.pdf
35
Noor

Ini adalah solusi termudah jika Anda memiliki banyak file dan tidak ingin mengetikkan nama satu per satu:

qpdf --empty --pages *.pdf -- out.pdf

18
SaTa

pdfunite tidak apa-apa untuk menggabungkan seluruh PDF. Jika Anda ingin, misalnya, halaman 2-7 dari file1.pdf dan halaman 1,3,4 dari file2.pdf, Anda harus menggunakan pdfseparate untuk membagi file menjadi PDF terpisah untuk setiap halaman untuk diberikan ke pdfunite.

Pada titik itu Anda mungkin menginginkan program dengan lebih banyak opsi. qpdf adalah utilitas terbaik yang saya temukan untuk memanipulasi PDF. pdftk lebih besar dan lebih lambat dan Red Hat/Fedora tidak mengemasnya karena ketergantungannya pada gcj. Utilitas PDF lainnya memiliki ketergantungan Mono atau Python. Saya menemukan qpdf menghasilkan file output yang jauh lebih kecil daripada menggunakan pdfseparate dan pdfunite untuk merakit halaman menjadi 30-halaman output PDF, 970kB vs 1.6450 kB. Karena ia menawarkan lebih banyak opsi, qpdf's command line tidak sesederhana; permintaan asli untuk menggabungkan file1 dan file2 dapat dilakukan dengan

qpdf --empty --pages file1.pdf file2.pdf -- merged.pdf
14
skierpage

Apache PDFBox http://pdfbox.Apache.org/

PDFMerger Aplikasi ini akan mengambil daftar dokumen pdf dan menggabungkannya, menyimpan hasilnya dalam dokumen baru.

penggunaan: Java -jar pdfbox-app-x.y.z.jar PDFMerger "Sumber PDF file (2 ..n)" "Target PDF file"

12
lumpchen

Gunakan PDF alat dari python https://pypi.python.org/pypi/pdftools/1.0.6

Unduh file tar.gz dan buka kompres dan jalankan perintah seperti di bawah ini

python pdftools-1.1.0/pdfmerge.py -o output.pdf -d file1.pdf file2.pdf file3 

Anda harus menginstal pyhton3 sebelum Anda menjalankan perintah di atas

Alat ini mendukung hal-hal di bawah ini

  • menambahkan
  • memasukkan
  • Menghapus
  • Memutar
  • Split
  • Menggabungkan
  • Zip

Anda dapat menemukan rincian lebih lanjut di tautan di bawah ini dan ini merupakan open source

https://github.com/MrLeeh/pdftools

Jika Anda ingin mengubah semua gambar yang diunduh menjadi satu pdf kemudian jalankan

convert img{0..19}.jpg slides.pdf

8
Trupti Kini

Anda dapat menggunakan sejda-console , gratis dan open source. Buka zip dan jalankan sejda-console merge -f file1.pdf file2.pdf -o merged.pdf

Ini mempertahankan bookmark, anotasi tautan, acroforms dll. Sebenarnya memiliki cukup banyak opsi yang dapat Anda mainkan, jalankan sejda-console merge -h untuk melihat semuanya.

8
Andrea Vacondio

Saya kedua rekomendasi pdfunite. Namun saya mendapatkan kesalahan Argument list too long ketika saya mencoba untuk menggabungkan file> 2k PDF.

Saya beralih ke Python untuk ini dan dua paket eksternal: PyPDF2 (untuk menangani semua hal yang terkait PDF) dan natsort (untuk melakukan semacam "alami" dari nama file direktori) . Dalam hal ini dapat membantu seseorang:

from PyPDF2 import PdfFileMerger
import natsort
import os

DIR = "dir-with-pdfs/"
OUTPUT = "output.pdf"

file_list = filter(lambda f: f.endswith('.pdf'), os.listdir(DIR))
file_list = natsort.natsorted(file_list)

# 'strict' used because of
# https://github.com/mstamy2/PyPDF2/issues/244#issuecomment-206952235
merger = PdfFileMerger(strict=False)

for f_name in file_list:
  f = open(os.path.join(DIR, f_name), "rb")
  merger.append(f)

output = open(OUTPUT, "wb")
merger.write(output)
5
Greg Sadetsky

Inilah metode yang saya gunakan yang berfungsi dan mudah diterapkan. Ini membutuhkan perpustakaan fpdf dan fpdi yang dapat diunduh di sini:

require('fpdf.php');
require('fpdi.php');

$files = ['doc1.pdf', 'doc2.pdf', 'doc3.pdf'];

$pdf = new FPDI();

foreach ($files as $file) {
    $pdf->setSourceFile($file);
    $tpl = $pdf->importPage(1, '/MediaBox');
    $pdf->addPage();
    $pdf->useTemplate($tpl);
}

$pdf->Output('F','merged.pdf');
4
billynoah

Saya bias menjadi salah satu pengembang PyMuPDF (pengikatan Python MuPDF).

Anda dapat dengan mudah melakukan apa yang Anda inginkan dengannya (dan banyak lagi). Kode kerangka berfungsi seperti ini:

#-------------------------------------------------
import fitz         # the binding PyMuPDF
fout = fitz.open()  # new PDF for joined output
flist = ["1.pdf", "2.pdf", ...]  # list of filenames to be joined

for f in flist:
    fin = fitz.open(f)  # open an input file
    fout.insertPDF(fin) # append f
    fin.close()

fout.save("joined.pdf")
#-------------------------------------------------

Itu saja. Beberapa opsi tersedia untuk memilih hanya rentang halaman, mempertahankan daftar isi bersama, membalik urutan halaman atau mengubah rotasi halaman, dll., Dll.

Kami berada di Pypi.

4
Jorj McKie

Saya suka ide Chasmo, tetapi saya lebih suka menggunakan kelebihan dari hal-hal seperti

convert $(ls *.pdf) ../merged.pdf

Memberikan beberapa file sumber ke convert mengarah untuk menggabungkannya menjadi pdf umum. Perintah ini menggabungkan semua file dengan .pdfextension dalam direktori aktual menjadi merged.pdf dalam dir induk.

3
user3709983

Jawaban lainnya baik, tetapi jika Anda tidak dapat menggabungkan PDF secara lokal, apakah Anda berada di lingkungan hosting bersama, atau karena alasan lain, mereka tidak akan membantu Anda.

Jika Anda mencari API untuk menggabungkan PDF dari jarak jauh, Anda dapat mencoba api2pdf yang memiliki titik akhir untuk menggabungkan pdf bersama. Dokumentasi adalah sini .

0
apexdodge