2011-11-09 12 views
7

Bir dizi pdf dokümanından tek bir PDF belgesi oluşturmak içinPDF'yi GhostScript ile birleştirme: Orijinal Yer İmlerini kullanarak düzeltilmiş sayfa numaralarını kullanma

gs -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=book.pdf -f front-matter.pdf fulltext-0.pdf fulltext-1.pdf back-matter.pdf 

kullanıyorum. Yeni bir içerik tablosu ekleyecektim ve pdfmark mechanism kullanarak buna dahil edecektim. Daha sonra, orijinal dosyaların kendilerinde yer imlerinin bulunduğunu fark ettim - ancak bunlar, birleştirilmiş belgede değil, orijinal sayfa numaralarıyla ilgilidir.

İki olası çözümü arıyorum. Orijinal yer işaretlerini kaldırın veya orijinal yer işaretlerini kullanın, ancak bir şekilde sayfa referanslarını güncelleyin ...

cevap

4

olarak sık sık durumda, birisi

unfolding disasters

bu çok soruna a solution dışarı çalıştı ... senden önce aynı yolu yürüdük etti. Onun python script pdf-merge.py ilk önce tüm pdfmark bilgilerini almak için dump_data anahtarı ile pdftk çağırır. Daha sonra, her bir birleştirilmiş belge için toplam sayfa sayısını izler ve matematiği, mevcut PDF belgesinden önce yer alan tüm PDF belgelerinin toplam sayfa sayımlarının toplamı olarak pdfmark talimatındaki yeni sayfa numarası işaretçisini dengeleyecek şekilde yapar. Yani yakın ama KenS'nin 2-geçişli yaklaşımıyla aynı değil. Önce pdftk kullanarak yer imlerini keşfeder ve ardından doğru sayfa numaralarına sahip yeni bir yer imi dosyası oluşturur. Ayrıca, orijinal pdfmark komutunu (normalde gs tarafından noop'a korunur) döndürmeyi de başarıyor. Bu son bölümün nasıl çalıştığını anlayamıyorum ...

Ancak, betik son yazımdan önce yer imi dosyasını düzeltme seçeneği de dahil olmak üzere ihtiyacım olan her şeyi yapar. Trevor King'e çok düzgün ve şapka ipucu.

+0

Bu senaryoyu nasıl kullanıyorsunuz? Bazı hatalar alıyorum. – Bernhard

+0

@Bernhard Ne tür hatalar – DrSAR

+0

Bunlar gibi: http://pastebin.com/kjMgqCc1 sadece 'pdf-merge.py * .pdf 'yazdım – Bernhard

2

dosyaları sona eklendiğini bilmiyor, bu yüzden üzerinde imi ve diğer 'meta' bilgisini korur çıktıda isteyeceğiniz varsayımı. Ancak, PDF dosyalarını birleştirirken, bilgilerin saklanması ikinci ve sonraki dosyalar için sayfa numaraları doğru olmayacağından bilgilerin korunmaması işe yaramaz.

2 geçişli bir yaklaşıma ihtiyacınız var, önce tüm dosyaları birleştirin, yer imlerini iptal edin, ardından birleştirilen dosyayı 'dönüştürün' ve doğru yer imlerini ayarlamak için pdf işaretleri ekleyin.

Yer işaretlerini korumak için şu anda herhangi bir seçenek yoktur (pdfwrite ile). Bunu elde etmek için Ghostscript PDF yorumlayıcısı PostScript dosyalarını değiştirmeniz gerekecektir. -dDOPDFMARKS = false ayarlamayı deneyebilirsiniz, ancak bunun işe yaramayacağından şüpheliyim.

+0

-dDOPDFMARKS = false'nizi denedim ama şüphelendiğiniz gibi, bir şey yapmadı. – DrSAR

İlgili konular