यहाँ PyPdf लाइब्रेरी का उपयोग करके एक छोटा पायथन स्क्रिप्ट है जो बड़े करीने से काम करता है। इसे एक स्क्रिप्ट में सहेजें un2up
(या जो भी आपको पसंद है), इसे निष्पादन योग्य ( chmod +x un2up
) बनाएं , और इसे फ़िल्टर ( 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)
किसी भी डिप्रेशन चेतावनी को अनदेखा करें; केवल उन लोगों के साथ संबंध रखने की जरूरत है जो PyPdf के रखवाले हैं।
यदि इनपुट असामान्य तरीके से उन्मुख है, तो आपको पृष्ठों को काटते समय विभिन्न निर्देशांक का उपयोग करने की आवश्यकता हो सकती है। देखें कि मेरा कोड स्कैन किए गए पीडीएफ में हर पृष्ठ को सही ढंग से विभाजित क्यों नहीं करता है?
बस इसके उपयोगी होने पर, यहाँ मेरा पहले वाला उत्तर है जो दो उपकरणों के संयोजन के साथ साथ कुछ मैनुअल हस्तक्षेप का उपयोग करता है:
- Pdfjam (कम से कम संस्करण 2.0), पृष्ठों को क्रॉप करने के लिए, pdfpages LaTeX पैकेज के आधार पर ;
- Pdftk , बाएं और दाएं हिस्सों को वापस एक साथ रखने के लिए।
दोनों उपकरणों की आवश्यकता है क्योंकि जहाँ तक मैं बता सकता हूँ कि pdfpages एक ही पृष्ठ में एक ही पृष्ठ पर दो अलग-अलग परिवर्तनों को लागू करने में सक्षम नहीं है। कॉल pdftk
में, इनपुट दस्तावेज़ में पृष्ठों की संख्या से 42 को बदलें ( 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 नहीं है, तो PDFpaTeX इंस्टॉलेशन के लिए PDFpages पैकेज के साथ (उबंटू पर: आपको टेक्सलाइव-लेटेक्स-अनुशंसित और शायद उबंटू: टेक्सलीव-फोंट-अनुशंसित ) की आवश्यकता है, और निम्नलिखित ड्राइवर का उपयोग करने के लिए पर्याप्त है। फ़ाइल 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}
फिर इनपुट फ़ाइल में पृष्ठों की संख्या से 42 को प्रतिस्थापित करते हुए निम्नलिखित कमांड चलाएं (जिसे कॉल किया जाना चाहिए 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