Migration Matrix & Performance Gains

Compare developer productivity, execution speeds, and memory footprint when switching to ShreePdf Engine.

Dimension / Metric Competitor Average ShreePdf Engine Developer Gain
Code Verbosity 50 – 120 lines / page 5 – 15 lines / page 80% less boilerplate code
Execution Speed 1,500 – 4,000 ms (Chromium) 5 – 15 ms / page 250x faster PDF rendering
Memory Footprint 400 – 800 MB RAM ~15 MB RAM Zero cold-start timeouts
Native Dependencies 200MB+ Headless Chrome / WebKit 0 (Pure C# SkiaSharp) 100% Cross-Platform (Docker/Linux)

Migrating from QuestPDF

QuestPDF requires deep lambda nesting and strict layout columns. ShreePdf offers a clean, fluid builder.

QuestPDF (Verbose Lambdas) 32 Lines
Document.Create(container => { container.Page(page => { page.Size(PageSizes.A4); page.Header().Text("Financial Report").Bold(); page.Content().Table(table => { table.ColumnsDefinition(cols => { cols.RelativeColumn(3); cols.RelativeColumn(1); }); table.Header(h => { h.Cell().Text("Department"); h.Cell().Text("Budget"); }); table.Cell().Text("Engineering"); table.Cell().Text("$120,000"); }); }); }).GeneratePdf("report.pdf");
ShreePdf (Clean Fluent DSL) 9 Lines
using ShreePdf.Fluent; var doc = Document.Create("Financial Report") .AddHeading("Financial Report", level: 1) .AddTable(table => { table.Columns.Add(new TableColumn { Header = "Department", WidthRatio = 3 }); table.Columns.Add(new TableColumn { Header = "Budget", WidthRatio = 1 }); table.Rows.Add(new TableRow { Cells = { "Engineering", "$120,000" } }); }); doc.Save("report.pdf");

Migrating from iText 7 / iTextSharp

Replace low-level PDF canvas stream painting and AGPL licensing traps with modern C# design systems.

iText 7 (Imperative Streams) AGPL Copyleft
using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using var writer = new PdfWriter("statement.pdf"); using var pdf = new PdfDocument(writer); using var document = new Document(pdf); document.Add(new Paragraph("Account Statement").SetBold()); Table table = new Table(new float[] { 200, 100 }); table.AddHeaderCell("Transaction"); table.AddHeaderCell("Amount"); table.AddCell("Server Hosting"); table.AddCell("-$450.00"); document.Add(table);
ShreePdf (Auto Budgeted Layout) Permissive / Commercial
using ShreePdf.Fluent; var doc = Document.Create("Account Statement") .AddHeading("Account Statement", level: 1) .AddTable(table => { table.Columns.Add(new TableColumn { Header = "Transaction", WidthRatio = 2 }); table.Columns.Add(new TableColumn { Header = "Amount", WidthRatio = 1 }); table.Rows.Add(new TableRow { Cells = { "Server Hosting", "-$450.00" } }); }); doc.Save("statement.pdf");

Migrating from PuppeteerSharp / IronPDF

Eliminate 200MB+ Headless Chrome binaries, high memory consumption, and cold-start latency.

PuppeteerSharp (Heavy Chromium) 1,500ms Latency
// Requires 200MB+ Chromium binary download await new BrowserFetcher().DownloadAsync(); using var browser = await Puppeteer.LaunchAsync( new LaunchOptions { Headless = true } ); using var page = await browser.NewPageAsync(); await page.SetContentAsync("

Executive Summary

"); await page.PdfAsync("report.pdf", new PdfOptions());
ShreePdf (0 Chromium, Native Vector) 5ms Latency
using ShreePdf.Fluent; // Pure C# vector generation instantly in 5ms string html = "

Executive Summary

Narrative...

"; var doc = Document.FromMarkdown(html); doc.Save("report.pdf");

Master-Detail Group Continuation & `(continued)` Suffixes

Automatically repeat master metadata header rows across page breaks and append `(continued)` suffixes.

Master-Detail Group Builder v1.14.0 Engine
var doc = Document.Create("Legal Case Report") .AddMasterDetailGroup(group => { // 1. Master Metadata Header Row (repeats on continuation pages) group.HeaderTable.Columns.Add(new TableColumn { Header = "Title" }); group.HeaderTable.Columns.Add(new TableColumn { Header = "Ref ID" }); group.HeaderTable.Rows.Add(new TableRow { Cells = { "Afonso NO v ENS Inc", "JOL 29215" } }); // 2. Narrative Body with automatic "(continued)" Label Suffixing group.BodyTitle = "Legal Summary"; group.ContinuationSuffix = " (continued)"; group.NarrativeText = "Multi-page case judgment summary text..."; group.RepeatHeaderOnContinuation = true; // 3. Conclusion Block (anchored to render ONCE at narrative conclusion) group.ConclusionBlock = new TextElement("Comment by reviewer on 2026/08/15: Risk accepted."); });

Universal Markdown & HTML Ingestion

Convert LLM markdown response streams or Razor HTML templates into PDF documents.

AI Stream & HTML Parser Built-in Ingestion
string markdownText = """ # Executive Quarterly Overview - **Revenue**: $1.2M - **Growth**: +14.2% YoY """; var doc = Document.FromMarkdown(markdownText); byte[] pdfBytes = doc.GenerateBytes();

Visual Charts, Barcodes, QR & KPI Cards

Add vector charts, Code 128 barcodes, QR codes, and dashboard stat cards out of the box.

Data Visualization Subsystem Vector Canvas
var doc = Document.Create("Analytics Report") .AddStatCards(row => { row.Cards.Add(new StatCard { Label = "Total Revenue", Value = "$42,850", Delta = "+12.4%", DeltaPositive = true }); row.Cards.Add(new StatCard { Label = "Active Users", Value = "1,240", Delta = "-2.1%", DeltaPositive = false }); }) .AddQrCode("https://shreepdf.io/verify/94316708", size: 90f) .AddBarcode("123456789012", showText: true);

AI / RAG Dual-Stream AST Embedder

Embed loss-free JSON AST metadata directly inside the PDF XMP stream for zero-loss LLM retrieval.

Zero-Loss RAG Indexer XMP Dual-Stream
var doc = Document.Create("RAG Indexed Contract"); doc.IsRagMetadataEnabled = true; // Embeds structured JSON AST payload in XMP stream doc.AddHeading("Services Agreement", level: 1) .AddText("This Agreement is made on 2026-08-15 between Party A and Party B."); doc.Save("IndexedContract.pdf");