তুলনা

gPdf বনাম QuestPDF: .NET document generation

QuestPDF C#-এর জন্য শক্তিশালী PDF library; gPdf hosted edge API। Licensing, runtime ownership, template কাজের ধারা, compliance, barcodes এবং কোন boundary-তে কোন product ভালো fit তা তুলনা।

সংক্ষেপ

পছন্দ নির্ভর করে trust boundary-এর ওপর। QuestPDF document generation ও data আপনার .NET process-এর ভেতর রাখে; বিনিময়ে fonts, barcodes, scaling এবং compliance plumbing আপনাকেই সামলাতে হয়। gPdf generation-কে যে কোনো language থেকে callable HTTP API বানায়; বিনিময়ে data third-party renderer-এ যায় এবং uptime dependency আসে। Local control, privacy ও offline operation দরকার হলে QuestPDF; polyglot teams edge-hosted PDF infrastructure ও per-page pricing চাইলে gPdf.

পাশাপাশি

মাপদণ্ড gPdf QuestPDF এগিয়ে
Product boundary
সঠিক সিদ্ধান্ত নির্ভর করে আপনি service কিনতে চান, নাকি rendering code path নিজে own করতে চান।
JSON Render, Template Render এবং E-Invoice Render-এর জন্য hosted edge API. NuGet থেকে install করা local C# / .NET library, application code থেকে call করা হয়. সমান
Primary integration Node, Python, Go, .NET, Ruby, PHP, Java, workers, jobs বা frontend proxies থেকে HTTPS POST. Strong typing, IDE support এবং familiar .NET constructs সহ fluent C# API. সমান
Runtime placement Cloudflare Workers edge renderer; আপনার stack-এ আলাদা PDF service, font setup বা deployment cluster নেই. আপনার .NET app যেখানে চলে, সেখানেই চলে; CPU, memory, native/package dependencies, deployment, monitoring ও scale team-ই own করে. gPdf
Barcode কাজের ধারা Native `barcode` element: 1D, 2D ও GS1 formats (`gs1128`, `sscc`, `gtin8/12/13/14`, `gs1datamatrix`, `gs1qrcode`, Aztec, PDF417, MaxiCode) এবং built-in human-readable text placement. Official docs ZXing.Net integrate করে — NuGet থেকে আলাদা install, SVG render; GS1 Application Identifiers এবং FNC1 framing manual wiring. gPdf
Fonts and multilingual text Service-owned bundled fonts, implicit auto selection, explicit `prefer` / `strict` modes এবং per-script CJK fallback (KR, JP, SC); callers কোনো application-এ font files package করে না. Lato ship করে এবং environment, deployment-directory ও custom fonts fallback chains সহ load করতে পারে — কিন্তু নিজস্ব docs সতর্ক করে যে 'in most cloud deployments, few or no fonts are available.' gPdf
Password & permissions at generation
QuestPDF একই encryption strengths এবং user / owner passwords support করে, কিন্তু render time-এ inline নয়; rendered file-এর উপর post-generation step হিসেবে।
Render request-এর মধ্যেই inline — `settings.security` একই `/api/v1/pdf/render` call-এ AES-128/256 encryption, open ও owner passwords, এবং আটটি permission flags apply করে. আগে generate, তারপর আলাদা Document Operation-এ encrypt — `DocumentOperation.LoadFile(...).Encrypt(new Encryption256Bit { ... }).Save(...)`. gPdf
Template iteration gPdf Studio সেই একই JSON templates design করে যা production `template_id + data` দিয়ে render করে. QuestPDF Companion C# documents-এর জন্য hot-reload preview, hierarchy inspection, coordinate tools এবং source navigation দেয়. সমান
Commercial pricing
QuestPDF pricing 2026-06-02-এ public licensing pages থেকে checked ছিল। High-volume .NET teams-এর license + hosting বনাম gPdf page pricing তুলনা করা উচিত।
Basic ৫ ডলার/মাসে ১,০০,০০০ পৃষ্ঠা অন্তর্ভুক্ত; overage প্রতি পৃষ্ঠা ০.০০০০৫ ডলার থেকে, এবং সব surface-এ একই published per-page math. Community MIT terms-এর অধীনে ১০ লক্ষ ডলার annual revenue-এর নিচে free; perpetual commercial licenses-এ Professional ৯৯৯ ডলার (up to 10 developers) এবং Enterprise ২,৯৯৯ ডলার (organization-wide, developer counting নেই), plus local tax, দুটিতেই one year updates. সমান
Server and deployment fees Public API-এর জন্য server fleet deploy করতে হয় না; usage plan ও pages অনুযায়ী billed. Commercial license terms unlimited projects, servers এবং deployments advertise করে; infrastructure তবু customer-owned. সমান
PDF/A and e-invoice ছয়টি PDF/A profiles (1b/2b/3b/4/2u/3u) plus PDF/UA-1, এবং hosted Factur-X / ZUGFeRD endpoint যা EN 16931 CII XML PDF/A-3b-এ package করে, server-side validation ও EU / global data residency সহ. Code-এ শক্তিশালী PDF/A, PDF/UA-1 এবং ZUGFeRD 2.1 / Factur-X support; veraPDF ও Mustang validation আপনি নিজে wire করেন. সমান
Where document data goes
QuestPDF data process-এর ভেতর রাখে; gPdf transmit করে কিন্তু retain করে না — operational logs শুধু HTTP status ও duration রাখে, request bodies নয়।
Public API payload transmit করে, কিন্তু renderer zero-retention — request JSON Cloudflare Workers isolate-এ শুধু render চলাকালীন থাকে (~4 ms typical), store, log বা train হয় না। EU / global data residency এবং on-prem / private deployment exposure আরও কমাতে বা বন্ধ করতে পারে. Bytes in-process তৈরি হয়; document data third party-এর কাছে trust boundary cross করে না. সমান
Offline / air-gapped operation
QuestPDF zero setup-এ offline চলে; gPdf enterprise private deployment দিয়ে একই জায়গায় পৌঁছায়.
Public API-তে network access দরকার; enterprise on-prem / private deployment renderer আপনার নিজের infrastructure-এ offline বা air-gapped operation-এর জন্য চালাতে পারে. Local চলে, license key নেই, activation server নেই, runtime network calls নেই — license type honor-system basis-এ এক line code দিয়ে set হয়. সমান
Existing PDF operations Structured requests থেকে নতুন PDFs generate করে; existing files load, merge, decrypt বা edit করে না. Existing PDFs-এ Document Operations: merge, page reorder / reverse / filter, overlays, 40/128/256-bit encrypt ও decrypt, attachments, XMP metadata, web linearization. QuestPDF
Charts and data visualization
দুটিই data থেকে plot বানাতে charting library-এর উপর নির্ভর করে; QuestPDF সেটি in-document render করে, gPdf আপনার তৈরি SVG / PNG place করে। Built-in charting, maps ও canvas-এ QuestPDF এগিয়ে।
`path` element (SVG path data) এবং shapes দিয়ে vector art draw করে, অথবা যে কোনো charting library থেকে তৈরি SVG / PNG chart embed করে — কিন্তু built-in charting engine, maps বা canvas API নেই. First-class chart integrations (ScottPlot, LiveCharts, Microcharts), Mapbox maps, এবং custom graphics-এর জন্য SkiaSharp canvas API. QuestPDF
Best default use case Teams-এর মধ্যে shared production business documents: labels, invoices, receipts, statements, tickets এবং e-invoices. C# applications যেগুলো full code ownership ও runtime service dependency ছাড়া local document generation চায়. সমান

কখন কোনটা বাছবেন

gPdf বাছুন যখন
  • PDF generation একাধিক services বা languages-এর shared infrastructure, এক .NET application-এর feature নয়।
  • আপনি PDF rendering, font management, barcode geometry এবং regional scaling application stack থেকে সরাতে চান।
  • Team চায় templates `template_id + data` হিসেবে বদলাক, C# code deployments হিসেবে নয়।
  • Warehouses, customers বা backend jobs-এর কাছে edge rendering দরকার, প্রতিটি region-এ .NET PDF service deploy না করে।
  • প্রথম production render-এর আগে commercial license procurement নয়, published per-page price চান।
QuestPDF বাছুন যখন
  • Product .NET-first এবং C# code document layout-এর স্বাভাবিক সত্যের উৎস.
  • Document data আপনার perimeter-এর ভেতরেই থাকতে হবে, এবং enterprise private gPdf deployment আলোচনায় নেই।
  • Private render deployment setup না করেই out-of-the-box offline বা air-gapped generation দরকার।
  • Generation latency-critical synchronous path-এ আছে, যেখানে in-process call যে কোনো network round-trip-এর চেয়ে ভালো।
  • Existing PDFs-এ একই library-র মধ্যে operations দরকার — merge, page extraction, overlays, decryption বা attachments.
  • Document-এর ভেতর charts, maps বা custom SkiaSharp graphics render করেন (ScottPlot, LiveCharts, Microcharts, Mapbox).
  • আপনি Community MIT terms-এর eligible, অথবা one-time perpetual license চান, এবং renderer locally operate করা burden নয়।
সক্ষমতা

gPdf হলো high-volume ইনভয়েস PDF, ডকুমেন্ট, শিপিং লেবেল, বারকোড, PDF/A এবং e-invoice workflow-এর জন্য তৈরি edge-native JSON-to-PDF API। Global edge scale-এ মিলিসেকেন্ড-শ্রেণীর PDF rendering — predictable, industrial-grade document generation-এর জন্য অপ্টিমাইজড। Infrastructure-level pricing, এমন কম খরচে যাতে নিজস্ব PDF infrastructure তৈরি ও চালানোর বিকল্প হিসেবে ভাবা যায়।

সক্ষমতা

পণ্যের সীমানা যখন C#, QuestPDF শক্তিশালী পছন্দ

QuestPDF-কে সম্মান দিয়ে তুলনা করা উচিত। এটি C# developers-এর জন্য modern PDF generation library: fluent API, strong typing, বড় documentation surface, preview/debugging-এর জন্য Companion App, এবং PDF SDK বাজারে অস্বাভাবিকভাবে পরিষ্কার licensing model.

Product question “কে PDF বানাতে পারে?” নয়। দুজনেই পারে। দরকারি প্রশ্ন হলো PDF boundary কোথায় থাকবে: এমন .NET application-এর ভেতর যা layout, bytes ও lifecycle own করে, নাকি এমন infrastructure service-এ যা বহু products ও languages call করে।

দ্রুত সিদ্ধান্ত নেওয়ার গাইড

  • QuestPDF বেছে নিন যখন C# document-এর সত্যের উৎস, app offline চলতে হবে, অথবা existing PDFs-এ local operations দরকার।
  • gPdf বেছে নিন যখন এক PDF layer Node, Python, Go, .NET, jobs ও regional systems-কে একই HTTP API দিয়ে serve করবে।
  • gPdf বেছে নিন যখন layout changes template revisions হওয়া উচিত, C# rebuilds ও service redeploys নয়।

একই ধরনের নথি, কিন্তু মালিকানার মডেল আলাদা

QuestPDF-এর সঙ্গে application PDF generation own করে — এটা সত্যিই বড় শক্তি: C# domain model-এর পাশে থাকে, locally run/debug করা যায়, এবং runtime-এ external API call নেই।

Trade-off হলো production surface-এর বাকি অংশও আপনার team own করে:

  • Rendering-এর CPU ও memory.
  • প্রতিটি deployment environment-এ font discovery ও fallback.
  • Barcode library integration ও print QA.
  • Charting বা custom graphics integrations-এর native package ও deployment concerns.
  • Monitoring, retries ও failure handling.
  • Users বা warehouses global হলে regional deployment.
  • Document layout বদলালেই rollouts.

gPdf-এ সেই surface বাইরে সরে যায়: application DocumentRequest বা template_id + data পাঠায়, আর service renderer, edge runtime, fonts, barcode primitives, PDF/A output এবং e-invoice packaging own করে। প্রতিটি detail C#-এ চাইলে এটি কম আকর্ষণীয়; PDF generation যদি যে কোনো stack থেকে callable utility layer হওয়া উচিত, তখন বেশি আকর্ষণীয়।

Hosted API-কে যে তিনটি সমঝোতা খোলাখুলি বলতে হয়

বেশিরভাগ “library vs API” pitch সেই তিনটি প্রশ্ন এড়িয়ে যায় যা .NET architect প্রথমে করবে। Fair comparison সেগুলো খোলাখুলি বলে।

1. Document data কোথায় যায়। এই page invoices, statements ও e-invoices নিয়ে — অর্থাৎ names, addresses, tax IDs ও amounts-ভরা documents. QuestPDF-এ bytes আপনার process-এর ভেতরে তৈরি হয় এবং বাইরে যায় না। Public gPdf API payload renderer-এ transmit করে, কিন্তু renderer zero-retention: request JSON Cloudflare Workers V8 isolate-এ শুধু render-এর সময় থাকে (~4 ms typical), response complete হলে release হয় — store, log, sample বা train করা হয় না; operational logs শুধু HTTP status ও duration রাখে (security, DPA). EU / global data-residency selection এবং enterprise on-prem / private deployment exposure আরও কমাতে বা বন্ধ করতে পারে। তবু zero setup-এ generation in-process রাখা finance বা public-sector team-এর জন্য legitimate, কখনও decisive, কারণ হতে পারে QuestPDF বেছে নেওয়ার।

2. Failure mode। Library-র কোনো third party down হতে পারে না; generation fail করলে সেটা আপনার own infrastructure-এ। Hosted API availability dependency যোগ করে, যা আপনি control করেন না। gPdf adopt করার সঠিক পথ হলো render calls-কে অন্য external call-এর মতো treat করা — timeout, retry, queue, এবং ideally degraded-mode fallback. Document generation যদি critical synchronous path-এ থাকে, “নিজে operate করা” বনাম “vendor uptime-এর উপর depend করা” সরাসরি মাপতে হবে।

3. Latency profile। In-process generation network ছাড়া function call. Hosted call network round-trip. Batch ও async jobs-এ এটা সাধারণত noise. কিন্তু “user clicks, PDF এখনই আসতে হবে” হলে in-process structurally faster — gPdf edge PoPs hop ছোট করে, তবু TLS plus round-trip থাকে; QuestPDF method call.

এই কারণগুলো gPdf-কে wrong choice বানায় না; এগুলো define করে কখন gPdf সঠিক পছন্দ — যখন document data process ছাড়তে পারে, flow network hop tolerate করে, এবং team render fleet operate করার বদলে vendor uptime-এর উপর depend করতে রাজি।

লাইসেন্সিং ও দামের মডেল

QuestPDF public licensing page বলছে commercial license শুধু ১০ লক্ষ ডলার annual gross revenue-এর বেশি company-এর জন্য required. Community tier eligible individuals, open-source projects, non-profits এবং সেই revenue threshold-এর নিচের company-এর জন্য MIT terms-এর অধীনে free. একই public page-এ দুইটি perpetual commercial tier আছে: Professional ৯৯৯ ডলার plus local tax, up to 10 developers; এবং Enterprise ২,৯৯৯ ডলার plus local tax, পুরো organization-এর জন্য developer counting ছাড়া। দুটিতেই one year updates এবং unlimited projects, servers ও deployments অন্তর্ভুক্ত; received last version-এর license expire করে না।

Enforcement model-ও unusually light. License এক line-এ set হয় — QuestPDF.Settings.License = LicenseType.Community; — license key নেই, activation server নেই, এবং QuestPDF configuration page অনুযায়ী network calls নেই ও data machine ছাড়ে না। এটি honor-system model: eligibility অনুযায়ী tier আপনি বেছে নেন। কোনো per-document vendor bill নেই, এবং paid license fully offline-ও চলে।

gPdf rendering service-কে directly price করে। Public Basic plan ৫ ডলার/মাস থেকে শুরু, ১,০০,০০০ পৃষ্ঠা included; overage প্রতি পৃষ্ঠা ০.০০০০৫ ডলার থেকে। এটি vendor bill, কিন্তু PDF generation operate করার আলাদা project সরিয়ে দেয়: render cluster নেই, NuGet deployment path নেই, regional warm pool নেই, per-app font package নেই, patch করার PDF service নেই।

তাই cost comparison “৯৯৯ ডলার vs ৫ ডলার” নয় — license ছোট line item. আসল comparison:

QuestPDF total = license (one-time) + your hosting + your engineer-time + on-call
gPdf total     = page bill (infrastructure, fonts, scaling, and edge included)

Public per-page math-এ gPdf overage প্রতি ১,০০০ পৃষ্ঠায় ০.০৫ ডলার (১০ লক্ষ পৃষ্ঠায় ৫০ ডলার, ১ কোটি পৃষ্ঠায় ৫০০ ডলার)। One-time ২,৯৯৯ ডলার Enterprise license সেই bill-এর সঙ্গে প্রায় ৬ কোটি page-এ break even করে — আর এতে QuestPDF hosting ও engineer-months ধরা হয়নি, যা real crossover-কে gPdf-এর favor-এ আরও দূরে ঠেলে দেয় যদি আপনার render infrastructure আগে থেকেই সস্তা না থাকে। Rule of thumb: library ব্যবহার করতে render service build ও staff করতে হলে gPdf সাধারণত per-page bill license ধরার অনেক আগেই total cost-এ জেতে; infrastructure already exists ও প্রায় free হলে scale-এ perpetual license জেতে।

ডেভেলপমেন্ট ওয়ার্কফ্লো: Fluent C# বনাম টেমপ্লেট

Developers document shape own করলে QuestPDF-এর fluent API ভালো fit. Strong typing, method chains, reusable C# components, IDE refactors ও Companion App সবই অর্থবহ যখন PDF application codebase-এর অংশ।

gPdf অন্য কাজের ধারার জন্য fit। Developers JSON directly author করতে পারেন, কিন্তু production systems সাধারণত templates-এর দিকে যায়। Designer, operator বা engineer gPdf Studio-তে layout adjust করেন। Approved layout template হয়, এবং backend template_id + data দিয়ে render করতে থাকে।

Document প্রায়ই বদলালে এই পার্থক্য জরুরি। Carrier label, invoice, packing slip বা statement layout বদলালে gPdf runtime stable রেখে শুধু template move করতে পারে। QuestPDF-এ layout C# code, তাই normal path হলো code change, test, build, deploy, rollback plan.

কোনো কাজের ধারা universally better নয়: QuestPDF document-as-code চাই এমন C# developers-এর জন্য optimize করে; gPdf systems-এর মধ্যে shared operational templates-এর জন্য।

কমপ্লায়েন্স: দুটো পণ্যই গুরুত্ব সহকারে নিয়েছে

এটা এমন comparison নয় যেখানে gPdf বলে competitor compliance features-এ দুর্বল। QuestPDF-এর current public material শক্ত standards support দেখায়, যার মধ্যে PDF/A, PDF/UA-1 এবং EN 16931 e-invoicing আছে, ZUGFeRD 2.1 / Factur-X example-এর মাধ্যমে যা UN/CEFACT Cross Industry Invoice (CII) standard-এ built. Example PdfA = true set করে, factur-x.xml payload AddAttachment() দিয়ে embed করে, XMP metadata দিয়ে document extend করে, এবং veraPDF (PDF/A-3b-এর জন্য) ও Mustang Project (ZUGFeRD-এর জন্য) দিয়ে validate করে। এটি complete, honest recipe — এবং আপনার pipeline প্রতিটি step own করে।

gPdf একই standards API contract হিসেবে package করে। JSON Render settings.profile দিয়ে ছয়টি PDF/A profiles (1b, 2b, 3b, 4, 2u, 3u) plus PDF/UA-1 expose করে, Template Render একই document model reuse করে, এবং E-Invoice Render dedicated POST /api/v1/e-invoice/render endpoint দেয় যা embedded EN 16931 CII XML সহ Factur-X / ZUGFeRD PDF/A-3b packages তৈরি করে। QuestPDF recipe থেকে পার্থক্য হলো service আপনার জন্য কী করে: gPdf server-side PDF/A-3b ও e-invoice validation চালায়, synchronous inline বা polled object delivery support করে, এবং EU বা global data residency request settings হিসেবে দেয়, এমন ধাপ হিসেবে নয় যা আপনাকে assemble ও operate করতে হবে। Validation নিজের .NET pipeline-এ রাখতে হলে QuestPDF fit; বহু systems-এর shared hosted contract করতে হলে gPdf fit।

ফন্ট ও বারকোড: আসল তুলনা ইন্টিগ্রেশন খরচে

QuestPDF-এর font model capable. Default-এ Lato 2.015 ship করে, system ও deployment-directory fonts auto-load করে, FontManager দিয়ে custom fonts register করতে দেয়, এবং fallback chains support করে। এতে developers control পান। কিন্তু একই documentation catch-ও স্পষ্ট করে: “in most cloud deployments, few or no fonts are available, which may lead to unexpected results,” এবং environment fonts disable করে প্রয়োজনীয় fonts explicitly register করতে বলে। অর্থাৎ container বা serverless target-এ font environment plan, ship ও test করা আপনার কাজ — missing glyph placeholder হবে বা CheckIfAllTextGlyphsAreAvailable enable থাকলে exception throw করবে।

gPdf fonts-কে service boundary-র অংশ বানায়। Renderer multi-script set bundle করে — Latin, Greek, Cyrillic, Arabic, Hebrew, Bengali, Tamil, Thai, Vietnamese, monospace এবং CJK with per-script fallback to Noto KR / JP / SC. Silent font choices implicit auto selection দিয়ে resolve হয়, explicit choices prefer বা strict দিয়ে। Callers CJK font ship করে না, .NET app-এ Noto assets register করে না, বা প্রতিটি deployment target-এ fallback tune করে না। তারা data পাঠায়; renderer font environment own করে, সব region-এ একই।

Barcode comparison-ও একই রকম। QuestPDF barcode docs ZXing.Net-কে vector SVG হিসেবে render করার solid approach দেখায়, এবং স্পষ্ট করে যে ZXing.Net QuestPDF package-এ included নয় — NuGet থেকে install করে wire করতে হয়:

// QuestPDF: add the separate ZXing.Net package, encode, render to SVG, embed.
//   dotnet add package ZXing.Net
var writer = new ZXing.BarcodeWriterSvg {
    Format  = ZXing.BarcodeFormat.CODE_128,
    Options = new ZXing.Common.EncodingOptions { Width = 320, Height = 80 }
};
string svg = writer.Write("INV-2026-001").Content;
container.Svg(svg);
// GS1-128 with Application Identifiers and FNC1 framing is hand-wired on top.

gPdf-এ barcode generation first-class schema element. Request format, content, physical size এবং optional human-readable line declare করে — আর GS1 formats native, তাই Application Identifiers সরাসরি content-এ যায়:

{
  "type": "barcode",
  "format": "gs1_128",
  "content": "(01)00012345678905(21)SN12345",
  "x": 12, "y": 60, "width": 80, "height": 18,
  "barcode_text": { "enabled": true, "position": "bottom" }
}

একটি .NET app-এর জন্য ZXing.Net install করে output test করা সহজ হতে পারে। কিন্তু বহু services ও templates-এর জন্য — বিশেষত logistics ও retail workloads যেখানে GS1-128, SSCC, GTIN, GS1 DataMatrix বা GS1 QR with human-readable interpretation line দরকার — barcode behavior document API-তে রাখা প্রতিটি service-এ একই ZXing wiring repeat করার চেয়ে maintainable.

যেখানে QuestPDF স্পষ্টভাবে এগিয়ে

Offline চলা, document data perimeter-এর ভেতর রাখা (উপরে covered), এবং PDF code itself product-এর অংশ হলে — team rendering path inspect, extend বা own করতে চাইলে — এর বাইরে QuestPDF-এর দুইটি capability area gPdf-এর scope-এর বাইরে থাকে:

  • Existing PDFs-এ operations. QuestPDF existing files load করে merge, select / reorder / reverse / filter pages, overlays apply, attachments add, XMP metadata set, web delivery-এর জন্য linearize, এবং 40/128/256-bit security দিয়ে encrypt ও decrypt করতে পারে। gPdf নিজের generated PDFs password-protect ও permission-gate করতে পারে, কিন্তু যেসব file সে create করেনি সেগুলো open, merge বা decrypt করে না।
  • Charts, maps ও custom graphics. QuestPDF charting libraries (ScottPlot, LiveCharts, Microcharts) integrate করে, Mapbox maps embed করে, এবং arbitrary 2D drawing-এর জন্য SkiaSharp canvas expose করে। gPdf path element (SVG path data) দিয়ে vector art draw করতে পারে বা upstream produced SVG / PNG chart embed করতে পারে, কিন্তু built-in charting engine, maps বা canvas নেই — তাই data-driven charting central হলে tooling QuestPDF-এর সঙ্গে থাকে।

যেখানে gPdf স্পষ্টভাবে এগিয়ে

gPdf জেতে যখন organization চায় না প্রতিটি product team নিজের PDF service own করুক — polyglot stacks, global কাজের ধারা, এবং ERP / OMS / WMS / ecommerce / fintech / ticketing systems structured data থেকে documents render করে, templates code থেকে independently বদলায়। এসব environment-এ local library অনেক সময় cheap শুরু হয়, পরে fleet হয়: language-পিছু service, region-পিছু deployment path, container-পিছু font plan, team-পিছু barcode regressions. gPdf সেই fleet-কে এক HTTP contract-এ নামিয়ে আনে।

Serverless boundary সবচেয়ে পরিষ্কার করে। AWS Lambda, Cloud Run বা Azure Functions-এ QuestPDF এখনও application-এর ভেতর চলে — আপনার team .NET runtime, fonts, native dependencies এবং peak PDF work-এর জন্য যথেষ্ট CPU / memory package করে, cold starts own করে। gPdf already render service: function edge-এ ছোট template_id + data request POST করে এবং PDF bytes পায়, warm করার renderer বা per-region worker scale করার দরকার নেই।

মাইগ্রেশনের রূপ

QuestPDF থেকে gPdf migration line-for-line rewrite নয়। এটি boundary change: PDF build করা C# code হয় JSON document request, নয় published template.

আগে / পরে — C#-এর document-build call এক HTTP POST-এ সিমটে যায় (খুলতে ক্লিক করুন)
- // Before: generate the PDF inside a .NET application.
- Document.Create(container =>
- {
-     container.Page(page =>
-     {
-         page.Size(PageSizes.A4);
-         page.Margin(30);
-         page.Header().Text("Invoice").FontSize(24).SemiBold();
-         page.Content().Column(column =>
-         {
-             column.Item().Text($"Invoice number: {invoice.Number}");
-             column.Item().Text($"Total: {invoice.Total:C}");
-         });
-     });
- })
- .GeneratePdf("invoice.pdf");
+
+ // After: render through the shared gPdf template from C#.
+ using System.Net.Http.Headers;
+ using System.Net.Http.Json;
+
+ using var client = new HttpClient();
+ client.DefaultRequestHeaders.Authorization =
+     new AuthenticationHeaderValue("Bearer", key);
+
+ var response = await client.PostAsJsonAsync(
+     "https://api.gpdf.com/api/v1/template-render",
+     new {
+         template_id = "invoice-v2",
+         data = new {
+             invoice_number = invoice.Number,
+             total = invoice.Total,
+             currency = invoice.Currency
+         }
+     });
+
+ response.EnsureSuccessStatusCode();
+ byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();

Boundary move হওয়ার পর layout changes application deployments না হয়ে template revisions হতে পারে। Application business data ও কাজের ধারার সিদ্ধান্ত own করেই থাকে; gPdf rendering own করে।

দাম ও উৎস সম্পর্কিত নোট

এই page-এর QuestPDF information 2026-06-02-এ official QuestPDF sources থেকে checked ছিল: License and Pricing, License configuration, Features Overview, Companion App features, Barcodes, Font management, এবং ZUGFeRD example. Pricing ও feature pages বদলাতে পারে; procurement teams-এর buying decision-এর আগে vendor page আবার check করা উচিত। QuestPDF ও related marks তাদের respective owners-এর, এবং এই comparison তাদের endorsed নয়।

সংশ্লিষ্ট PDF generation দৃশ্যপট

QuestPDF ও gPdf তুলনা করলে আগে trust boundary ঠিক করুন। .NET process-এর ভেতরেই data থাকতে হবে, offline চলতে হবে, বা existing PDF operation দরকার হলে QuestPDF শক্তিশালী। কিন্তু shared service দরকার হলে JSON to PDF API, invoice PDF, shipping label এবং GS1 barcode API দিয়ে gPdf মূল্যায়ন করুন। Compliance-heavy output-এর জন্য PDF/A API, Factur-X APIZUGFeRD API দেখুন।

FAQ

gPdf কি QuestPDF replace করে?

না। Structured business documents-এর জন্য PDF generation service operate করার দরকার gPdf replace করে। PDF application-এর ভেতর generate হওয়া উচিত হলে QuestPDF এখনও শক্তিশালী local C# library.

QuestPDF কি free?

QuestPDF public licensing page বলছে Community tier eligible individuals, open-source projects, non-profits এবং ১০ লক্ষ ডলার annual gross revenue-এর নিচের company-এর জন্য MIT terms-এর অধীনে free. Threshold-এর ওপরে company-এর perpetual commercial license দরকার: up to 10 developers-এর জন্য Professional ৯৯৯ ডলার plus local tax, অথবা organization-wide Enterprise ২,৯৯৯ ডলার plus local tax, প্রতিটিতে one year updates included.

gPdf কি QuestPDF-এর মতো charts বা maps generate করতে পারে?

Built-in engine হিসেবে নয়। QuestPDF charting libraries (ScottPlot, LiveCharts, Microcharts), Mapbox maps এবং SkiaSharp canvas integrate করে, যা in-document render হয়। gPdf এখনও path element (SVG path data accept করে) ও shapes দিয়ে vector charts draw করতে পারে, অথবা কোনো charting library থেকে তৈরি SVG / PNG image হিসেবে embed করতে পারে। পার্থক্য হলো QuestPDF chart compute ও render করে in-process; gPdf-এ আপনি chart art produce করেন এবং gPdf সেটি place করে। Data-driven charting বা maps document-এর central হলে QuestPDF বেশি মানানসই।

কোন product cheaper?

Boundary-এর উপর নির্ভর করে। Community terms-এর eligible .NET teams বা already render infrastructure operate করা teams-এর জন্য QuestPDF cheaper হতে পারে। Alternative যদি products বা regions জুড়ে PDF service build, host ও maintain করা হয়, gPdf cheaper হতে পারে।

gPdf কি আমার document data store বা log করে?

না। আপনি যে JSON পাঠান এবং gPdf যে PDF ফেরত দেয়, তা store হয় না। প্রতিটি request single Cloudflare Workers V8 isolate-এ render হয়, শুধু render-এর সময় memory-তে থাকে — typically about 4 ms — এবং response stream complete হলে release হয়; gPdf DocumentRequest content retain, log, sample বা train করে না। Operational logs শুধু HTTP status ও duration 30 days রাখে, request bodies থাকে না। security policy, privacy policy এবং DPA দেখুন। যেসব workload কোনো data transmit করতে পারে না, on-prem / private deployment data আপনার perimeter-এর ভেতর রাখে।

QuestPDF কি internet access ছাড়া চলতে পারে?

হ্যাঁ। QuestPDF license configuration page বলছে license key বা activation server নেই, এবং computations locally perform হয়। QuestPDF বেছে নেওয়ার সবচেয়ে পরিষ্কার কারণগুলোর একটি এটি।

gPdf কি arbitrary C# QuestPDF layouts render করতে পারে?

না। gPdf C# layout code execute করে না। Migration মানে document shape-কে gPdf JSON request বা saved gPdf template-এ convert করা।