Mac OS X: Bir dizindeki pdf dosyalarını dosya adlarına göre nasıl birleştirirsiniz?


30

Bir dizindeki birkaç yüz pdf dosyasını dosya adlarına göre otomatik olarak birleştirmek istiyorum .

Örneğin

Dosyaları 1000.1.pdf 1000.2.pdf 1000.3.pdf 1000.x.pdf birleştirilecek edilmelidir 1000.pdf

ve

2000.abc.pdf 2000.def.pdf 2000.ghi.pdf 2000.jkl.pdf 2000.5.pdf , 2000.pdf içine .

Önizleme / Otomatör tabanlı çözümleri (istemiyorsa) kullanmak istemiyorum çünkü Adobe Acrobat veya PDFpen gibi üçüncü taraf yazılımlara kıyasla pdf dosyalarını sık sık birleştirmek (kaynak belgelere bağlı olarak) dosya boyutunda önemli bir artışa neden oluyor (bkz. Önizleme'ye kaydederken PDF dosya boyutunun artmasına neden olan nedir? )

Herhangi bir önerin var mı? Teşekkür ederim!


PDF'leri birleştirmek her zaman dosya boyutunu büyütür, bununla tam olarak neyin var?
yokuş yukarı

1
@ patrix Birleştirilecek yüzlerce dosyadan bahsediyorum. Yukarıda bağlantılı olarak , Mac OS X'te yer alan farklı araçlarla dosya boyutunda önemli bir artış olabilir . Neden bazen yüzde yüzlerce boyutunda bir artış ile birleştirilmiş bir metin dosyası istemeliyim ?
lejonet

2
@patrix, lejone8, PDF dosyalarının otomatik olarak birleştirilmesini istiyor, ancak 1 + 1 = 2 oranında, 1 + 1 = 5 ile değil mi? veya daha büyük dosya boyutunda. Ayrıca lejonet8, Apple ürünlerinin kullanımının üçüncü parti ürünlere kıyasla düşük performans nedeniyle kabul edilemez olduğunu açıkça belirtti! Yorumlarımı neden sildiğini bilmiyorum, ama öyle olsun.
Ruskes

1
Otomasyon isteğini anlamıyorum. Dosyaları ada göre sıralamak (sıralamak) çok basit ve hızlı, ardından istenen kategorideki tüm kategorileri seçin ve burada cevaplanan mevcut programlardan herhangi birinde veya başkalarında tıkladığınızda birleştirme işlemini yapın. Ortaya çıkan dosya boyutu PDF dosyalarının türüne ve içeriğine bağlı olacaktır, bu nedenle 1 + 1 = 2 mümkün değildir. Lejonet8, Apple programlarının neden diğerlerinden daha büyük pdf dosyaları oluşturduğunu tartışıyor gibi görünüyor. Buna cevap vermede iyi şanslar.
Ruskes

2
Lütfen "otomatikleştirilmiş" in sizin için ne anlama geldiğini daha ayrıntılı olarak açıklamak için soruyu düzenleyebilir misiniz (sorununuz için çözüm önermek için zaman ayıran insanlar için farklı şeyler ifade ediyor)? Belgelerin birleştirilmesini ne tetiklemeli? Eşleşen dosyaları bulmak için hangi desenler kullanılmalıdır? Özellikle DW'nin cevabı ilk bakışta oldukça otomatik gözüküyor ancak şu an bildiğimizden daha çok sorunuzun arkasında olabilir.
yokuş yukarı

Yanıtlar:


25

Pdftk'yi dene . PDF dosyalarına katılabilen komut satırı yazılımıdır (ve aynı zamanda birçok başka şey de yapabilir, ancak bununla ilgili değildir). Resmi pdftk web sayfasından indirebilirsiniz .

Örnek sözdizimi:

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

dosya oluşturur new.pdfdosyaların birleştirme içeren old1.pdf, old2.pdf, old3.pdf.

Probleminizi çözmek için, örnek dosya isimleriniz:

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

ve bunun gibi. İstenirse bunu tamamen otomatik hale getirmek için kabuk komut dosyasını kullanabilirsiniz (ancak kabuk komut dosyalarını nasıl yazacağınızı öğrenmek için biraz zaman harcamanız gerekir).


Tüm dosyaların 1000.x, 2000.x vs. olarak adlandırıldığını varsayalım. Bir kabuk betiği bu şekilde görünebilir.

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

Yorumunuz için teşekkür ederim, ancak ihtiyaçlarım için bir iş akışının nerede olduğunu görmüyorum (benzer adlara sahip yüzlerce dosya, bu adlara göre birleştirildi).
lejonet

1
@ lejonet8, tam olarak komut satırı araçlarının parladığı yer! Cevabımı, bunun nasıl yapılacağına dair bir örnek vermek için düzenlemiştim. Daha fazla ayrıntı öğrenmek muhtemelen bu sorunun kapsamı dışındadır ve kabuk komut dosyalarının nasıl yazılacağıyla ilgilidir.
DW

Cevabınız için teşekkür ederim. Maalesef dosyalarımda çalıştırırken bu hata iletisine neden oldu: Hata: Sayfa aralığı sonunda beklenmeyen metin: burada: 1000.pdf
lejonet

1
@ lejonet8 Belki de söz konusu olduğunda otomasyon gereksinimlerinizi biraz daha ayrıntılandırabilirsiniz . "Klasör Eylemleri" gibi bir şey mi arıyorsunuz? Birleştirme işlemini ilk önce ne tetiklerdi?
yokuş yukarı

3
@ lejonet8, pdftk'in nasıl çalıştığını görmek için biraz deneme yapmanız gerekebilir. Bağlamsız bir hata mesajı maalesef sorunu teşhis etmem için yeterli değil. Bazı dosya çiftlerini birleştirmeyi deneyin. Deney. Pdftk'nin işe yarayıp yaramadığını ve sebebini teşhis edip edemediğinizi görün. Öğreticiyi oku. Ardından, pdftk'ün uygun bir Stack Exchange sitesinde veya başka bir soru-cevap sitesinde çalışmasıyla ilgili bir soru gönderin. FWIW, pdftk, pek çok farklı program tarafından oluşturulan çok çeşitli pdf dosyalarıyla çalışarak benim için çok güvenilirdi. Tabii ki deneyiminiz değişebilir.
DW

52

Automator.app içinde .PDF-dosyalarına katılan bir Python betiği var

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

Örnek kullanım:

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf

2
Cevabınız için teşekkür ederim. Teknik arkaplan hakkında yorum yapamam (Automator ve Preview'ta birleştirmede bir fark olabilir). Kaynak dosyalara bağlı olarak, dosya boyutunda da önemli bir artış olabilir. Bir kez daha test ettim ve toplamda 12 mb boyutunda ve 32 mb belgeye katılan dört dosya. Bu kabul edilemez.
lejonet

Üzgünüm, buna yardımcı olamam.
akuhn

4
Bu komutu dosyamda şöyle bir takma ad olarak ekledim ~/.bash_profile: alias catpdf="/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf"böylece sadece cdPDF içeren bir dizine girip çalıştırılabilir catpdf.
Stewart Macdonald

2
APP'de gizlenen Python komut dosyasının ustaca kullanılması için hızlandırılması! Daha sağlam bir çözüm için pdftk kullanmaya karar verdim.
Blairg23

1
@lejonet Teknik arka plan hem tahmin ettiğiniz gibi, aynı çerçeveleri (10.11'de Quartz.CoreGraphics) kullanıyor. Bu `join.py 'betiğinin ilk satırlarından (import ifadeleri) görülebilir.
hans_meine

8

İle pdfunitedağıtılmış kullanabilirsiniz poppler. popplerHomebrew ile yükleyebilirsiniz :

brew install poppler

Ve şimdi onu kullan:

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

popplerAyrıca bu komutlarla birlikte gelir: pdfdetach, pdffonts, pdfimages, pdfinfo, pdfseparate, pdftocairo, pdftohtml, pdftoppm, pdftops, pdftotext, ek olarak pdfunite.


0

pdftk artık El Capitan'da çalışmıyor! (OS X 10.10)

Bir alternatif de PDFTron'dan pagemaster. Sözdizimi şöyle olur:

pagemaster -m *.pdf -o output.pdf

Özel bir PDF kitaplığı kullandığından yukarıdaki Automator çözümünün dosya boyutu artırma sorunu yoktur.

Not: Bu ücretsiz bir araç değildir. Demo sürümü, her sayfaya ince bir filigran ekler.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.