ব্লগ

PDF-এ রঙিন emoji: সাপোর্ট, ফাইল সাইজ ও বাস্তব মূল্য

রসিদ, টিকিট, চ্যাট এক্সপোর্ট ও সাপোর্ট রেকর্ডে emoji এখন স্ট্যাটাস, অনুভূতি ও প্রসঙ্গ বহন করে। PDF জেনারেটর কীভাবে এটি সামলায়, এবং সাইজ কেন জরুরি।

PDF-এ emoji আগে অনেকের কাছে শুধু সাজসজ্জা মনে হতো। এখন তা নয়।

গ্রাহকের কাছে যায় এমন আধুনিক document-এ emoji প্রায়ই তথ্য বহন করে:

  • রসিদে ✅ paid, 🎁 reward, ⭐ rating বা 🔥 limited offer বোঝাতে পারে।
  • delivery notice-এ 📦, 🚚 ও 🙏 দ্রুত status cue দেয়।
  • customer-support transcript-এ WhatsApp, LINE, KakaoTalk বা WeChat message থাকতে পারে, যেখানে emoji evidence-এর অংশ।
  • certificate, badge, coupon, ticket বা loyalty card-এ 🏆, 🎓, 🎉 বা 💯 visual identity-র অংশ হতে পারে।

যদি emoji হারিয়ে যায়, খালি box হয়ে যায়, অথবা PDF-কে কয়েকশ KB বড় করে দেয়, document আর original content-এর প্রতি faithful থাকে না। high-volume systems-এ এটি product, storage, bandwidth, email delivery এবং কখনও compliance problem হয়ে দাঁড়ায়।

“emoji support” কোনো একক checkbox নয়। PDF generator browser বা OS font-এর ওপর নির্ভর করতে পারে, caller-কে emoji font configure করতে বলতে পারে, emoji-কে image/vector artwork বানাতে পারে, অথবা color font data embed করতে পারে। সব পথই কাজ করতে পারে, কিন্তু tradeoff আলাদা।

ব্যবহারিক সমস্যা: support বনাম size

Color emoji PDF-এ কঠিন, কারণ এগুলো সাধারণ black-and-white glyph নয়। PDF Association বিষয়টি পরিষ্কারভাবে বলেছে: OpenType color font-এর কয়েকটি competing format আছে, কিন্তু traditional outline font-এর মতো এগুলো PDF-এ সরাসরি native নয়।

তাই renderer-কে representation বেছে নিতে হয়:

  • browser বা operating-system color font ব্যবহার করা;
  • color emoji font data embed বা subset করা;
  • emoji-কে image বা vector artwork বানানো;
  • অথবা monochrome glyph, missing-glyph box বা plain text-এ fallback করা।

এক-দুটি emoji হলে পার্থক্য ছোট হতে পারে। কিন্তু emoji-heavy receipt, coupon, chat export বা support archive-এ এই পার্থক্য বড় হয়ে যায়।

ছোট benchmark: 50 common emoji

আমরা 20 May 2026-এ একই one-page A4 sample দিয়ে local smoke test চালিয়েছি:

  • একটি version শুধু plain text;
  • একটি version body-তে 50 common emoji;
  • Chrome 148 headless print-to-PDF;
  • একই 50 emoji set দিয়ে gPdf local generation।

এটি সব document বা সব engine version-এর universal benchmark নয়। অনেক distinct color emoji থাকলে file size কীভাবে বাড়ে, তা দেখানোর একটি ছোট পরীক্ষা।

RendererPlain PDFSame page with 50 emojiIncreaseRatio
Chrome 148 print-to-PDF31,250 bytes435,630 bytes+404,380 bytes13.94x
gPdf local generation8,766 bytes43,466 bytes+34,700 bytes4.96x

Chrome output AppleColorEmoji Type 3 subsets embed করেছে। emoji visible রাখার এটি valid পদ্ধতি, কিন্তু এই sample-এ file-size impact স্পষ্ট।

gPdf output পূর্ণ color emoji font embed করেনি। emoji-heavy version plain version-এর চেয়ে বড়, সেটাই স্বাভাবিক: color artwork কোথাও রাখতে হয়। পার্থক্য হলো output মূলত document-এ ব্যবহৃত emoji artwork অনুযায়ী বাড়ে, broad browser বা OS font path অনুযায়ী নয়।

procurement-এ আসল প্রশ্ন “আমার laptop-এ একটি smiley দেখা যায় কি না” নয়। আসল প্রশ্ন:

production document-এ যখন কয়েক ডজন distinct emoji থাকে এবং PDF real server environment-এ generate হয়, তখন কী ঘটে?

অন্য PDF generators emoji কীভাবে handle করে

সৎ comparison হলো না যে “অন্যরা ব্যর্থ”। বেশ কিছু mature PDF tool color emoji support করে। গুরুত্বপূর্ণ হলো তারা কীভাবে support করে, এবং setup, determinism ও output size-এর ওপর এর প্রভাব কী।

Puppeteer, Chrome এবং Chromium-based APIs

Puppeteer Chrome-এর PDF output path ব্যবহার করে। documentation page.pdf()-কে print CSS media type দিয়ে page-এর PDF generate করার method হিসেবে ব্যাখ্যা করে, এবং guide বলে defaultভাবে fonts load হওয়া পর্যন্ত অপেক্ষা করে। source of truth যদি web page হয়, এটি কাজে লাগে।

emoji-heavy structured documents-এর ক্ষেত্রে tradeoff হলো output browser/font environment-এর ওপর নির্ভর করে। আমাদের local sample-এ Chrome emoji ঠিক দেখিয়েছে, কিন্তু file 31 KB থেকে 436 KB হয়েছে।

এর মানে Puppeteer ভুল নয়। এটি প্রথমে browser automation tool। existing web page capture করতে হলে ঠিক পছন্দ। compact, repeatable receipts, labels, tickets, statements বা support records চাইলে browser path ভারী হতে পারে।

DocRaptor এবং Prince

DocRaptor Prince wrap করে, আর Prince শক্তিশালী HTML-to-PDF engine। input সত্যিই HTML/CSS হলে এবং complex paged-media features দরকার হলে এটি খুব ভালো।

DocRaptor-এর Pipeline 9 / Prince 14 announcement color emoji support স্পষ্টভাবে list করে। Prince 14 release notes-এও SVG-in-OpenType, CBLC/CBDT color emoji fonts, Apple sbix এবং emoji tag sequences support আছে। তাই সঠিক claim নয় যে “DocRaptor emoji render করতে পারে না”।

সঠিক সীমা হলো: DocRaptor/Prince high-quality HTML-to-PDF path; gPdf structured JSON-to-PDF path। input যখন আগে থেকেই data, এবং document emoji-heavy, gPdf সমস্যাটিকে general HTML/CSS renderer-এর ভেতর ঠেলে দেয় না।

PDFreactor

PDFreactor-ও color emoji support করে। manual বলে color emoji defaultভাবে ব্যবহৃত হয়, এবং CBDT, SBIX, OpenType-SVG color font formats support করে।

একই manual limitations-ও বলে: OpenType-SVG ব্যবহার করলে PDF size বড় হয়, এবং সেই color-font path-এ selection বা copying নেই। “emoji support” কে yes/no feature ভাবার আগে team-এর এই tradeoff বোঝা দরকার।

iText এবং pdfHTML

iText emoji render করতে পারে যখন document-এর কাছে ঐ characters draw করার মতো font program থাকে। official pdfHTML emoji guide expected pattern দেখায়: emoji-capable font FontProvider-এ add করে conversion চালানো।

SDK-level control চাইলে এটি powerful। তবে font setup, testing, deployment এবং long-term maintenance application team-এর দায়িত্ব।

coverage কেন গুরুত্বপূর্ণ

ভুল জিনিস test করা সহজ। renderer যদি 😂 দেখাতে পারে, তার মানে এই নয় যে users যে emoji পাঠায় সেগুলো সব সামলাতে পারবে।

বাস্তব emoji ব্যবহারে আছে:

  • variation selectors;
  • skin-tone modifiers;
  • zero-width-joiner sequences;
  • country flags ও tag sequences;
  • CJK, Arabic, Latin ও অন্য scripts-এর সঙ্গে mixed emoji;
  • পুরনো PDF viewers ও enterprise document pipelines।

customer documents-এ consistency product-এর অংশ। support transcript server বদলালে emoji বদলানো উচিত নয়। receipt macOS-এ status mark আর Linux container-এ box দেখানো উচিত নয়। marketplace-কে প্রতিটি merchant-এর কাছে একই emoji font stack install করাতে বলা উচিত নয়।

gPdf-এর product position সহজ: generated PDFs-এ color emoji কাজ করা উচিত, customer-কে emoji fonts install করতে, browser runtime tune করতে, বা defaultভাবে বড় output files মেনে নিতে বলা উচিত নয়।

emoji কোথায় বেশি গুরুত্বপূর্ণ

emoji-heavy PDFs শুধু consumer marketing নয়। operational systems-এও এগুলো দেখা যায়।

Document typeemoji কেন গুরুত্বপূর্ণ
Receipts and vouchersStatus, reward, rating ও promotional cue customer experience-এর অংশ।
Delivery and booking confirmationsconfirmed, packed, shipped, delivered state দ্রুত scan করা যায়।
Customer-support recordschat export emoji হারালে tone ও evidence হারায়।
Community and social archivesemoji conversation-এর অংশ।
Certificates and achievement badgestrophy, graduation ও celebration symbols design-এর অংশ হতে পারে।
Multilingual customer PDFsemoji language boundary পেরিয়ে status cue দিতে পারে।

এই কারণেই file size গুরুত্বপূর্ণ। একবার 400 KB বাড়া খুব বড় মনে হয় না। মাসে 100,000 receipt হলে তা storage, bandwidth, email deliverability, mobile download time এবং archive cost হয়ে যায়। chat-export scale-এ প্রভাব আরও বড়।

gPdf কোথায় fit করে

gPdf full browser হতে চায় না, এবং সব HTML-to-PDF engine-এর replacement নয়। source document যদি arbitrary web page, complex editorial layout, বা JavaScript-rendered chart-সহ live dashboard হয়, browser বা mature HTML-to-PDF engine ব্যবহার করুন।

gPdf অন্য case-এর জন্য:

  • input আগে থেকেই structured data;
  • output predictable হতে হবে;
  • system high volume-এ চলে;
  • PDF compact থাকতে হবে;
  • একই payload বিভিন্ন environment-এ consistent output দেবে;
  • emoji, CJK, barcodes, PDF/A এবং metadata product requirements।

এই workload-এ emoji support boring হওয়া উচিত। status, sentiment এবং customer-language cues document-এ দিতে গিয়ে PDF generation-কে font-installation project বানানো উচিত নয়।

PDF vendor-কে কী জিজ্ঞেস করবেন

emoji support evaluate করলে screenshot-এর বেশি কিছু চাইুন:

  1. 50 distinct common emoji সহ PDF generate করতে পারেন?
  2. emoji থাকলে এবং না থাকলে file size কত?
  3. output কি operating-system fonts-এর ওপর depend করে?
  4. customer-কে কি emoji font install/register করতে হয়?
  5. ZWJ sequences, flags এবং variation selectors কীভাবে handle হয়?
  6. runtime upgrade-এর পর output stable থাকে?
  7. emoji behavior documented, নাকি host environment-এর side effect?

উত্তরগুলো বলবে emoji support real product capability, নাকি runtime-এর accidental result।

Sources

Note: gPdf uses Twemoji graphics. Twemoji graphics are copyright 2019 Twitter, Inc and other contributors and are licensed under CC BY 4.0.