ব্লগ

২০২৬ সালে PDF API বাছাই: যে ৮টি প্রশ্ন করা উচিত

PDF generation API বেছে নেওয়ার জন্য vendor-neutral সিদ্ধান্ত কাঠামো। ১২ মাস পরও আপনি সন্তুষ্ট থাকবেন কি না, তা বোঝায় এই আট প্রশ্ন।

PDF generation API বেছে নেওয়া প্রথমে সহজ মনে হয়। কিন্তু বাজারে অনেক vendor, তাদের marketing copy প্রায় একই, আর আসল tradeoff দেখা যায় production-এ কয়েক হাজার document render করার পর।

এই checklist vendor evaluation-এ ব্যবহার করার মতো। এটি কোনো vendor-এর পক্ষে নয়; procurement ও post-mortem-এ teams যে সমস্যাগুলো দেখে, সেখান থেকে নেওয়া। আটটি প্রশ্নের পরিষ্কার উত্তর না পেলে সিদ্ধান্ত নেওয়ার মতো তথ্য আপনার নেই।

১. Input format কী: HTML, JSON, নাকি template DSL?

এটাই সবচেয়ে গুরুত্বপূর্ণ প্রশ্ন। কারণ এটি ঠিক করে আপনার team কী লিখবে এবং রাত দুইটায় কী debug করবে।

  • HTML/CSS (Puppeteer, DocRaptor, Prince): পরিচিত, খুব flexible, runtime-এ ব্যয়বহুল, deterministic করা কঠিন।
  • JSON / structured data (gPdf): render সস্তা, byte-identical output, তবে data model থেকে document model-এ mapper লাগে।
  • Template DSL (PDFKit, ReportLab, Apache PDFBox): পুরো control, কিন্তু pagination, layout ও font fallback-এর পুরো দায়িত্বও আপনার।

সবার জন্য এক উত্তর নেই। আপনার team-এর জন্য ভুল উত্তর থাকতে পারে। Engineers-কে জিজ্ঞেস করুন: তিন ঘণ্টার pagination bug তারা কোন model-এ debug করতে চাইবে?

২. Cold-start latency কত এবং predictable কি?

কিছু renderer microseconds-এ boot করে, বিশেষ করে WASM বা native binary। Chromium-based renderer seconds নিতে পারে। traffic spike না আসা পর্যন্ত পার্থক্য বোঝা যায় না।

Vendor-কে জিজ্ঞেস করুন:

  • “Cold worker-এর first request p99 latency কত?”
  • “শেষ request-এর কত পরে worker আবার cold হয়?”
  • “Cold-start data সহ status page আছে?”

সংখ্যা না পেলে ধরে নিন উত্তর ভালো নয়।

৩. Per-render cost কীভাবে model করা হয়?

তিন ধরনের মডেল বেশি ঝামেলা করে:

  • Per-page pricing: predictable, budget সহজ, scale-এ ব্যয়বহুল।
  • Subscription + overage: অনেক volume-এ সস্তা, কিন্তু usage estimate দরকার।
  • Compute-based pricing: Lambda/container/Chromium memory/cold start-এর bill সরাসরি আপনার।

বর্তমান, 5x এবং 50x traffic-এ actual bill হিসাব করুন। Cost curve headline price-এর চেয়ে বেশি গুরুত্বপূর্ণ।

৪. Output deterministic কি?

Same input থেকে same bytes — CI diff, tax/e-invoice retention, archive hash, legal review — এসব ক্ষেত্রে এটি দরকার।

Browser-based renderer Chromium patch version বদলালে deterministic থাকে না। Native renderer সাধারণত ভালো। সরাসরি প্রশ্ন করুন: “Renderer update হলে output bytes বদলাবে?”

৫. Fonts, CJK এবং RTL কীভাবে handle করে?

Font সমস্যা PDF system-এর সবচেয়ে সাধারণ production surprise। Local market-এ সব ঠিক, তারপর নতুন script দরকার হলে PDF-এ □□□□ দেখা যায়।

জিজ্ঞেস করুন:

  • কোন scripts extra config ছাড়া bundled?
  • Unknown glyph fallback হবে নাকি tofu?
  • Request time-এ custom font দেওয়া যায়?
  • RTL shaping supported?

ভালো উত্তর NotoSans CJK, fallback set এবং unknown glyph behavior পরিষ্কারভাবে বলে।

৬. Compliance profiles কোনগুলো supported?

EU invoice, PDF/A archival, attached XML medical record বা digital signature দরকার হতে পারে? তাহলে native support জিজ্ঞেস করুন। “পরে অন্য tool দিয়ে convert করুন” মানে multi-step pipeline এখন আপনার দায়িত্ব।

ভালো উত্তর সাধারণত flag-এর মতো: { profile: "PDF/A-3b" } অথবা { einvoice: { format: "factur-x", xml: "..." } }.

৭. Rendering stateless? Documents কোথায় যায়?

Stateless rendering-এ request আসে, PDF বের হয়, কিছু store হয় না। Persistence আপনি নিজে করেন। Regulated workloads-এর জন্য এটি ভালো।

Stateful rendering-এ vendor PDF store করে signed URL দেয়। Casual workflow-এ সুবিধাজনক, কিন্তু regulated workflow-এ third party আপনার document copy রাখে।

জিজ্ঞেস করুন কোথায় store হয়, কতদিন থাকে, এবং stateless rendering-এর written guarantee পাওয়া যায় কি না।

৮. Renderer fail করলে কী হয়?

সব renderer কখনো না কখনো fail করে। গুরুত্বপূর্ণ হলো failure কীভাবে দেখা যায়।

  • Structured 4xx/5xx নাকি empty PDF?
  • Retry idempotent?
  • Failed render charge হয়?
  • Status page, webhooks, region-wise p50/p99 metrics আছে?
  • Vendor নিজে synthetic probe চালায়?

এখনই status page খুলুন। detail না থাকলে purchasing-এর পরও transparency এমনই হবে।

gPdf scorecard

#প্রশ্নgPdf উত্তর
1InputJSON DocumentRequest
2Cold start5-20 ms, V8 isolate, browser নেই
3Cost$0/$5/$8/$12 per month; $0.00005/page overage
4Determinismএকই engine version-এ byte-identical
5FontsNotoSans CJK + Latin fallback embedded
6CompliancePDF/A-1b/2b/3b/4 + Factur-X / ZUGFeRD
7Statelessহ্যাঁ, document storage নেই
8FailurePublic status page, structured errors, idempotent

যেখানে gPdf কম উপযুক্ত: input যদি সত্যিই অপরিবর্তনীয় HTML হয়, DocRaptor বা Prince ভালো হতে পারে।

সারাংশ

“সেরা PDF API কোনটি” জিজ্ঞেস করবেন না। এই আট প্রশ্ন করুন, উত্তর score করুন, এবং আপনার workload-এর সঙ্গে মিলিয়ে vendor বাছুন। Invoices, receipts বা structured documents হলে Playground দিয়ে gPdf দ্রুত যাচাই করা যায়।