Bir PDF'nin sayfalarını ortasından nasıl ayırabilirim?


38

Bir pdf sayfasını ortadan iki yeni sayfaya ayırmanın iyi bir yolunu bilen var mı?

Açıkçası, zaten mevcut sayfaları bir pdf'den ayırmaya çalışmıyorum ; Mevcut bir tek sayfadan iki yeni sayfa oluşturmaya çalışıyorum.


neden bunu yapmak istiyorsun daha küçük sayfalar mı alıyorsunuz?
akira

Eh, MS Office ücretsiz bir yazılım değildir, ancak MS Office 2007'niz varsa, o zaman belgeleri sadece PDF dosyaları olarak kaydedebilir ve istediğiniz gibi yapabilirsiniz ...
Owen


Yanıtlar:


26

BRISS'i deneyin .

alt metin

Bir GUI ile bölgeleri tanımlayarak her sayfayı istediğiniz kadar alt sayfaya ayırmanızı sağlar. Tüm benzer sayfaları sizin için gruplar halinde gruplandırır, böylece o grup için bölgeleri bir kez tanımlayabilirsiniz.

Çapraz platform, özgür ve açık kaynak.


Görünüşe göre bu, dosya boyutunu artırıyor (katlanmış her sayfa için "sayfa başına çıkış sayfası sayısı") çünkü orijinal sayfa içeriğini ve kırpılmış her sayfa için bir kırpma kutusunu kullanıyor. Küçük dosya boyutuna ihtiyacınız varsa, çıktı dosyasını PS'ye yazdırabilir ve ardından PDF'ye dönüştürebilirsiniz, ancak daha sonra (örneğin, bitmap yazı tipleri nedeniyle) kalitenizi kaybedebilirsiniz.
tanius

37

Bunu Ghostscript'in yardımıyla çözebilirsin. pdftktek başıma bunu yapamam (bildiğim kadarıyla). Bunu manuel olarak yapmak için size komut satırı adımlarını vereceğim. Bunu bir prosedür olarak, ayrıca sayfa boyutları ve sayfa numaraları için farklı parametrelerle kodlamak kolay olacaktır. Ama bunu kendin yapabileceğini söyledin ;-)

Ghostscript yardımı ile bu nasıl çözülür ...

... ve eğlencesi için, geçenlerde "iki katına" sayfa içeren bir giriş dosyası ile değil , "tiz" içeren bir dosya yaptım . Bu davanın cevabını diğer cevabında okuyabilirsiniz .

Davanız daha da basit. Buna benzer bir şeyiniz var gibi görünüyor:

+------------+------------+   ^
|            |            |   |
|      1     |      2     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
             ^
            fold
             v
+------------+------------+   ^
|            |            |   |
|      3     |      4     |   |
|            |            | 595 pt
|            |            |   |
|            |            |   |
|            |            |   |
+------------+------------+   v
<---------- 842 pt -------->

Her biri 421 pt x 595 pt boyutunda olan 4 sayfalık 1 PDF oluşturmak istiyorsunuz.

İlk adım

Önce sol bölümleri giriş sayfalarının her birinden çıkaralım:

gs \
    -o left-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [0 0]>> setpagedevice" \
    -f double-page-input.pdf

Bu parametreler ne yaptı?

İlk önce, PDF olarak 1 inç == 72 puan olduğunu bilin . O zaman gerisi:

  • -o ...............:İsimler çıktı dosyası. Örtülü de kullanır -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : PDF'yi çıktı formatı olarak istiyoruz.
  • -g................:çıktı medya boyutunu piksel cinsinden ayarlar. pdfwrite varsayılan çözünürlüğü 720 dpi'dir. Bu nedenle PageOffset ile eşleşme elde etmek için 10 ile çarpın.
  • -c "..............:Ghostscript'ten verilen PostScript kod pasajını ana giriş dosyasından hemen önce (izlemesi gereken -f) işlemesini ister .
  • <</PageOffset ....:sayfa görüntüsünün ortama kaymasını ayarlar. (Tabii ki, sol sayfalar için vardiya [0 0]gerçek etkiye sahip değildir.)
  • -f ...............: bu giriş dosyasını işleyin.

Son komut hangi sonucu elde etti?

Bu:

Output file: left-sections.pdf, page 1
+------------+  ^
|            |  |
|     1      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: left-sections.pdf, page 2
+------------+  ^
|            |  |
|     3      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

İkinci adım

Sonra, doğru bölümler:

gs \      
    -o right-sections.pdf \
    -sDEVICE=pdfwrite \
    -g4210x5950 \
    -c "<</PageOffset [-421 0]>> setpagedevice" \
    -f double-page-input.pdf

Sonuç:

Output file: right-sections.pdf, page 1
+------------+  ^
|            |  |
|     2      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v

Output file: right-sections.pdf, page 2
+------------+  ^
|            |  |
|     4      |  |
|            |595 pt
|            |  |
|            |  |
|            |  |
+------------+  v
<-- 421 pt -->

Son adım

Şimdi sayfaları tek bir dosyada birleştiriyoruz. Bunu Ghostscript ile de yapabilirdik, ama pdftkonun yerine kullanacağız , çünkü bu iş için daha hızlı:

pdftk \
  A=right-sections.pdf \
  B=left-sections.pdf \
  shuffle A B \
  output single-pages-output.pdf
  verbose

Bitti. İşte istenen sonuç. 421x595 pt boyutunda 4 farklı sayfa.

Sonuç:

+------------+ +------------+ +------------+ +------------+   ^
|            | |            | |            | |            |   |
|     1      | |     2      | |     3      | |     4      |   |
|            | |            | |            | |            | 595 pt
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
|            | |            | |            | |            |   |
+------------+ +------------+ +------------+ +------------+   v
<-- 421 pt --> <-- 421 pt --> <-- 421 pt --> <-- 421 pt -->

3
Güzel! Ücretsiz olarak ücretsiz oyun almaya devam etmek istiyorsan bunu her cevapta kullanmalısın!
Ivo Flipse

2
Ben Negatif bir kullanıldığında ikinci adım sadece benim için çalıştı: "<</PageOffset [-421 0]>> setpagedevice". Sanırım orijinal dosyanın yönüne bağlı. Yine de mükemmel cevap. :)
moraes

1
Bana göre ikinci adım eksi işareti ile de çalıştı
Rafareino

9

@Marttt'a ve Unix & Linux'taki cevaplarına teşekkürler .

(Bunun bir mutoolparçası olarak gelir mupdf) kullanabilirsiniz:

mutool poster -x 2 input.pdf output.pdf

-yDikey bölme yapmak istiyorsanız da kullanabilirsiniz .


Bu basit bir çözüm, teşekkürler. Ne yazık ki, sayfadaki içeriği kenar boşluklarını ayarlamak için değiştirmenin bir yolu yoktur - bunun için Kurt Pfeifle tarafından açıklanan yöntemi kullanın.
Jan Lalinský

0

@ Kurt'ın cevabını genişletmek için (yorumlayacak kadar itibar puanım olmadığından), öncelikle kullandığınız boyutların Media Box boyutlarından farklı olması durumunda Crop Box boyutlarına dayanmadığından emin olun. Çıktı boyutu Medya Kutusu boyutlarına dayanır, ancak ofset Kırpma Kutusu boyutlarını kullanıyor gibi görünüyor.

20.0833 x 13.833 ortam kutusu ve belgemdeki kırpma kutusuyla aynı olan 19.25 x 13.0 kırpma kutusundaki geçit sayfası için, sol tarafta Ubuntu'da iki sayfaya ayırmak için:

gs -o left.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [0 0]>> setpagedevice" -f gatefold.pdf

Sağ taraf:

gs -o right.pdf -sDEVICE=pdfwrite -g7230x9960 -c "<</PageOffset [-693 0]>> setpagedevice" -f gatefold.pdf

Ve sonra onları dikildi pdftk left.pdf right.pdf output final.pdf.

Bir alternatif, kırpma kutusunu medya kutusu ile aynı yapmaktır; o zaman ofset -723 olur. Ancak daha sonra, sayfaların sorunsuz görünmesi için kırpmanın kırpılması için sıfırlanması gerekir. Aksi takdirde, medyayı kırpılacak şekilde ayarlayın.


Sayfaları bu komut seçenekleriyle ayırdıktan sonra, ortam kutularının değişmediğini unutmayın. Sadece mahsul değişir. Bir sayfayı birden fazla sayfaya bölerseniz, yeni sayfalar medya kutusu boyutlarını eski sayfadan korur. Medya kutusu boyutlarını değiştirmek için sed'e ihtiyacınız var. Gerçi medya kutusunu komuta sayıları eklemeden kırpılacak şekilde nasıl ayarlayacağınızı bilmiyorum.
motorbaby

Hata. Yeni sayfaların kırpma kutusu boyutlarını eski sayfadan koruduğunu söylüyorum.
motorbaby

Acrobat PDF'lerde bir hata buldum. Görsel olarak, cropBox boyutları Acrobat'ta Sayfa Kutularını Ayarla'da görülebilir. Ancak, GhostCript'i geçit bölmesini bölmek için kullandıktan sonra cropBox boyutları eski sayfa boyutlarını başka bir seviyede tuttu. Bu Acrobat'ta Preflight Analyze bilgilerinde görülebilir. Kırpmayı Acrobat'ta sol sayfanın sağ tarafında geçici olarak rasgele bir numaraya ayarladıktan sonra 0'a döndürdükten sonra, diğer kutu boyutları (taşma, resim ve kesme) de düzeltildi. Bu, cropBox verilerinin hala eski sayfa boyutlarını göstermesi sorununu çözdü. Sağ sayfa biraz farklıydı.
motorbaby
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.