İşte işi düzgün yapan PyPdf kütüphanesini kullanan küçük bir Python betiği . Bunu bir komut dosyasına un2up
(veya ne istersen) kaydedin , çalıştırılabilir hale getirin ( chmod +x un2up
) ve bir filtre olarak çalıştırın ( un2up <2up.pdf >1up.pdf
).
#!/usr/bin/env python
import copy, sys
from pyPdf import PdfFileWriter, PdfFileReader
input = PdfFileReader(sys.stdin)
output = PdfFileWriter()
for p in [input.getPage(i) for i in range(0,input.getNumPages())]:
q = copy.copy(p)
(w, h) = p.mediaBox.upperRight
p.mediaBox.upperRight = (w/2, h)
q.mediaBox.upperLeft = (w/2, h)
output.addPage(p)
output.addPage(q)
output.write(sys.stdout)
Herhangi bir kullanımdan kaldırma uyarısını yoksay; yalnızca PyPdf sağlayıcılarının bunlarla ilgilenmesi gerekir.
Giriş alışılmadık bir şekilde yönlendirilmişse, sayfaları keserken farklı koordinatlar kullanmanız gerekebilir. Kodum neden taranan bir pdf'deki her sayfayı düzgün bir şekilde bölmedi?
Faydalı olması durumunda, iki aracın bir kombinasyonunu ve bazı manuel müdahaleyi kullanan önceki cevabım:
Her iki araca da ihtiyaç var çünkü pdfpages'in aynı sayfaya tek bir akışta iki farklı dönüşüm uygulayamadığını söyleyebilirim. Çağrıda pdftk
, 42 giriş belgesindeki sayfa sayısı ile değiştirin ( 2up.pdf
).
pdfjam -o odd.pdf --trim '0cm 0cm 14.85cm 0cm' --scale 1.141 2up.pdf
pdfjam -o even.pdf --trim '14.85cm 0cm 0cm 0cm' --scale 1.141 2up.pdf
pdftk O=odd.pdf E=even.pdf cat $(i=1; while [ $i -le 42 ]; do echo O$i E$i; i=$(($i+1)); done) output all.pdf
Pdfjam 2.0'a sahip değilseniz, pdfpages paketi ile bir PDFLaTeX kurulumuna sahip olmak yeterlidir (Ubuntu'da: texlive-latex tarafından önerilen ve belki de (Ubuntu: texlive-fontlar-önerilen ) ve aşağıdaki sürücüyü kullanın dosya driver.tex
:
\batchmode
\documentclass{minimal}
\usepackage{pdfpages}
\begin{document}
\includepdfmerge[trim=0cm 0cm 14.85cm 0cm,scale=1.141]{2up.pdf,-}
\includepdfmerge[trim=14.85cm 0cm 0cm 0cm,scale=1.141]{2up.pdf,-}
\end{document}
Ardından, aşağıdaki komutları çalıştırın, 42 giriş dosyasındaki sayfaların sayısıyla değiştirilmelidir (bunlar çağırılmalıdır 2up.pdf
):
pdflatex driver
pdftk driver.pdf cat $(i=1; pages=42; while [ $i -le $pages ]; do echo $i $(($pages+$i)); i=$(($i+1)); done) output 1up.pdf