Порівняння

gPdf vs QuestPDF для генерації документів у .NET

QuestPDF — сильна C# бібліотека для PDF. gPdf — хостинговий API на edge. Порівнюємо ліцензування, середовище виконання, роботу з шаблонами, вимоги відповідності, штрихкоди й сценарії вибору.

Коротко

Обирайте продукт за вашою межею довіри. QuestPDF тримає генерацію й дані документа всередині .NET-процесу, але ви самі відповідаєте за шрифти, штрихкоди, масштабування й відповідність. gPdf перетворює генерацію на один HTTP-виклик із будь-якої мови, але дані передаються сторонньому рендереру й залежать від його доступності. .NET-застосунок, якому важливі локальний контроль, приватність і автономна робота, зазвичай обирає QuestPDF; команди з кількома мовами й сервісами, яким потрібна PDF-інфраструктура на edge з оплатою за сторінки, зазвичай обирають gPdf.

Поруч

Критерій gPdf QuestPDF Перевага
Межа продукту
Правильний вибір залежить від того, чи ви хочете купити сервіс, чи володіти шляхом рендера в коді.
Хостинговий API на edge для JSON Render, Template Render і E-Invoice Render. Локальна C# / .NET бібліотека, встановлена з NuGet і викликана з коду застосунку. Нарівно
Основна інтеграція HTTPS POST із Node, Python, Go, .NET, Ruby, PHP, Java, воркерів, фонових задач або проксі у вебінтерфейсі. Fluent C# API зі строгою типізацією, підтримкою IDE та знайомими .NET-конструкціями. Нарівно
Розміщення середовища виконання Рендерер Cloudflare Workers на edge; у вашому стеку немає PDF-сервісу, налаштування шрифтів або кластера розгортання. Працює там, де працює ваш .NET-застосунок; команда володіє CPU, пам'яттю, нативними залежностями й пакетами, розгортанням, моніторингом і масштабуванням. gPdf
Робота зі штрихкодами Нативний елемент `barcode` для 1D, 2D і форматів GS1 (`gs1128`, `sscc`, `gtin8/12/13/14`, `gs1datamatrix`, `gs1qrcode`, Aztec, PDF417, MaxiCode) із вбудованим розміщенням читабельного рядка. Офіційна документація інтегрує ZXing.Net — окремо встановлюється з NuGet і рендериться в SVG; ідентифікатори застосування GS1 і рамкування FNC1 потрібно з'єднувати вручну. gPdf
Шрифти й багатомовний текст Сервіс володіє вбудованими шрифтами з неявним автоматичним вибором, режимами `prefer` / `strict` і CJK-підстановкою за писемністю (KR, JP, SC); викликачі не пакують файли шрифтів у застосунки. Постачає Lato і може завантажувати шрифти із середовища, каталогу розгортання та власних файлів із ланцюжками підстановки, але власна документація попереджає, що в більшості хмарних розгортань доступно мало шрифтів або їх немає. gPdf
Пароль і права під час генерації
QuestPDF підтримує ті самі рівні шифрування й паролі користувача / власника, але як крок після генерації над уже відрендереним файлом, а не прямо під час рендера.
Задаються прямо в запиті на рендер — `settings.security` застосовує шифрування AES-128/256, пароль відкриття, пароль власника та вісім прапорців дозволів у тому самому виклику `/api/v1/pdf/render`. Спочатку генерує документ, потім шифрує окремою Document Operation — `DocumentOperation.LoadFile(...).Encrypt(new Encryption256Bit { ... }).Save(...)`. gPdf
Ітерації шаблону gPdf Studio проєктує ті самі JSON-шаблони, які бойові системи рендерять через `template_id + data`. QuestPDF Companion дає попередній перегляд із гарячим перезавантаженням, інспекцію ієрархії, координатні інструменти й перехід до вихідного коду C# документів. Нарівно
Комерційна ціна
Ціни QuestPDF перевірено за публічними сторінками ліцензування 2026-06-02. .NET-командам із великим обсягом варто порівняти ліцензію + хостинг із ціною gPdf за сторінку.
Basic за 5 USD/міс. включає 100 000 сторінок; перевищення ліміту — від 0,00005 USD за сторінку з тією самою публічною математикою за сторінку на всіх поверхнях. Безкоштовно за умовами Community MIT для компаній із річним валовим доходом нижче 1 млн USD; постійні комерційні ліцензії: Professional за 999 USD (до 10 розробників) і Enterprise за 2 999 USD (на всю організацію без підрахунку розробників), плюс місцеві податки, кожна з одним роком оновлень. Нарівно
Сервери й витрати на розгортання Для публічного API не потрібно розгортати парк серверів; використання оплачується за планом і сторінками. Умови комерційної ліцензії декларують необмежену кількість проєктів, серверів і розгортань; інфраструктура все одно залишається на стороні клієнта. Нарівно
PDF/A та електронні рахунки Шість профілів PDF/A (1b/2b/3b/4/2u/3u) плюс PDF/UA-1 і хостинговий ендпоінт Factur-X / ZUGFeRD з EN 16931 CII XML у PDF/A-3b, серверною валідацією та резидентністю даних в ЄС або глобально. Сильна підтримка PDF/A, PDF/UA-1 і ZUGFeRD 2.1 / Factur-X у коді; валідацію veraPDF і Mustang ви підключаєте самі. Нарівно
Куди йдуть дані документа
QuestPDF тримає дані всередині процесу; gPdf передає їх, але нічого не зберігає — операційні журнали містять лише HTTP-статус і тривалість, ніколи не тіла запитів.
Публічний API передає тіло запиту, але рендерер нічого не зберігає: JSON запиту живе в ізоляті Cloudflare Workers лише під час рендера (зазвичай близько 4 мс), ніколи не зберігається, не логується й не використовується для навчання моделей. Резидентність даних в ЄС або глобально та локальне / приватне розгортання додатково звужують або закривають зовнішню межу. Байти створюються всередині процесу; дані документа не перетинають вашу межу довіри до третьої сторони. Нарівно
Автономна / ізольована від мережі робота
QuestPDF працює автономно без підготовки; gPdf доходить до тієї самої межі через приватне enterprise-розгортання.
Публічний API потребує мережі; локальне / приватне розгортання Enterprise запускає рендерер у вашій інфраструктурі для автономного або ізольованого від мережі режиму. Працює локально без ключа ліцензії, сервера активації та мережевих викликів під час виконання — тип ліцензії задається одним рядком коду на основі моделі довіри. Нарівно
Операції з наявними PDF Створює нові PDF зі структурованих запитів; не завантажує, не об'єднує, не розшифровує й не редагує наявні файли. Document Operations над наявними PDF: об'єднання, зміна / зворотний порядок / фільтрація сторінок, накладання, шифрування й розшифрування 40/128/256-bit, вкладення, XMP-метадані та лінеаризація для веб-доставки. QuestPDF
Графіки та візуалізація даних
Обидва підходи спираються на бібліотеку графіків, щоб перетворити дані на діаграму; QuestPDF рендерить її в документі, gPdf розміщує створений вами SVG / PNG. QuestPDF сильніший у вбудованих графіках, картах і canvas.
Малює векторну графіку через елемент `path` (дані SVG path) і фігури або вбудовує SVG / PNG графік, створений будь-якою бібліотекою візуалізації, але не має вбудованого рушія графіків, карт або canvas API. Повноцінні інтеграції з бібліотеками графіків (ScottPlot, LiveCharts, Microcharts), карти Mapbox і SkiaSharp canvas API для власної графіки. QuestPDF
Найкращий базовий сценарій Бойові бізнес-документи, спільні для кількох команд: транспортні етикетки, рахунки, квитанції, виписки, квитки та електронні рахунки. C# застосунки, яким потрібна локальна генерація документів із повним володінням кодом і без залежності від сервісу під час виконання. Нарівно

Що коли обрати

Обирайте gPdf, коли
  • Генерація PDF — це інфраструктура, спільна для кількох сервісів або мов, а не функція одного .NET-застосунку.
  • Ви хочете прибрати рендеринг PDF, керування шрифтами, геометрію штрихкодів і регіональне масштабування зі стеку застосунку.
  • Команда хоче змінювати шаблони як `template_id + data`, а не через деплої C# коду.
  • Потрібен рендеринг на edge поруч зі складами, клієнтами або бекенд-задачами без розгортання .NET PDF-сервісу в кожному регіоні.
  • Ви віддаєте перевагу публічній ціні за сторінку й не хочете закупівлю комерційної ліцензії до першого бойового рендера.
Обирайте QuestPDF, коли
  • Ваш продукт передусім .NET, і C# код є природним джерелом істини для макета документа.
  • Дані документа мають залишатися всередині вашого периметра, а приватне enterprise-розгортання gPdf не розглядається.
  • Потрібна автономна або ізольована від мережі генерація з коробки, без налаштування приватного розгортання рендера.
  • Генерація стоїть на критичному до затримки синхронному шляху, де виклик усередині процесу швидший за будь-який мережевий обмін.
  • Потрібні операції з наявними PDF — об'єднання, витяг сторінок, накладання, розшифрування або вкладення — у тій самій бібліотеці.
  • Ви рендерите графіки, карти або власну графіку SkiaSharp усередині документа (ScottPlot, LiveCharts, Microcharts, Mapbox).
  • Ви підпадаєте під умови Community MIT або хочете разову постійну ліцензію, а локальна експлуатація рендерера не є тягарем.
Можливості

gPdf — це API JSON у PDF на edge для великих обсягів PDF рахунків, документів, транспортних етикеток, штрихкодів, PDF/A та виведення електронних рахунків. PDF-рендеринг мілісекундного класу в глобальній edge-мережі — оптимізований для передбачуваного створення промислових документів. Ціни рівня інфраструктури, достатньо низькі, щоб замінити побудову й експлуатацію власної PDF-інфраструктури.

Можливості

QuestPDF сильний, коли C# є межею продукту

QuestPDF заслуговує на поважне порівняння. Це сучасна бібліотека генерації PDF для C# розробників, із fluent API, строгою типізацією, великою документацією, Companion App для попереднього перегляду й налагодження та моделлю ліцензування, яка незвично прозора для PDF SDK.

Питання не в тому, “хто може створити PDF?” Обидва можуть. Корисне питання — де має жити PDF-межа: всередині .NET-застосунку, який володіє макетом, байтами й життєвим циклом, чи як інфраструктурний сервіс, який викликають кілька продуктів і мов.

Швидкий орієнтир для вибору

  • Обирайте QuestPDF, коли C# є джерелом істини для документа, застосунок має працювати автономно або потрібні локальні операції з наявними PDF.
  • Обирайте gPdf, коли один PDF-шар має обслуговувати Node, Python, Go, .NET, фонові задачі й регіональні системи через той самий HTTP API.
  • Обирайте gPdf, коли зміни макета мають бути ревізіями шаблону, а не перебудовою C# коду й повторним розгортанням сервісу.

Та сама сім’я документів, інша модель володіння

З QuestPDF застосунок володіє генерацією PDF — це справжня перевага: C# залишається поруч із доменною моделлю, усе запускається й налагоджується локально, без виклику зовнішнього API під час виконання.

Компроміс у тому, що ваша команда також володіє рештою бойового контуру:

  • CPU і пам’яттю для рендера.
  • Пошуком шрифтів і підстановкою в кожному середовищі розгортання.
  • Інтеграцією бібліотеки штрихкодів і перевіркою друку.
  • Нативними пакетами й питаннями розгортання для графіків або власної графіки.
  • Моніторингом, повторними спробами й обробкою відмов.
  • Регіональним розгортанням, якщо користувачі або склади глобальні.
  • Викатками щоразу, коли змінюється макет документа.

З gPdf цей контур виноситься назовні: застосунок надсилає DocumentRequest або template_id + data, а сервіс володіє рендерером, середовищем виконання на edge, шрифтами, примітивами штрихкодів, PDF/A-виводом і пакуванням електронних рахунків. Це менш привабливо, якщо ви хочете тримати кожну деталь у C#, і привабливіше, якщо генерація PDF має бути службовим шаром, доступним із будь-якого стеку.

Три компроміси, на які хостинговий API має відповідати чесно

Більшість подач у стилі “бібліотека проти API” пропускають три питання, які .NET-архітектор ставить першими. Чесне порівняння проговорює їх прямо.

1. Куди йдуть дані документа. Ця сторінка здебільшого про рахунки, виписки й електронні рахунки — документи з іменами, адресами, податковими ідентифікаторами та сумами. У QuestPDF ці байти створюються всередині вашого процесу й не виходять назовні. Публічний API gPdf передає тіло запиту в рендерер, але рендерер нічого не зберігає: JSON запиту перебуває в ізоляті Cloudflare Workers V8 лише під час рендера (зазвичай близько 4 мс) і звільняється після завершення відповіді — не зберігається, не логується, не відбирається для вибірок і не використовується для навчання моделей; операційні журнали обмежені HTTP-статусом і тривалістю (security, DPA). Вибір резидентності даних в ЄС або глобально та локальне / приватне розгортання Enterprise додатково звужують або закривають зовнішню межу. Водночас генерація всередині процесу без додаткової підготовки — легітимна, іноді вирішальна причина, чому фінансова або державна команда обирає QuestPDF.

2. Режим відмови. У бібліотеки немає третьої сторони, яка може впасти; генерація може зламатися лише на інфраструктурі, якою ви вже володієте. Хостинговий API додає залежність від доступності постачальника, яку ви не контролюєте. Правильний спосіб впроваджувати gPdf — ставитися до викликів рендера як до будь-якого зовнішнього виклику: тайм-аут, повторна спроба, черга і, бажано, резервний режим із деградацією. Якщо генерація документів стоїть на критичному синхронному шляху, потрібно зважити “експлуатувати самому” проти “залежати від доступності постачальника.”

3. Профіль затримки. Генерація всередині процесу — це виклик функції без мережі. Хостинговий виклик — це мережевий обмін. Для пакетних і асинхронних задач це шум. Для сценарію “користувач натискає, PDF має з’явитися зараз” підхід усередині процесу структурно швидший; edge PoP gPdf роблять перехід малим, але це все одно TLS плюс мережевий обмін, тоді як QuestPDF — виклик методу.

Це не робить gPdf неправильним вибором; це визначає, коли він правильний: для команд, чиї дані документа можуть вийти з процесу, чиї процеси витримують мережевий перехід і які радше покладуться на доступність постачальника, ніж самі експлуатуватимуть парк рендерерів.

Ліцензування й модель ціни

Публічна сторінка ліцензування QuestPDF каже, що комерційна ліцензія потрібна лише компаніям із річним валовим доходом понад 1 млн USD. Рівень Community безкоштовний для відповідних фізичних осіб, проєктів з відкритим кодом, неприбуткових організацій і компаній нижче цього порогу, на умовах MIT. Та сама публічна сторінка вказує два постійні комерційні рівні: Professional за 999 USD плюс місцевий податок для команд до 10 розробників і Enterprise за 2 999 USD плюс місцевий податок для всієї організації без підрахунку розробників. Обидва включають один рік оновлень і необмежену кількість проєктів, серверів та розгортань, а ліцензія не спливає для останньої отриманої версії.

Модель застосування також незвично легка. Ліцензія задається одним рядком — QuestPDF.Settings.License = LicenseType.Community; — без ключа ліцензії, сервера активації і, за власною сторінкою конфігурації QuestPDF, без мережевих викликів та без виходу даних із машини. Це модель довіри: ви самі обираєте рівень, на який маєте право. Немає рахунку постачальника за документ, а платна ліцензія працює будь-де, включно з повністю автономним середовищем.

gPdf прямо тарифікує сервіс рендера. Публічний Basic починається з 5 USD/міс. за 100 000 сторінок, а перевищення ліміту — від 0,00005 USD за сторінку. Це рахунок постачальника, але він також прибирає окремий проєкт з експлуатації генерації PDF: без кластера рендера, без шляху розгортання через NuGet, без регіонального теплого пулу, без пакета шрифтів для кожного застосунку і без PDF-сервісу, який потрібно латати.

Тому порівняння вартості — це не “999 USD проти 5 USD”; ліцензія є малим рядком. Реальне порівняння таке:

Загальна вартість QuestPDF = ліцензія (разова) + ваш хостинг + час інженерів + чергування
Загальна вартість gPdf     = рахунок за сторінки (інфраструктура, шрифти, масштабування й edge включені)

За публічною математикою за сторінку перевищення ліміту gPdf коштує 0,05 USD за 1 000 сторінок (50 USD за 1 млн, 500 USD за 10 млн). Разова Enterprise-ліцензія за 2 999 USD лише “зрівнюється” з цим рахунком приблизно біля 60 млн сторінок — і ця математика ігнорує хостинг QuestPDF та інженерні місяці, які зсувають реальну точку перетину ще далі на користь gPdf, якщо ви вже не експлуатуєте цю інфраструктуру дуже дешево. Практичне правило: якщо заради бібліотеки довелося б будувати й укомплектовувати сервіс рендера, gPdf зазвичай виграє за повною вартістю задовго до того, як рахунок за сторінки наздожене ліцензію; якщо ця інфраструктура вже існує й майже безкоштовна для вас, постійна ліцензія виграє на масштабі.

Процес розробки: Fluent C# проти шаблонів

Fluent API QuestPDF добре підходить, коли розробники володіють формою документа. Строга типізація, ланцюжки методів, повторно використовувані C# компоненти, рефакторинг в IDE і Companion App логічні, якщо PDF є частиною кодової бази застосунку.

gPdf підходить іншому процесу. Розробники все ще можуть писати JSON напряму, але бойові системи зазвичай рухаються до шаблонів. Дизайнер, оператор або інженер коригує макет у gPdf Studio. Затверджений макет стає шаблоном, а бекенд продовжує рендерити через template_id + data.

Ця різниця важлива, коли документ часто змінюється. Якщо змінюється транспортна етикетка, рахунок, пакувальний лист або макет виписки, gPdf може залишити середовище виконання стабільним і змінити лише шаблон. У QuestPDF макет — це C# код, тому нормальний шлях: зміна коду, тест, збірка, розгортання і план відкату.

Жоден процес не є універсально кращим: QuestPDF оптимізує для C# розробників, які хочуть документ як код; gPdf — для операційних шаблонів, спільних між системами.

Відповідність: обидва продукти серйозні

Це не порівняння, де gPdf виграє заявою, що конкурент не має функцій відповідності. Поточні публічні матеріали QuestPDF перелічують сильну підтримку стандартів, зокрема PDF/A, PDF/UA-1 і EN 16931 для електронних рахунків через приклад ZUGFeRD 2.1 / Factur-X на базі UN/CEFACT Cross Industry Invoice (CII). Цей приклад встановлює PdfA = true, вбудовує дані factur-x.xml через AddAttachment(), розширює документ XMP-метаданими й валідовує результат через veraPDF (для PDF/A-3b) та Mustang Project (для ZUGFeRD). Це повний, чесний рецепт — і ваш пайплайн володіє кожним його кроком.

gPdf пакує ті самі стандарти як API-контракт. JSON Render відкриває шість профілів PDF/A (1b, 2b, 3b, 4, 2u, 3u) плюс PDF/UA-1 через settings.profile, Template Render повторно використовує ту саму модель документа, а E-Invoice Render дає окремий ендпоінт POST /api/v1/e-invoice/render, який створює пакети Factur-X / ZUGFeRD PDF/A-3b із вбудованим EN 16931 CII XML. Відмінність від рецепта QuestPDF у тому, що сервіс робить за вас: gPdf виконує PDF/A-3b і серверну валідацію електронного рахунку, підтримує синхронну доставку одразу у відповіді або доставку об’єкта через опитування і пропонує резидентність даних в ЄС або глобально як налаштування запиту, а не як кроки, які ви збираєте й експлуатуєте. QuestPDF підходить, коли валідація має жити всередині вашого .NET-пайплайну; gPdf — коли це має бути хостинговий контракт, спільний для багатьох систем.

Шрифти й штрихкоди: реальне питання в інтеграційних зусиллях

QuestPDF має сильну модель шрифтів. Він постачає Lato 2.015 за замовчуванням, автоматично завантажує системні шрифти й шрифти з каталогу розгортання, дозволяє реєструвати власні шрифти через FontManager і підтримує ланцюжки підстановки. Це дає розробникам контроль. Але та сама документація чесно описує пастку: у більшості хмарних розгортань доступно мало шрифтів або їх немає, що може дати неочікуваний результат; вона радить вимикати шрифти середовища й явно реєструвати потрібні. Іншими словами, у контейнері або безсерверному середовищі шрифтове оточення — ваша зона планування, доставки й тестування; відсутній гліф стане символом-заглушкою або, якщо ввімкнути CheckIfAllTextGlyphsAreAvailable, винятком.

gPdf робить шрифти частиною межі сервісу. Рендерер має набір для кількох писемностей — Latin, Greek, Cyrillic, Arabic, Hebrew, Bengali, Tamil, Thai, Vietnamese, monospace і CJK із підстановкою за писемністю на Noto KR / JP / SC. Він розв’язує неявний вибір шрифту через автоматичний підбір, а явний вибір — через prefer або strict. Викликачі не відправляють CJK-шрифт, не реєструють Noto-ресурси в .NET-застосунку і не налаштовують підстановку для кожної цілі розгортання. Вони надсилають дані; рендерер володіє шрифтовим оточенням, однаковим у кожному регіоні.

Порівняння штрихкодів має схожу форму. Документація QuestPDF щодо штрихкодів показує добрий підхід із ZXing.Net, що рендериться як векторний SVG, і прямо зазначає, що ZXing.Net не входить до пакета QuestPDF — його встановлюють із NuGet і підключають:

// 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 генерація штрихкоду — повноцінний елемент схеми. Запит оголошує формат, вміст, фізичний розмір і необов’язковий читабельний рядок; формати GS1 нативні, тому ідентифікатори застосування йдуть прямо в 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-застосунку встановити ZXing.Net і протестувати результат може бути легко. Для багатьох сервісів і шаблонів — особливо логістичних і роздрібних навантажень, де потрібні GS1-128, SSCC, GTIN, GS1 DataMatrix або GS1 QR з читабельним рядком інтерпретації — простіше тримати поведінку штрихкодів у документному API, ніж повторювати підключення ZXing у кожному сервісі.

Де QuestPDF явно виграє

Крім автономної роботи, утримання даних документа всередині вашого периметра і сценаріїв, де PDF-код сам є частиною продукту, QuestPDF має дві групи можливостей, які прямо поза межами gPdf:

  • Операції з наявними PDF. QuestPDF може завантажувати наявні файли й об’єднувати їх, вибирати / змінювати порядок / розгортати / фільтрувати сторінки, накладати шари, додавати вкладення, задавати XMP-метадані, лінеаризувати для веб-доставки, а також шифрувати і розшифровувати із безпекою 40/128/256-bit. gPdf може захищати паролем і обмежувати дозволи PDF, які він генерує, але не відкриває, не об’єднує й не розшифровує файли, створені не ним.
  • Графіки, карти й власна графіка. QuestPDF інтегрує бібліотеки графіків (ScottPlot, LiveCharts, Microcharts), вбудовує карти Mapbox і відкриває SkiaSharp canvas для довільного 2D-малювання. gPdf може малювати векторну графіку через елемент path (дані SVG-шляху) або вбудовувати SVG / PNG графік, створений вище за процесом, але не має вбудованого рушія графіків, карт або canvas — тому якщо графіки на основі даних є центральними для документа, інструментарій залишається з QuestPDF.

Де gPdf явно виграє

gPdf виграє, коли організація не хоче, щоб кожна продуктова команда володіла власним PDF-сервісом: стеки з кількома мовами, глобальні процеси та ERP / OMS / WMS / ecommerce / fintech / ticketing системи, які рендерять документи зі структурованих даних, із шаблонами, що змінюються незалежно від коду. У таких середовищах локальна бібліотека часто починається дешево, а потім стає парком: один сервіс на мову, один шлях розгортання на регіон, один план шрифтів на контейнер, один набір регресій штрихкодів на команду. gPdf перетворює цей парк на один HTTP-контракт.

Безсерверне середовище робить межу найочевиднішою. На AWS Lambda, Cloud Run або Azure Functions QuestPDF усе одно працює всередині застосунку — ваша команда пакує .NET-середовище виконання, шрифти, нативні залежності й достатньо CPU / пам’яті для пікової PDF-роботи, а також відповідає за холодні старти. gPdf уже є сервісом рендера: функція надсилає невеликий запит template_id + data на edge і отримує PDF-байти назад, без рендерера, який треба прогрівати, і без регіонального воркера, який треба масштабувати.

Як виглядає міграція

Міграція з QuestPDF на gPdf — не переписування рядок у рядок. Це зміна межі: C# код, який будує PDF, стає або JSON-запитом документа, або опублікованим шаблоном.

До / після — C# виклик побудови документа зводиться до одного 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();

Після перенесення цієї межі зміни макета можуть стати ревізіями шаблону замість розгортань застосунку. Застосунок і далі володіє бізнес-даними та рішеннями процесу; gPdf володіє рендерингом.

Примітка про ціни та джерела

Інформацію про QuestPDF на цій сторінці перевірено 2026-06-02 за офіційними джерелами QuestPDF: License and Pricing, License configuration, Features Overview, Companion App features, Barcodes, Font management і ZUGFeRD example. Сторінки з цінами й функціями можуть змінюватися; командам закупівель варто повторно перевірити сторінку постачальника перед рішенням про купівлю. QuestPDF і пов’язані знаки належать відповідним власникам, це порівняння не схвалене ними.

Пов’язані сценарії генерації PDF

Команди, що порівнюють QuestPDF і gPdf, часто розглядають кілька близьких задач: API JSON у PDF для спільного HTTP-контракту, API PDF рахунків і API-довідку для .NET для бекенд-інтеграції, API PDF/A, Factur-X API і ZUGFeRD API для вимог відповідності, а також API штрихкодів GS1 і API PDF транспортних етикеток для етикеток та логістики.

FAQ

Чи замінює gPdf QuestPDF?

Ні. gPdf замінює потребу експлуатувати сервіс генерації PDF для структурованих бізнес-документів. QuestPDF залишається сильною локальною C# бібліотекою, коли PDF має генеруватися всередині застосунку.

Чи безкоштовний QuestPDF?

Публічна сторінка ліцензування QuestPDF каже, що рівень Community безкоштовний за умовами MIT для відповідних фізичних осіб, проєктів з відкритим кодом, неприбуткових організацій і компаній із річним валовим доходом нижче 1 млн USD. Компаніям вище цього порогу потрібна постійна комерційна ліцензія: Professional за 999 USD плюс місцеві податки для команд до 10 розробників або Enterprise за 2 999 USD плюс місцеві податки на всю організацію, кожен варіант включає один рік оновлень.

Чи може gPdf генерувати графіки або карти як QuestPDF?

Не як вбудований рушій. QuestPDF інтегрує бібліотеки графіків (ScottPlot, LiveCharts, Microcharts), карти Mapbox і SkiaSharp canvas, що рендеряться в документі. gPdf все ще може малювати векторні графіки через елемент path (який приймає дані SVG-шляху) і фігури або вбудовувати SVG / PNG, створений будь-якою бібліотекою графіків, як image. Різниця в тому, що QuestPDF обчислює й рендерить графік усередині процесу, а з gPdf ви створюєте зображення графіка, і gPdf розміщує його. Якщо графіки або карти на основі даних є центральними для документа, QuestPDF підходить краще.

Який продукт дешевший?

Залежить від межі. QuestPDF може бути дешевшим для .NET-команд, які підпадають під умови Community або вже експлуатують інфраструктуру рендера. gPdf може бути дешевшим, коли альтернатива — будувати, хостити й підтримувати PDF-сервіс для кількох продуктів або регіонів.

Чи зберігає або логує gPdf дані моїх документів?

Ні. JSON, який ви надсилаєте, і PDF, який повертає gPdf, не зберігаються. Кожен запит рендериться всередині одного ізоляту Cloudflare Workers V8, тримається в пам’яті лише під час рендера — зазвичай близько 4 мс — і звільняється після завершення потоку відповіді; gPdf не зберігає, не логує, не відбирає для вибірок і не навчається на вмісті DocumentRequest. Операційні журнали зберігають лише HTTP-статус і тривалість протягом 30 днів і не містять тіл запитів. Див. security policy, privacy policy і DPA. Для навантажень, які взагалі не можуть передавати дані назовні, локальне / приватне розгортання тримає їх усередині вашого периметра.

Чи може QuestPDF працювати без доступу до інтернету?

Так. Сторінка конфігурації ліцензії QuestPDF каже, що ключ ліцензії й сервер активації не потрібні, а обчислення виконуються локально. Це одна з найчіткіших причин обрати QuestPDF.

Чи може gPdf рендерити довільні C# макети QuestPDF?

Ні. gPdf не виконує C# код макета. Міграція означає переведення форми документа в JSON-запит gPdf або збережений шаблон gPdf.