এখানে পাইপডিএফ লাইব্রেরি ব্যবহার করে একটি ছোট পাইথন স্ক্রিপ্ট রয়েছে যা কাজটি খুব সুন্দরভাবে করে। এটি 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)
কোনও অবমূল্যায়ন সতর্কতা উপেক্ষা করুন; কেবল পিপিডিএফ রক্ষণাবেক্ষণকারীদেরই তাদের সম্পর্কিত হতে হবে।
যদি ইনপুটটি অস্বাভাবিক উপায়ে কেন্দ্রিক হয়, পৃষ্ঠাগুলি কাটানোর সময় আপনাকে বিভিন্ন স্থানাঙ্ক ব্যবহার করতে হতে পারে। দেখুন কেন আমার কোডগুলি প্রতিটি স্ক্যান করা পিডিএফ মধ্যে প্রতিটি পৃষ্ঠা সঠিকভাবে বিভক্ত হয় না?
কেবলমাত্র এটি কার্যকর হলে এখানে আমার আগের উত্তরটি দুটি সরঞ্জাম এবং কিছু ম্যানুয়াল হস্তক্ষেপের সংমিশ্রণ ব্যবহার করে:
- পৃষ্ঠাগুলি ক্রপ করার জন্য পিডিএফজাম (কমপক্ষে সংস্করণ ২.০), পিডিএফপেজ ল্যাটেক্স প্যাকেজের উপর ভিত্তি করে ;
- বাম এবং ডান অর্ধেক একসাথে ফিরে রাখতে পিডিএফটক ।
উভয় সরঞ্জামের প্রয়োজন কারণ যতদূর আমি বলতে পারি পিডিএফ পৃষ্ঠাগুলি একই প্রবাহে একই পৃষ্ঠায় দুটি পৃথক রূপান্তর প্রয়োগ করতে সক্ষম হয় না। কলটিতে pdftk
, ইনপুট ডকুমেন্টের ( 2up.pdf
) পৃষ্ঠাগুলির সংখ্যা দ্বারা 42 প্রতিস্থাপন করুন ।
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
আপনার পিডিএফজাম ২.০ না থাকলে পিডিএফপেজ প্যাকেজটি পিডিএফএলএক্স ইনস্টল করার জন্য যথেষ্ট (উবুন্টুতে: আপনার টেক্সলাইভ-লেটেক্স-প্রস্তাবিত এবং সম্ভবত (উবুন্টুতে: টেক্সলাইভ-ফন্ট-প্রস্তাবিত ) প্রয়োজন, এবং নিম্নলিখিত ড্রাইভারটি ব্যবহার করুন ফাইল 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