Mac OS X: Cara menggabungkan file pdf dalam direktori sesuai dengan nama file mereka

30

Saya ingin menggabungkan beberapa ratus file pdf dalam direktori secara otomatis sesuai dengan nama file mereka.

Misalnya

File 1000.1.pdf 1000.2.pdf 1000.3.pdf 1000.x.pdf harus digabung menjadi 1000.pdf

dan

2000.abc.pdf 2000.def.pdf 2000.ghi.pdf 2000.jkl.pdf 2000.5.pdf ke dalam 2000.pdf .

Saya tidak ingin menggunakan solusi berdasarkan Preview / Automator (jika tersedia) karena dibandingkan dengan perangkat lunak pihak ketiga seperti Adobe Acrobat atau PDFpen yang sering menggabungkan file pdf (tergantung pada dokumen sumber) menghasilkan peningkatan yang signifikan dalam ukuran file (lihat misalnya Apa yang menyebabkan ukuran file PDF bertambah saat menyimpan di Pratinjau? )

Apakah Anda punya rekomendasi? Terima kasih!

Lejonet
sumber
Menggabungkan PDF akan selalu meningkatkan ukuran file, apa sebenarnya masalah Anda dengan itu?
nohillside
1
@ patrix Saya berbicara tentang ratusan file yang akan digabungkan. Seperti yang ditautkan di atas, mungkin ada peningkatan ukuran file yang signifikan dengan alat-alat berbeda yang disertakan dalam Mac OS X. Mengapa saya harus menginginkan file teks yang digabungkan dengan peningkatan ukuran kadang - kadang beberapa ratus persen ?
lejonet
2
@patrix, lejone8 ​​ingin memiliki penggabungan otomatis file PDF tetapi dengan rasio 1 + 1 = 2, tidak dengan 1 + 1 = 5? atau lebih dalam ukuran file. Lebih lanjut lejonet8 dengan jelas menunjukkan bahwa penggunaan produk Apple tidak dapat diterima karena kinerjanya yang buruk dibandingkan dengan produk pihak ketiga! Saya tidak tahu mengapa Anda menghapus komentar saya, tetapi jadilah itu.
Ruskes
1
Saya tidak mengerti permintaan Otomasi. Sangat mudah dan cepat untuk mengatur (mengurutkan) file berdasarkan nama, lalu pilih semua dalam kategori yang diinginkan, dan lakukan penggabungan dalam sekali klik di salah satu program yang tersedia seperti dijawab di sini, atau yang lain. Ukuran file yang dihasilkan akan tergantung pada jenis dan konten file PDF, sehingga 1 + 1 = 2 tidak dimungkinkan. The lejonet8 tampaknya menutup argumen mengapa program Apple membuat file pdf lebih besar dari yang lain. Semoga berhasil menjawabnya.
Ruskes
2
Bisakah Anda mengedit pertanyaan untuk menjelaskan secara lebih terperinci apa arti "otomatis" bagi Anda (tampaknya hal-hal yang berbeda bagi orang-orang yang meluangkan waktu untuk mengusulkan solusi untuk masalah Anda)? Apa yang harus memicu penggabungan dokumen? Pola mana yang harus digunakan untuk menemukan file yang cocok? Terutama jawaban DW tampaknya sangat otomatis pada pandangan pertama tetapi mungkin ada lebih banyak di belakang pertanyaan Anda daripada yang kita tahu sekarang.
nohillside

Jawaban:

25

Coba pdftk . Ini adalah perangkat lunak baris perintah yang dapat menggabungkan file PDF (dan melakukan banyak hal lain juga, tetapi itu tidak relevan di sini). Anda dapat mengunduhnya dari halaman web pdftk resmi .

Sintaks sampel:

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

akan membuat file new.pdfyang berisi gabungan dari file old1.pdf, old2.pdf, old3.pdf.

Untuk mengatasi masalah Anda, dengan nama file contoh Anda:

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

dan seterusnya. Anda dapat menggunakan skrip shell untuk menjadikan ini sepenuhnya otomatis jika diinginkan (tetapi Anda harus meluangkan sedikit waktu untuk mempelajari sendiri cara menulis skrip shell).


Dengan asumsi semua file diberi nama 1000.x, 2000.x dll. Skrip shell dapat terlihat seperti ini

#!/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
DW
sumber
Terima kasih atas komentar Anda, tetapi saya tidak melihat di mana ada alur kerja untuk kebutuhan saya (ratusan file dengan nama yang mirip, digabung sesuai dengan nama-nama ini).
lejonet
1
@ lejonet8, di situlah alat command-line bersinar! Saya telah mengedit jawaban saya untuk memberi Anda contoh cara melakukannya. Mengerjakan perincian lebih lanjut mungkin di luar ruang lingkup pertanyaan ini, dan lebih terkait dengan cara menulis skrip shell.
DW
Terima kasih atas jawaban Anda. Sayangnya menjalankannya di file saya itu menghasilkan pesan kesalahan ini: Kesalahan: Teks tidak terduga di akhir rentang halaman, di sini: 1000.pdf
lejonet
1
@ lejonet8 Mungkin Anda bisa menguraikan persyaratan otomasi Anda sedikit lebih dalam pertanyaan . Apakah Anda mencari hal-hal seperti "Tindakan Folder" atau semacamnya? Apa yang akan memicu proses penggabungan pada awalnya?
nohillside
3
@ lejonet8, Anda mungkin harus bereksperimen sedikit untuk melihat bagaimana membuat pdftk berfungsi untuk Anda. Satu pesan kesalahan, tanpa konteks, sayangnya tidak cukup bagi saya untuk mendiagnosis masalah. Coba gabungkan beberapa pasang file. Percobaan. Lihat apakah Anda dapat mendiagnosis ketika pdftk tidak / tidak berfungsi dan penyebabnya. Baca tutorialnya. Kemudian, kirim pertanyaan tentang membuat pdftk berfungsi di situs Stack Exchange yang cocok atau situs tanya jawab lainnya. FWIW, pdftk telah sangat andal bagi saya, bekerja dengan berbagai macam file pdf yang dihasilkan oleh banyak program berbeda. Tentu saja pengalaman Anda mungkin berbeda.
DW
52

Ada skrip Python yang tersembunyi di Automator.app yang bergabung dengan file .PDF

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

Contoh penggunaan:

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf
akuhn
sumber
2
Terima kasih atas jawaban Anda. Saya tidak dapat mengomentari latar belakang teknis (mungkin ada perbedaan dalam penggabungan Automator dan Pratinjau). Bergantung pada file sumbernya, ukuran file juga dapat meningkat secara signifikan. Saya baru saja mengujinya lagi dan empat file dengan ukuran 12 mb total di mana bergabung dengan dokumen 32 mb. Ini tidak bisa diterima.
lejonet
Maaf, tidak bisa membantu dengan itu.
akuhn
4
Saya menambahkan perintah ini sebagai alias di ~/.bash_profilefile saya seperti ini: alias catpdf="/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf"jadi saya bisa cdmasuk ke direktori yang berisi PDF dan jalankan catpdf.
Stewart Macdonald
2
Mengunggah karena penggunaan skrip Python yang tersembunyi dalam suatu aplikasi! Saya memutuskan untuk menggunakan pdftk meskipun untuk solusi yang lebih kuat.
Blairg23
1
@lejonet Latar belakang teknis adalah keduanya menggunakan kerangka kerja yang sama (Quartz.CoreGraphics on 10.11), seperti yang Anda duga. Ini bisa dilihat dari baris pertama skrip `join.py '(pernyataan impor).
hans_meine
8

Anda dapat menggunakan pdfunitedidistribusikan dengan poppler. Anda dapat menginstal popplerdengan Homebrew:

brew install poppler

Dan sekarang gunakan:

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

popplerjuga dilengkapi dengan perintah-perintah lainnya: pdfdetach, pdffonts, pdfimages, pdfinfo, pdfseparate, pdftocairo, pdftohtml, pdftoppm, pdftops, pdftotext, selain pdfunite.

Flimm
sumber
0

pdftk tidak berfungsi lagi di El Capitan! (OS X 10.10)

Alternatifnya adalah pagemaster dari PDFTron. Sintaksnya adalah:

pagemaster -m *.pdf -o output.pdf

Itu tidak memiliki masalah peningkatan ukuran file dari solusi Automator di atas, karena menggunakan pustaka PDF khusus.

Catatan: ini bukan alat gratis. Versi demo menambahkan tanda air tipis pada setiap halaman.

antoine
sumber