Sayfa başına 2 tarafı olan PDF'yi sayfa başına 1 tarafına nasıl dönüştürebilirim?
Sayfa başına 2 tarafı olan PDF'yi sayfa başına 1 tarafına nasıl dönüştürebilirim?
Yanıtlar:
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?
... 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.
Ö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 >
Ş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 >
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 >
Ş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 >
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
.
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ı!
@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:
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:
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.
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:
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
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.
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
Krop (Python) ve PDFscissors (Java) henüz bahsedilmedi, uygun bir sunum PDF'sine geri dönmek istediğiniz fe pdfnup-ped ders notlarınız olup olmadığını kontrol edin ..