PDF'yi sayfa başına 2 yüz sayfa başına 1 yüze dönüştür


12

Sayfa başına 2 tarafı olan PDF'yi sayfa başına 1 tarafına nasıl dönüştürebilirim?


Bu kesinlikle çılgınca! PDF'deki sayfa ayarlarını iki taraflı yerine tek taraflı olarak değiştirmenin bir yolu yok mu?
Nathan Fellman

@Nathan Fellman: Deli, evet. Ama çılgın şeyler bazen eğlencenin çoğunu verir ;-)
Kurt Pfeifle


@SkippyleGrandGourou Bu sorunun nasıl ilişkili olduğunu anlamıyorum. Sorular sayfalarla iki farklı şey yapmaya çalışmıyor mu?
Ben N

@BenN: Her iki soru da diğerini alıntılamak için "mevcut tek bir sayfadan iki yeni sayfa oluşturmayı" soruyor. En çok oylanan cevap neredeyse bir kopya macta.
Skippy le Grand Gourou

Yanıtlar:


24

Tamam, sorun zaten Acrobat (Reader değil tam sürüm) yardımıyla çözüldü. Acrobat'a erişiminiz yoksa ne yapmalısınız? Bu Ghostscript ve pdftk ile de yapılabilir mi?

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

... ve eğlenmek için, "iki katına çıkmış" sayfalar içeren bir girdi dosyası değil de "üç katına çıkmış" bir girdi dosyası kullanalım. Aslında bugün böyle bir PDF'yi e-posta ile aldım. Leporello'nun Şemasında katlanmış bir broşürdü . Yaprak boyutu A4 manzara (842pt x 595pt) idi ve katlandı ve şu şekilde yerleştirildi:

Front side to be printed, page 1 of PDF
+--------+--------+--------+   ^
|        |        |        |   |
|   5    |   6    |   1    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
         ^        ^
        fold     fold
         v        v
+--------+--------+--------+   ^
|        |        |        |   |
|   2    |   3    |   4    |   |
|        |        |        | 595 pt
|        |        |        |   |
|        |        |        |   |
|        |        |        |   |
+--------+--------+--------+   v
Back side to be printed, page 2 of PDF
<---------- 842 pt -------->

Her biri 280.67pt x 595 pt'lik olağandışı boyuta sahip 6 sayfadan oluşan 1 PDF oluşturmak istiyorum.

İlk adım

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

gswin32c.exe ^
    -o left-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [0 0]>> setpagedevice" ^
    -f myflyer.pdf

Bu parametreler ne yaptı?

  • -o ...............:Çıktı dosyasını adlandırır. Kesinlikle de kullanır -dBATCH -dNOPAUSE -dSAFER.
  • -sDEVICE=pdfwrite : PDF'yi çıktı biçimi olarak istiyoruz.
  • -g................:çıktı ortam boyutunu piksel olarak ayarlar. pdfwrite'ın varsayılan çözünürlüğü 720 dpi'dir. Bu nedenle PageOffset ile bir eşleşme elde etmek için 10 ile çarpın.
  • -c "..............:Ghostscript'ten verilen PostScript kod snippet'ini ana giriş dosyasından hemen önce işlemesini ister (bunu takip etmesi gerekir -f).
  • <</PageOffset ....:sayfa görüntüsünün ortama kaydırılmasını ayarlar. (Elbette, sol sayfalar için kaydırmanın [0 0]gerçek bir etkisi yoktur.)
  • -f ...............: bu girdi dosyasını işleyin.

Son komut hangi sonucu elde etti?

Bu:

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

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

İkinci adım

Şimdi orta bölümler için benzer bir şey yapalım:

gswin32c.exe ^
    -o center-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [280.67 0]>> setpagedevice" ^
    -f myflyer.pdf

Sonuç:

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

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

Üçüncü adım

Son olarak, doğru bölümler:

gswin32c.exe ^
    -o right-sections.pdf ^
    -sDEVICE=pdfwrite ^
    -g2807x5950 ^
    -c "<</PageOffset [561.34 0]>> setpagedevice" ^
    -f myflyer.pdf

Sonuç:

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

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

Son adım

Şimdi sayfaları tek bir dosyada birleştiriyoruz:

pdftk.exe ^
  A=right-sections.pdf ^
  B=center-sections.pdf ^
  C=left-sections.pdf ^
  cat A1 B2 C2 A2 B1 C1 ^
  output single-files-input.pdf
  verbose

Bitti. İşte istenen sonuç. 280.67x595 boyutunda 6 farklı sayfa.

Sonuç:

+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   ^
|        |  |        |  |        |  |        |  |        |  |        |   |
|   1    |  |   2    |  |   3    |  |   4    |  |   5    |  |   6    |   |
|        |  |        |  |        |  |        |  |        |  |        | 595 pt
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
|        |  |        |  |        |  |        |  |        |  |        |   |
+--------+  +--------+  +--------+  +--------+  +--------+  +--------+   v
< 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt >  < 280 pt > 

1
Kutsal saçmalık, harika sanat burada!
Ivo Flipse

Bu benim için iyi çalıştı, ama diğer bölümleri almak için PageOffset negatif bir sayıya ayarlamak zorunda kaldı.
jonchang

Python'u daha büyük PDF'ler için kullanabilirsiniz: f = open("order.dat","w") for i in [a+1 for a in xrange(63)]: f.write("A{0} B{0} ".format(i)) f.close()Bu, "A1 B1 A2 B2 ... A63 B63" ile bir order.dat dosyası oluşturur . Daha sonra kopyalayıp yapıştırabilirsiniz pdftk.
Suuuehgi

4

Sadece aynı problemi yaşadım. Briss, pdf sayfalarını ayırmak ve kırpmak için bir açık kaynak java GUI aracı tökezledi:

http://sourceforge.net/projects/briss/

Kullanıcı arayüzü tamamen önemsiz olmasa da, Linux'ta benim için çok iyi çalıştı. Hatta farklı boyutlarda sayfalarla bir pdf ile çalıştı!


3

@peims, teşekkürler. İşte yönteminizin adım adım sürümü. Kindle DX'im için dönüştürmek istediğim bir dosyada denedim ve mükemmel çalışıyor:

  • Sayfanın sol tarafını kırpmak ve "left.pdf" olarak kaydetmek için Acrobat v9'un tam sürümünü kullanın:
    • Sayfanın sol tarafını işaretlemek için kırpma aracını kullanın.
    • Sağ tıklayın ve "Cropbox'ı Ayarla" yı seçin.
    • "Belge ... Sayfaları Kırp" ı seçin ve kesmeyi belgenin tamamına uygulayın.
  • Sağ taraftaki sayfalarla tekrarlayın, "right.pdf" olarak kaydedin.
  • Bu aşamada iki belgeniz vardır: sol el sayfaları ile "left.pdf" ve sağ el sayfaları ile "right.pdf".

Ardından, sonuçları tek bir dosyaya eklemek için pdftk.exe dosyasını kullanın ( http://www.pdflabs.com/tools/pdftk-the-pdf-toolkit/ ). "Pdftk.exe", "left.pdf" ve "right.pdf" öğelerini "D: \" dizinine kopyalayın ve yürütün:

  • D:> pdftk D: \ left.pdf patlama çıkışı% 05d_A.pdf
  • D:> pdftk D: \ right.pdf patlama çıkışı% 05d_B.pdf
  • D:> pdftk * _ ?. pdf cat çıktı kombine.pdf

Not: Dosyaları "C: \" klasörüne kopyalarsanız, güvenlik izinleri nedeniyle Win 7 altında çalışmaz. D: \ 'niz yoksa, işlemi tamamlamak için bir "C: \ x" dizini oluşturun.

Bu sonuçlar normalde yeterince iyi olacaktır. Ancak, çıktıyı iyileştirmek için isteğe bağlı iki adım daha vardır.

  • (isteğe bağlı son adım 1) Bu aşamada, belge çok büyük (dokümanım 7MB ila 80MB arasında balonlanmış), bu nedenle aşağıdakilerden birini kullanarak dosya boyutunu küçültebilirsiniz:
    • "Advanced..PDF Optimizer" veya:
    • "Acrobat 5 ile uyumlu" ayarıyla "Advanced..Preflight".
  • (isteğe bağlı son adım 2) Sayfaların tümü farklı boyutlardadır. Kırpmayı tüm sayfalarda tekrarlayın, böylece her şey aynı boyuttadır.

2

Belgeyi çoğaltabilir, sonra sayfaları kırparak bir dosyada yalnızca çift sayfa numaraları ve diğerinde yalnızca tek sayfa numaraları görünmesini sağlayabilirsiniz. Ardından dosyaları tek sayfalara bölün ve tek taraflı bir belgeyi bir sayfaya dönüştürmek için yeniden birleştirin ...

Bunu bir dizi yöntem kullanarak yapabilirsiniz, örneğin:

  1. Çift sayfanın bir tarafını kırpmak ve kırpmayı tüm sayfalara uygulamak için Adobe Acrobat kırpma aracını kullanın.
  2. Pdftoolkit'teki 'seri çekim ' komutunu kullanarak dosyaları tek tek sayfalara bölün
  3. Bir dosya yeniden adlandırma aracı (örneğin, ReNamer ) kullanarak dosyaları sıralı olarak yeniden adlandırma
  4. Pdftoolkit'teki 'cat' komutunu kullanarak sayfaları yeniden birleştirin

2

Mac ve Linux'ta taranmış kitapları işlemek için aşağıdaki komut dosyasını kullanıyorum. Bu oldukça bellek yoğunlaşabilir.

#!/bin/bash
#
# This script processes scanned books. After scanning the books have been cropped with
# Preview. This does kind of a "soft crop" that we need to make a bit "harder". 
#
# The second step is to take each page of the PDF and split this into two two pages, 
# because each page of the scanned document actually contains two pages of the book.
#
#

FILE=`mktemp`.pdf
FILE2=`mktemp`.pdf
FILE3=`mktemp`.pdf

echo "Making a temporary copy of the input file."

cp $1 $FILE

#
# Start cropping
#

echo "Cropping the PDF"

# The first regex removes all boxes but CropBox. The second regex renames the  CropBox as MediaBox

perl -pi.bak -e 's/\/(Media|Bleed|Art|Trim)Box[\n\l\f\s]*\[(.+?)\]//msg;' $FILE
perl -pi.bak -e 's/CropBox/MediaBox/g;' $FILE

echo "Validating the PDF"

#Run PDFTK to ensure that the file is OK

cat $FILE | pdftk - output $FILE2

#
# Done cropping, start splitting the pages
#

echo "Splitting the pages in two and changing to 200 dpi with imagemagick. Output goes to $FILE3"

convert -density 200  $FILE2 -crop 50%x0 +repage $FILE3

#
# Done spliting, copy the result in a new file
#


mv $FILE3 $1.pages.pdf

1

Harika bir referans için teşekkürler. Benzer bir sorun yaşadım ama benim için işe yarayanı paylaşmak istedim.

Sadece sol tarafta dikey yönlü metin içeren yatay tabloid pdf'im vardı. Aslında 2-yukarı tabloid sayfanın sağ tarafında herhangi bir içerik eksik. Benzer başlangıç ​​noktası, ancak tabloid 792 × 1224 (Portre), 1124 x 792'dir (Yatay) ve ihtiyacım olan 1/2 tabloid için nokta tanımı 612 x 792 puandı.

"C:\Program Files\gs\gs9.10\bin\gswin64c.exe" -o left2.pdf -sDEVICE=pdfwrite -g6120x7920 -c "<</PageOffset [0 0]>> setpagedevice" -f "RFP.pdf"

İhtiyacım olan içeriği 8.5 x 11 portresine aldım, çok daha okunabilir.


0

Anladığım kadarıyla, iki sayfayı (bir sayfada yan yana) gösteren bir PDF dosyasının, sayfa başına bir sayfaya dönüştürülmesi ve iki sayfa PDF dosyası elde edilmesi gerekir. Başka bir deyişle, 15 sayfada toplam otuz sayfa varsa, PDF dosyasını her biri bir sayfa gösteren otuz sayfalık bir PDF dosyasına dönüştürmemiz gerekir. Bu sorun varsa 1'den 30'a kadar sayfa numaraları belirterek Adobe acrobat XI PRO "sayfa çıkarma aracı" kullandım


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.