আমাদের বাড়িতে একটি লেজার প্রিন্টার আছে। এই Hewlett Packard LaserJet Pro CP1525nw কালার প্রিন্টার একটি পুরানো মডেল, তবে এটি একটি দুর্দান্ত ওয়ার্কহরস যা নির্ভরযোগ্যভাবে এবং রঙে প্রিন্ট করে। আমি কয়েক বছর আগে আমাদের রাস্পবেরি পাইকে প্রিন্ট সার্ভার হিসেবে ব্যবহার করে আমাদের হোম নেটওয়ার্কে রেখেছিলাম।
লেজারজেট আমার হোম অফিসে একটি দুর্দান্ত সংযোজন হয়েছে। আমি গত বছর আমার কোম্পানি চালু করার পর থেকে, ক্লায়েন্ট মিটিং, ওয়ার্কশপ এবং প্রশিক্ষণ সেশনের জন্য হ্যান্ডআউট এবং অন্যান্য উপকরণ প্রিন্ট করার জন্য আমি এই ছোট্ট লেজার প্রিন্টারের উপর নির্ভর করেছি।
এই প্রিন্টারের সাথে আমার একমাত্র আপত্তি হল এটি শুধুমাত্র একতরফা প্রিন্ট করে। আপনি যদি দ্বি-পার্শ্বযুক্ত মুদ্রণ করতে চান, তাহলে এটি নিজে করার জন্য আপনাকে একটি কাস্টম মুদ্রণ কাজ সেট আপ করতে হবে। এটি অসুবিধাজনক এবং ম্যানুয়াল পদক্ষেপের প্রয়োজন৷ LibreOffice-এ, প্রথমে বিজোড়-সংখ্যাযুক্ত পৃষ্ঠাগুলি প্রিন্ট করার জন্য আমাকে বিশেষভাবে মুদ্রণ কাজ সেট আপ করতে হবে, তারপরে অন্য দিকে জোড়-সংখ্যাযুক্ত পৃষ্ঠাগুলি প্রিন্ট করার আগে কাগজটি পুনরায় লোড করতে হবে—কিন্তু বিপরীত ক্রমে।
কেউ আমাকে পাঠিয়েছে এমন একটি PDF প্রিন্ট করার প্রয়োজন হলে, প্রক্রিয়াটি একই। একটি চার-পৃষ্ঠার নথির জন্য, আমাকে প্রথমে পৃষ্ঠা 1 এবং 3 মুদ্রণ করতে হবে, তারপরে কাগজটি পুনরায় লোড করতে হবে এবং বিপরীত ক্রমে পৃষ্ঠা 2 এবং 4 মুদ্রণ করতে হবে। জিনোম প্রিন্ট ডায়ালগে, বিজোড় পৃষ্ঠা বা জোড় পৃষ্ঠা মুদ্রণ করতে আপনাকে "পৃষ্ঠা সেটআপ" নির্বাচন করতে হবে।
আমি যেভাবে প্রিন্ট করি না কেন, সামগ্রিক প্রক্রিয়া হল বিজোড়-সংখ্যাযুক্ত পৃষ্ঠাগুলি মুদ্রণ করা, কাগজের ট্রেতে মুদ্রিত পৃষ্ঠাগুলির স্ট্যাক পুনরায় লোড করা, তারপর বিপরীত ক্রমে সমান-সংখ্যাযুক্ত পৃষ্ঠাগুলি মুদ্রণ করা। আমি যদি একটি চার পৃষ্ঠার নথি মুদ্রণ করি, বিপরীত ক্রমে সমান-সংখ্যাযুক্ত পৃষ্ঠাগুলি প্রিন্ট করার অর্থ হল পৃষ্ঠা 3 এর পিছনে পৃষ্ঠা 4 প্রিন্ট এবং পৃষ্ঠা 1 পৃষ্ঠার পিছনে পৃষ্ঠা 2 প্রিন্ট। এই কয়েকটি উদাহরণে আমার হতাশা কল্পনা করুন যখন আমি সমান-সংখ্যাযুক্ত পৃষ্ঠাগুলি প্রিন্ট করার সময় বিপরীত ক্রমে প্রিন্ট করার বিকল্পটি নির্বাচন করতে ভুলে গেছি এবং একটি দীর্ঘ প্রিন্ট কাজ নষ্ট করেছে৷
একইভাবে, বিজোড় সংখ্যক পৃষ্ঠা রয়েছে এমন নথিগুলির সাথে কীভাবে মোকাবিলা করতে হয় তা ভুলে যাওয়া সহজ। একটি পাঁচ পৃষ্ঠার নথিতে, আপনি প্রথমে পৃষ্ঠা 1, 3 এবং 5 মুদ্রণ করেন৷ কিন্তু যখন আপনি প্রিন্টারে মুদ্রিত পৃষ্ঠাগুলি পুনরায় লোড করেন, আপনি 5 পৃষ্ঠা চান না৷ পরিবর্তে, আপনি শুধুমাত্র 1 এবং 3 পৃষ্ঠাগুলি লোড করতে চান৷ অন্যথায় , পৃষ্ঠা 4 পৃষ্ঠা 5 এর পিছনে প্রিন্ট করবে, পৃষ্ঠা 2 পৃষ্ঠা 3 এর পিছনে প্রিন্ট করবে, এবং পৃষ্ঠা 1 এর পিছনে কিছুই মুদ্রিত হবে না৷
জিনিসগুলিকে আরও সহজ এবং আরও নির্ভরযোগ্য করার জন্য, আমি একটি সাধারণ ব্যাশ স্ক্রিপ্ট লিখেছিলাম যা ডুপ্লেক্স মুদ্রণকে স্বয়ংক্রিয় করে। এটি মূলত বিজোড়-সংখ্যাযুক্ত পৃষ্ঠাগুলি প্রিন্ট করার জন্য একটি মোড়ক, আমাকে পৃষ্ঠাগুলি পুনরায় লোড করার জন্য মনে করিয়ে দিন (এবং প্রয়োজনে শেষ পৃষ্ঠাটি সরান), তারপর জোড়-সংখ্যাযুক্ত পৃষ্ঠাগুলি মুদ্রণ করুন৷
যখনই আমার ডুপ্লেক্স হিসাবে একটি নথি প্রিন্ট করার প্রয়োজন হয়, আমি প্রথমে নথিটিকে PDF এ রূপান্তর করি। এটি করা খুব সহজ। LibreOffice-এ, সরাসরি PDF হিসেবে এক্সপোর্ট করার জন্য একটি টুলবার আইকন আছে। আপনি ফাইল— এভাবে রপ্তানি করুন—পিডিএফ হিসেবে রপ্তানি করুন-এর অধীনেও নেভিগেট করতে পারেন একই করতে অথবা অন্য কোনো অ্যাপ্লিকেশনে, সাধারণত একটি PDF-এ সংরক্ষণ করুন বৈশিষ্ট্য সন্দেহ হলে, GNOME প্রিন্টারের পরিবর্তে PDF ফাইলে মুদ্রণ সমর্থন করে।
এটি কিভাবে কাজ করে
একবার আমি পিডিএফ-এ সেভ করার পর, আমি আমার ব্যাশ স্ক্রিপ্টকে বাকিটা করতে দিই। এটি সত্যিই lpr কে স্বয়ংক্রিয় করে প্রিন্টিং সহজ করতে কমান্ড। এটি প্রথমে বিজোড় পৃষ্ঠাগুলি মুদ্রণ করে, আমাকে কাগজটি পুনরায় লোড করতে অনুরোধ করে, তারপর জোড় পৃষ্ঠাগুলি মুদ্রণ করে৷ নথিতে যদি বিজোড় সংখ্যক পৃষ্ঠা থাকে, তবে এটি আমাকে মুদ্রিত পৃষ্ঠাগুলি পুনরায় লোড করার সময় শেষ পৃষ্ঠাটি সরানোর কথাও মনে করিয়ে দেয়। এটা বেশ সহজ।
স্ক্রিপ্টের একমাত্র "প্রোগ্রামিং" অংশ হল পৃষ্ঠার সংখ্যা নির্ধারণ করা, এবং এটি একটি জোড় বা বিজোড় সংখ্যা কিনা তা খুঁজে বের করা। এই দুটোই করা সহজ৷
৷পৃষ্ঠা সংখ্যা নির্ধারণ করতে, আমি pdfinfo ব্যবহার করি আদেশ এটি একটি PDF নথি সম্পর্কে দরকারী তথ্য তৈরি করে। এখানে কিছু নমুনা আউটপুট:
$ pdfinfo All\ training\ -\ catalog.pdf
Creator: Writer
Producer: LibreOffice 6.3
CreationDate: Fri Oct 18 16:06:07 2019 CDT
Tagged: no
UserProperties: no
Suspects: no
Form: none
JavaScript: no
Pages: 11
Encrypted: no
Page size: 612 x 792 pts (letter)
Page rot: 0
File size: 65623 bytes
Optimized: no
PDF version: 1.5
যে আউটপুট পার্স করা খুব সহজ. পৃষ্ঠার সংখ্যা পেতে, আমি একটি AWK এক-লাইন স্ক্রিপ্ট ব্যবহার করি পৃষ্ঠাগুলি: খোঁজার জন্য এবং দ্বিতীয় ক্ষেত্র প্রিন্ট করুন।
pages=$( pdfinfo "$1" | awk '/^Pages:/ {print $2}' )
এটি একটি বিজোড় বা জোড় সংখ্যা কিনা তা বের করতে, আমি মডিউল ব্যবহার করি (% ) পাটিগণিত অপারেটর দুই দ্বারা ভাগ এবং আমাকে অবশিষ্ট বলুন. একটি জোড় সংখ্যার জন্য দুটির মডিউল সর্বদা শূন্য হবে এবং একটি বিজোড় সংখ্যার জন্য একটি। নথিতে বিজোড় সংখ্যক পৃষ্ঠা আছে কিনা তা নির্ধারণ করতে আমি এই সাধারণ পরীক্ষাটি ব্যবহার করি, তাই বাকি নথিটি প্রিন্ট করার আগে আমাকে শেষ পৃষ্ঠাটি সরাতে হবে:
if [ $(( $pages % 2 )) -ne 0 ] ; then
এর সাথে, print-duplex.sh লিখুন ব্যাশ স্ক্রিপ্ট হল lpr কল করার একটি সহজ বিষয় আমার প্রিন্টারে আউটপুট পাঠাতে সঠিক বিকল্পগুলির সাথে (lpr -P "HP_LaserJet_CP1525nw" ), বিজোড়-সংখ্যার পৃষ্ঠাগুলি প্রিন্ট করতে (-o page-set=odd ) বা জোড়-সংখ্যাযুক্ত পৃষ্ঠাগুলি (-o page-set=even ), এবং বিপরীত ক্রমে প্রিন্ট করতে (-o outputorder=reverse )।
ব্যাশ স্ক্রিপ্ট
#!/bin/sh
# print-duplex.sh
# simple wrapper to print duplex
cat<<EOF
$1 ($pages pages)
-------------------------------------------------------------------------------
Printing odd pages first
Please wait for job to finish printing...
-------------------------------------------------------------------------------
EOF
lpr -P "HP_LaserJet_CP1525nw" -o page-set=odd "$1"
sleep $pages
cat<<EOF
===============================================================================
Put paper back into the printer in EXACT OUTPUT ORDER (face down in tray)
then press ENTER
===============================================================================
EOF
pages=$( pdfinfo "$1" | awk '/^Pages:/ {print $2}' )
if [ $(( $pages % 2 )) -ne 0 ] ; then
echo '!! Remove the last page - this document has an odd number of pages'
fi
echo -n '>'
read x
cat<<EOF
-------------------------------------------------------------------------------
Printing even pages
Please wait for job to finish printing...
-------------------------------------------------------------------------------
EOF
lpr -P "HP_LaserJet_CP1525nw" -o page-set=even -o outputorder=reverse "$1"