একটি ডকুমেন্ট কী বহন করে, আর প্রতিটি রূপান্তর তা দিয়ে কী করে
একটি .docx হলো XML ফাইলের একটি ZIP, আর একে ডকুমেন্ট বানায় যা, তার বেশিরভাগই লেখা নয়। এতে আছে স্টাইল — Heading 1-এর মতো নাম দেওয়া সংজ্ঞা, যা অনেক অনুচ্ছেদ ভাগাভাগি করে — আর আছে সরাসরি ফরম্যাটিং, যেখানে কেউ একটি লাইন সিলেক্ট করে বোল্ড চেপেছেন। দুটি দেখতে হুবহু এক, কিন্তু রূপান্তরের সময় সম্পূর্ণ ভিন্ন আচরণ করে: স্টাইল টিকে থাকে স্টাইল হিসেবে, আর সরাসরি ফরম্যাট করা অংশ টিকে থাকে শুধু তার তৈরি করা ফরম্যাটিং হিসেবে। এগুলোর পাশাপাশি থাকে নম্বরের সংজ্ঞা, ট্র্যাক করা পরিবর্তন, মন্তব্য, ফুটনোট, হেডার ও ফুটার, টেক্সট বক্স, এমবেড করা ফন্ট আর ডকুমেন্টের প্রপার্টি — প্রতিটি অনুচ্ছেদের লেখা থেকে আলাদাভাবে সংরক্ষিত।
তালিকার নম্বর সবচেয়ে স্পষ্ট উদাহরণ। Word “1.” লেখা হিসেবে রাখে না; এটি একটি নম্বর-সংজ্ঞার রেফারেন্স রাখে আর পেজ আঁকার সময় নম্বরটি হিসাব করে বের করে। তাই যে টেক্সট এক্সট্র্যাক্টর অনুচ্ছেদের XML ধরে এগোয়, তা প্রতিটি নম্বর বাদ দিয়ে আপনাকে নম্বরহীন একটি তালিকা দেয়। DOCX থেকে TXT বরং সেগুলো আবার গড়ে — “1.”, “1.1”, “a)”, “iii.” — এমনকি সেসব তালিকাও, যা ডকুমেন্ট জুড়ে নতুন করে শুরু হয় বা চলতে থাকে।
ট্র্যাক করা পরিবর্তন ও মন্তব্য একটি সিদ্ধান্তের বিষয়, দুর্ঘটনা নয়। রিভিউয়ে থাকা একটি ডকুমেন্টে মুছে ফেলা লেখা আর যোগ করা লেখা দুটিই থাকে, একই ফাইলে, চিহ্নিত করে। DOCX থেকে TXT এটি পড়ে এমনভাবে, যেন প্রতিটি পরিবর্তন গ্রহণ করা হয়েছে: যোগ করা অংশ থাকে, মুছে ফেলা অংশ বাদ যায়। মন্তব্য একেবারেই রাখা হয় না, আর প্লেইন টেক্সট কোনো প্রকাশ্য জায়গায় গেলে সাধারণত এটিই আপনি চান। ফুটনোট ও এন্ডনোট আসে [1] চিহ্ন হিসেবে, নোটগুলো শেষে একসাথে, হেডার ও ফুটার চালু করা যায়, আর টেক্সট বক্স পুনরাবৃত্তি বা হারিয়ে না গিয়ে পড়ার ক্রমে প্রতিটি একবার করে আসে।
PDF-এ রূপান্তর যা স্থির করে দেয়, তা হলো পেজ বিভাজন। ওয়ার্ড প্রসেসরে চার নম্বর পেজ কোথায় শেষ হবে, তা ফাইল খোলার প্রতিবার নতুন করে হিসাব হয়, যিনি খুলছেন তাঁর ফন্ট ও প্রিন্টার ড্রাইভার দিয়ে — আর এ কারণেই প্রাপকের কাছে টেবিলটি দুই পেজে ভাগ হয়ে যায়, আপনার কাছে নয়। PDF-এ এমন কোনো নতুন হিসাব নেই: পেজ ব্রেক একবারই, রূপান্তরের সময় ঠিক হয়েছে, আর এখন তা ফাইলেরই একটি স্থির সত্য। Word থেকে PDF, ODT থেকে PDF ও RTF থেকে PDF এই ব্রেকগুলো পায় ব্রাউজারের আনুমানিক লেআউট থেকে নয়, একটি পূর্ণাঙ্গ ওয়ার্ড প্রসেসরের লেআউট থেকে, আর এ কারণেই টেক্সট বক্স, শেপ, হেডার ও ফুটার ঠিক সেখানেই বসে, যেখানে লেখক রেখেছিলেন।
যা হারায়, তা হলো এডিটযোগ্যতা ও রিফ্লো। স্টাইল হয়ে যায় দৃশ্যমান ফরম্যাটিং, আউটলাইন হয়ে যায় বুকমার্ক, আর লেখা আর ফোনের স্ক্রিন অনুযায়ী নতুন করে সাজে না। ডকুমেন্টে এমবেড করা ফন্ট যেমন আছে তেমনই ব্যবহার হয়; যে ফন্ট এমবেড করাও নেই, কনভার্টারের কাছেও নেই, তার জায়গায় মাপে সবচেয়ে কাছাকাছি সামঞ্জস্যপূর্ণ ফন্ট বসে, তাই অক্ষরের আকার আলাদা হলেও লাইন ভাঙে একই জায়গায়।
ই-বুকে রক্ষা করার মতো কোনো পেজ নেই। EPUB, MOBI ও AZW3 রিফ্লোযোগ্য — আপনার বেছে নেওয়া ফন্ট সাইজ অনুযায়ী রিডার অ্যাপ ঠিক করে প্রতিটি পেজ কোথায় শেষ হবে — তাই “৪০ নম্বর পেজ” বইটির কোনো বৈশিষ্ট্য নয়, আর আপনার PDF-এর পেজ বিভাজন তৈরি হয় রূপান্তরের সময়, আপনার বেছে নেওয়া পেজ সাইজ ও মার্জিন থেকে। ফাইলে যা আছে, তা হলো অধ্যায়ের কাঠামো আর সূচিপত্র, আর সেগুলো আসল PDF লিংক ও বুকমার্ক হয়ে যায়। AZW3-এ একটি স্টাইলশিট আর প্রায়ই এমবেড করা ফন্ট থাকে, তাই এটি প্রকাশকের ডিজাইন করা চেহারাতেই বেরিয়ে আসে; পুরোনো MOBI ফাইলে কোনো স্টাইলশিটই নেই, আর এ কারণেই কনভার্ট করা MOBI Kindle অ্যাপে একই বইয়ের চেয়ে সাদামাটা দেখায় — অ্যাপটি এমন টাইপোগ্রাফি যোগ করছিল, যা ফাইলে কখনো ছিল না।
RTF আগাগোড়া শুধুই টেক্সট, আর এ কারণেই এটি দশকের পর দশক ধরে সফটওয়্যার বদলেও টিকে আছে। এর সমস্যা ক্যারেক্টার এনকোডিং: RTF Unicode-এর চেয়ে পুরোনো, আর লেখা রাখে পুরোনো কোড পেজে — মধ্য ইউরোপীয়, সিরিলিক, গ্রিক, জাপানি — আর খারাপভাবে কনভার্ট করা RTF-এর দুর্বোধ্য চিহ্ন (mojibake) আসে এখান থেকেই। এখানে প্রতিটি ঠিকভাবে ডিকোড করা হয়, আধুনিক Unicode টেক্সটের পাশাপাশি।
যেখানে ব্রাউজার সত্যিই ভুল টুল
এর কিছু টুল আপনার ফাইল পুরোপুরি ব্যক্তিগত রাখে, আর কিছু সার্ভারে পাঠায়, আর কোনটি কী করে, তা নির্দিষ্ট করে বলা দরকার। PDF থেকে টেক্সট, TXT থেকে PDF, DOCX থেকে TXT, HTML থেকে DOCX ও Markdown থেকে HTML কখনো কিছু পাঠায় না — ফাইলটি এখানেই পড়া, কনভার্ট ও লেখা হয়, আর কিছুই বাইরে যায় না। Word থেকে PDF, ODT থেকে PDF, RTF থেকে PDF, HTML থেকে PDF, Markdown থেকে PDF আর তিনটি ই-বুক কনভার্টার রূপান্তরের কাজ করে আমাদের সার্ভারে, কারণ ওয়ার্ড প্রসেসরের পেজ লেআউট হুবহু তৈরি করা, বা একটি বইকে ঠিকভাবে পেজে ভাগ করা, একটি ওয়েব পেজের পক্ষে নকল করা সম্ভব নয়। কী পাঠানো হয়, তা আলাদা: Word, ODT ও RTF ডকুমেন্ট যায় যেমন আছে তেমনই, আর Markdown ফাইল ও ই-বুক আগে খুলে একটি ওয়েব পেজে সাজানো হয়, আর পাঠানো হয় সেই সাজানো পেজটিই। যেভাবেই হোক, এটি যায় এনক্রিপ্ট করা সংযোগে, কনভার্ট হয়, আর আপনার ডাউনলোড তৈরি হওয়ামাত্র মুছে ফেলা হয় — কিছুই সংরক্ষণ, লগ বা শেয়ার করা হয় না। সার্ভারে পৌঁছানো না গেলে প্রতিটি টুল নিজের কনভার্টারে ফিরে যায়, আর কখন তা করেছে এবং সেই বিকল্প কী রাখতে পারেনি, তা আপনাকে জানায়।
যে ফরম্যাট আমরা খুলি না। Word 97–2003-এর পুরোনো বাইনারি .doc ফাইল Word থেকে PDF-এ ভালোভাবেই কনভার্ট হয়, কারণ সার্ভার সেগুলো সরাসরি পড়ে — কিন্তু ব্রাউজারে চলা DOCX থেকে TXT তা পারে না, এর .docx লাগে। পাসওয়ার্ড দেওয়া ডকুমেন্টের পাসওয়ার্ড সরাতে হবে সেই প্রোগ্রামেই, যেটিতে তা দেওয়া হয়েছিল। DRM-সুরক্ষিত Kindle বই কোথাও কোনো কনভার্টার খুলতে পারে না — সুরক্ষার উদ্দেশ্যই সেটি — আর Amazon-এর নতুন KFX ফরম্যাটও না, যা শুধু Kindle অ্যাপই পড়ে।
লম্বা ডকুমেন্টের কাজ। মাস্টার ডকুমেন্ট, ক্রস-রেফারেন্স ফিল্ড, ইনডেক্স, স্বয়ংক্রিয়ভাবে তৈরি টেবিল অব অথরিটিজ, মেইল মার্জ আর সাইটেশন ম্যানেজার হলো ওয়ার্ড প্রসেসরের ফিচার, আর কনভার্টার ওয়ার্ড প্রসেসর নয়। LibreOffice ইনস্টল করুন — এটি ফ্রি, এই পেজের প্রতিটি ফরম্যাট পড়ে, আর এসব কাজের জন্য এটিই সোজাসুজি সঠিক প্রোগ্রাম।
একসাথে অনেক ফাইল ও অটোমেশন। এই টুলগুলো চলে যখন কেউ ক্লিক করেন। নির্দিষ্ট সময়সূচিতে এক হাজার ফাইল কনভার্ট করা কমান্ড-লাইনের কাজ, আর ফ্রি টুলগুলো চমৎকার: হেডলেস মোডে LibreOffice যেকোনো কিছু কনভার্ট করে, যা Writer খুলতে পারে; Pandoc যেকোনো ওয়েব ফর্মের চেয়ে বেশি নিয়ন্ত্রণ দিয়ে Markdown, HTML, DOCX, LaTeX আর আরও ডজনখানেক ফরম্যাটের মধ্যে রূপান্তর করে; আর Calibre একসাথে অনেক ই-বুক সামলায় এবং সুরক্ষাহীন প্রতিটি ই-বুক ফরম্যাটের মধ্যে কনভার্ট করে।
উল্টো দিকে হুবহু লেআউট। প্রচুর ডিজাইন করা একটি PDF-কে আবার এডিটযোগ্য ডকুমেন্টে পরিণত করা রূপান্তর নয়, অনুমানের সমস্যা, আর কোনো কিছুই এটি নিখুঁতভাবে করে না — আমরাও না, দামি ডেস্কটপ প্রোডাক্টগুলোও না। মূল ডকুমেন্টটি এখনো থাকলে সেটিই এডিট করুন।
একই রকম শোনায় এমন টুলগুলোর মধ্যে বেছে নেওয়া
Markdown থেকে PDF বনাম Markdown থেকে HTML। একই পার্সার, ভিন্ন গন্তব্য। Markdown থেকে PDF আপনাকে দেয় পেজে ভাগ করা একটি ডকুমেন্ট, আপনার বেছে নেওয়া টাইপফেস, পেজ সাইজ ও মার্জিনসহ, শিরোনামগুলো PDF বুকমার্ক হিসেবে আর এমন সূচিপত্র, যা ঠিক পেজে নিয়ে যায় — প্রিন্ট, অ্যাটাচ বা আর্কাইভের জন্য। Markdown থেকে HTML দেয় হয় স্টাইলসহ একটি স্বতন্ত্র পেজ, নয়তো CMS-এ পেস্ট করার জন্য একটি সাদামাটা স্নিপেট — প্রকাশের জন্য। Markdown-কে Word-এ নিতে চাইলে আগে Markdown থেকে HTML, তারপর HTML থেকে DOCX ব্যবহার করুন।
Word থেকে PDF বনাম ODT থেকে PDF বনাম RTF থেকে PDF। ভেতরে একই রূপান্তর; পার্থক্য শুধু আপনি কী দিচ্ছেন তাতে। .docx-এর জন্য Word থেকে PDF। LibreOffice, OpenOffice বা Google Docs-এর “Download as OpenDocument” থেকে আসা যেকোনো কিছুর জন্য ODT থেকে PDF। WordPad, TextEdit আর ব্যবসায়িক সিস্টেম এখনো যেসব চিঠি ও রিপোর্ট তৈরি করে, সেগুলোর জন্য RTF থেকে PDF। আপনার এক্সটেনশনের সঙ্গে মেলে এমন পেজ বেছে নেওয়া আপনার ধারণার চেয়ে কম গুরুত্বপূর্ণ — গুরুত্বপূর্ণ হলো, এর কোনোটিই TXT থেকে PDF নয়, যেখানে রক্ষা করার মতো কোনো ফরম্যাটিংই শুরু থেকে নেই।
TXT থেকে PDF বনাম Markdown থেকে PDF। TXT থেকে PDF আপনার লেখাকে লেখা হিসেবেই সাজায়: একটি টাইপফেস, আপনার মার্জিন, কোনো ব্যাখ্যা ছাড়া। Markdown থেকে PDF # আর * চিহ্নকে নির্দেশ হিসেবে পড়ে আর তৈরি করে শিরোনাম, তালিকা, টেবিল, হাইলাইট করা কোড ও বুকমার্কের আউটলাইন। TXT থেকে PDF-এ একটি Markdown ফাইল দিলে পাবেন তারকাচিহ্নগুলোরই একটি PDF।
EPUB, MOBI ও AZW3 থেকে PDF। তিনটিই নামের চেয়ে বেশি ফরম্যাট নেয়, তাই যেকোনোটিই আপনার ফাইল খুলবে; পেজগুলো আলাদা হয়, কারণ বইগুলোই আলাদা। EPUB ও AZW3 (KF8)-এ স্টাইলশিট আর প্রায়ই এমবেড করা ফন্ট থাকে, তাই ডিজাইন করা চেহারায় বেরিয়ে আসে। MOBI পুরোনো কনটেইনার, ফরম্যাটিং ন্যূনতম, আর এর কনভার্ট করা PDF ইচ্ছা করেই সাদামাটা। একটি Kindle ফাইলে দুটি লেআউটই থাকলে নতুনটি ব্যবহার করা হয়।
HTML থেকে DOCX বনাম Markdown থেকে HTML। HTML থেকে DOCX আগে মার্কআপটি সাজিয়ে নেয়, তাই চূড়ান্ত CSS — ফন্ট, সাইজ, রং, ফাঁক, বর্ডার — ডকুমেন্টে লেখা হয় আসল Word ফরম্যাটিং হিসেবে, Word-এর হেডিং স্টাইল, আসল তালিকা ও আসল টেবিলসহ, জায়গায় আটকে রাখা বক্স হিসেবে নয়। Markdown থেকে HTML মার্কআপটিই তৈরি করে। কোনোটিই কখনো JavaScript চালায় না।
DOCX থেকে TXT বনাম PDF থেকে টেক্সট। দুটিই আপনাকে প্লেইন টেক্সট দেয়, কিন্তু পড়ছে সম্পূর্ণ ভিন্ন জিনিস। একটি .docx এখনো জানে অনুচ্ছেদ, তালিকা ও টেবিল কী, তাই DOCX থেকে TXT তালিকার নম্বর আবার গড়তে আর টেবিলের সারি একসাথে রাখতে পারে। একটি PDF শুধু জানে প্রতিটি অক্ষর কোথায় আঁকা হয়েছিল, তাই PDF থেকে টেক্সট অবস্থান দেখে লাইন ও অনুচ্ছেদ অনুমান করে — ভালোভাবেই, তবে কাঠামোর দিক থেকে কখনো ততটা বিশ্বস্ত নয়। মূল ডকুমেন্ট আর তার PDF দুটিই থাকলে ডকুমেন্ট থেকেই বের করুন।
DOCX থেকে TXT বনাম Word থেকে .txt হিসেবে সেভ করা। Word-এর নিজস্ব প্লেইন-টেক্সট এক্সপোর্ট তালিকার নম্বর বাদ দেয়, টেবিল এলোমেলো করে, আর এনকোডিং নিয়ে নিজের মতো চলে। DOCX থেকে TXT নম্বর আবার গড়ে, টেবিল লেখে হয় ট্যাব দিয়ে আলাদা করা সারি হিসেবে, যা স্প্রেডশিটে পেস্ট করা যায়, নয়তো সারিবদ্ধ কলাম হিসেবে, যা চীনা ও জাপানিতেও সারিবদ্ধ থাকে, আর সেভ করে UTF-8-এ, আপনার চাওয়া লাইন-এন্ডিংসহ।