İki PDF dosyasını yalnızca içeriğinin yeniden işlenmesi gerekmeden birleştirmek istiyorsanız, pdftk
tam size göre. (Mac OS X'te bu, MacPorts veya Fink aracılığıyla erişilebilir olmalıdır, Linux için, tüm büyük dağıtımlar için yerel paketler vardır; Windows için buraya bakın. ) Şunu deneyin:
pdftk title.pdf content.pdf cat output book.pdf
Bu prepend olacak title.pdf için icerik.pdf ve içine sonucu yazma book.pdf .
pdftk
"Aptal", ancak iki (veya daha fazla) PDF dosyasını birleştirmenin çok hızlı bir yoludur. PDF veri akışını pdftk
herhangi bir şekilde yorumlamadığı sürece, "dilsiz" sadece dahili nesne numaralarının gerektiği gibi yeniden yerleştirildiğinden ve PDF xref
yapısında göründüğünden emin olur (temelde bir tür PDF ToC'sidir) . ) nesneleri.
Ghostscript:
Ghostscript kullanmak istiyorsanız, aynı iki dosyayı birleştirmek için temel komut olacaktır:
gs \
-o book.pdf \
-sDEVICE=pdfwrite \
title.pdf \
content.pdf
Ancak, yaşadığınız gibi, bu basit komut satırı görüntü kalitenizi bozabilir. Bunun nedeni, Ghostscript'in PDF'leri işlerken 'dökümü' olmamasıdır: okurken bunları tamamen yorumlar ve sonucu yazarken tamamen yeni bir dosya oluşturur. Sonuç oluşturmak için, genel işlemdeki birçok ayrıntı için otomatik olarak varsayılan ayarları kullanacaktır. Bu varsayılanlar, aramalarının Ghostscript'e başka şekilde talimat vermediği tüm durumlar için geçerli olacaktır.
Bu yüzden Ghostscript'in yeni kitabı yaratma yöntemi.pdf , yönteminden çok daha "akıllı" (ama aynı zamanda daha yavaş) pdftk
. (Bu aynı zamanda Ghostscript'in çoğu durumda b0rken PDF dosyalarını - sınırlamaları dahilinde - "onarabilmesi" veya giriş PDF'lerine gömülü olmayan çıkış PDF'lerine fontları gömmek veya yinelenen görüntüleri kaldırmak için kullanmasının nedenidir. onları sadece referanslar vb.
Çözüm, Ghostscript'in varsayılanlarını kullanmasına izin vermemektir: komut satırına daha fazla özel parametre ekleyerek.
Bu "Ghostscript'in PDF girişini" yorumlaması " ne demek ?
Elde edilen PDF'yi tekrar PDF nesnelerine dökmeden önce tüm dosya ve içerikleri (nesneler, akışlar, fontlar, görüntüler, ...) okunur, kontrol edilir ve kendi iç gösterimi ile tutulur. Bununla birlikte, 'tükürme' yaparken, Ghostscript mevcut olan yüzlerce parametre [*] için dahili varsayılan ayarlarını uygulayacaktır .
Maalesef bu, görüntülerin bu varsayılan ayarlara göre "yeniden işlenmesini" sağlar - bu yalnızca kendi (istenen) komut satırı parametrelerinizi ekleyerek önlenebilir veya geçersiz kılınabilir.
Görüntü sorunlarınız, Ghostscript'in JPEG2000 görüntülerini JPEG kodlamasına yeniden kodlama ihtiyacından (lisans sorunları nedeniyle) kaynaklanıyor olabilir. Bundan kaçınmak istiyorsanız, komut satırınıza aşağıdakileri ekleyin:
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dColorImageFilter=/FlateEncode \
-dGrayImageFilter=/FlateEncode \
Dahil etmek için göz önünde bulundurulması gereken diğer görselle ilgili komut satırı seçenekleri şunlardır:
-dColorConversionStrategy=/LeaveColorUnchanged \
-dDownsampleMonoImages=false \
-dDownsampleGrayImages=false \
-dDownsampleColorImages=false \
Bu yüzden sizi mutlu edebilecek tam Ghostscript komut satırını okumalısınız:
gs \
-o book.pdf \
-sDEVICE=pdfwrite \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dDownsampleMonoImages=false \
-dDownsampleGrayImages=false \
-dDownsampleColorImages=false \
-dAutoFilterColorImages=false \
-dAutoFilterGrayImages=false \
-dColorImageFilter=/FlateEncode \
-dGrayImageFilter=/FlateEncode \
title.pdf \
content.pdf
Ghostscript NOT'a ayrıca aşağıdaki komut satırını kullanarak görüntüleri çıkış PDF'sinde sıkıştırmasını da söyleyebilirsiniz :
gs \
-o book.pdf \
-sDEVICE=pdfwrite \
-dColorConversionStrategy=/LeaveColorUnchanged \
-dEncodeColorImages=false \
-dEncodeGrayImages=false \
-dEncodeMonoImages=false \
title.pdf \
content.pdf
.
[*]: Ghostscript'in pdfwrite cihazının kullandığı varsayılan ayarların tam listesi
hakkında bilgi edinmek istiyorsanız , aşağıdaki komutu çalıştırın. Size tam listeyi döndürür :
gs \
-sDEVICE=pdfwrite \
-o /dev/null \
-c "currentpagedevice { exch ==only ( ) print == } forall"
Tüm bu parametrelerin tam olarak ne anlama geldiğiyle ilgili açıklamalar için, Adobe Distiller'de "Distiller Parametreleri" ile ilgili bilgileri okumalısınız . Ghostscript bütün bunları taklit etmek için çok çalışıyor ...