ShreePdf 1.16.0
dotnet add package ShreePdf --version 1.16.0
NuGet\Install-Package ShreePdf -Version 1.16.0
<PackageReference Include="ShreePdf" Version="1.16.0" />
<PackageVersion Include="ShreePdf" Version="1.16.0" />
<PackageReference Include="ShreePdf" />
paket add ShreePdf --version 1.16.0
#r "nuget: ShreePdf, 1.16.0"
#:package ShreePdf@1.16.0
#addin nuget:?package=ShreePdf&version=1.16.0
#tool nuget:?package=ShreePdf&version=1.16.0
<div align="center">
<img src="https://raw.githubusercontent.com/jjopensoftworks-blip/ShreePdf/main/logo.png" width="300" alt="ShreePdf">
ShreePdf
Radiant, intelligent PDF generation for .NET — built for the AI era.
Generate beautifully designed PDFs directly from C#, Markdown, or HTML — no headless browser, no native print stack, no external services.
</div>
Install
dotnet add package ShreePdf
Hello, PDF
using ShreePdf.Fluent;
Document.Create("Welcome")
.AddText("Hello, ShreePdf 👋", fontSize: 24, isBold: true)
.AddText("Beautiful, themed PDFs — straight from C#.")
.Save("welcome.pdf");
Markdown & LLM output → themed PDF
Perfect for turning AI assistant responses or docs into polished output.
string markdown = """
# Quarterly Review
- Revenue up **24%**
- Churn down **3%**

[Full report](https://example.com/report)
> Prepared by our AI assistant.
""";
Document.FromMarkdown(markdown, ThemePresets.SaaSAnalytics)
.EnableAutoFit()
.Save("review.pdf");
Ingestion understands inline images — Markdown  and HTML <img>, resolved from a file path, URL, or data URI — and Markdown links ([text](url)). A broken image source is skipped rather than failing the whole document.
Rich documents with the fluent API
var pdf = Document.Create("Invoice #1042")
.WithTheme(ThemePresets.ExecutiveMinimal)
.AddImageFromFile("logo.png", width: 120)
.AddText("Invoice #1042", fontSize: 20, isBold: true)
.AddBulletList("Design services", "Cloud hosting", "Priority support")
.AddTable(t =>
{
t.Columns.Add(new TableColumn { Header = "Item" });
t.Columns.Add(new TableColumn { Header = "Amount", Alignment = Alignment.Right });
var row = new TableRow();
row.Cells.Add("Total due");
row.Cells.Add(new TableCell("$4,200.00") { IsBold = true, Alignment = Alignment.Right });
t.Rows.Add(row);
})
.AddPageNumber("Page {page} of {pages}")
.GenerateBytes();
Native charts, KPIs & barcodes
Embed native vector visuals, metric cards, barcodes, and multi-column text with single-line fluent helpers.
Document.Create("Executive Dashboard")
.WithTheme(ThemePresets.SaaSAnalytics)
// KPI Stat Cards & Status Badges
.AddStatCards(
new StatCard("Revenue", "$1.24M", "+14.2%", deltaPositive: true),
new StatCard("Active Users", "42.5K", "+8.1%", deltaPositive: true),
new StatCard("Churn Rate", "1.2%", "-0.4%", deltaPositive: true))
.AddBadge("Target Achieved", BadgeStatus.Success)
// Vector Charts (Bar, Line, Area, Pie, Donut)
.AddBarChart("Quarterly Sales", ("Q1", 240), ("Q2", 310), ("Q3", 280), ("Q4", 410))
.AddPieChart("Traffic Share", ("Direct", 45), ("Search", 35), ("Social", 20))
// Sparklines & KPI Progress Meters
.AddSparkline(SparklineType.Line, 12, 18, 15, 22, 28, 34)
.AddProgressBar("Storage Quota", value: 78, max: 100)
// Barcodes & QR Codes
.AddBarcode(BarcodeType.Code128, "INV-2026-9901")
.AddQrCode("https://example.com/invoice/9901")
// Multi-Column Text Flow
.AddMultiColumn("ShreePdf automatically wraps and balances long text across multiple newspaper-style columns.", columns: 2, height: 100)
.Save("dashboard.pdf");
Navigation: bookmarks & table of contents
Headings automatically become a reader-sidebar bookmark outline, and a one-liner drops in an auto table of contents with page numbers and clickable rows.
Document.Create("Handbook")
.AddTableOfContents("Contents") // page numbers + links, filled automatically
.AddHeading("Getting Started", 1) // becomes a bookmark + a TOC row
.AddText("Welcome to the handbook.")
.AddHeading("Installation", 2) // nested under the previous heading
.AddText("Add the NuGet package and you're set.")
.AddHeading("Advanced Usage", 1)
.Save("handbook.pdf");
Enterprise security & AES-256 encryption
Protect confidential documents with ISO 32000-1 AES-256 encryption, password controls, permissions, and security watermarks.
using ShreePdf.Fluent;
using ShreePdf.Security;
var doc = Document.Create("Confidential Strategy")
.WithTheme(ThemePresets.ExecutiveMinimal)
.AddHeading("Confidential Executive Review", 1)
.AddText("This document is protected and confidential.");
// Enable AES-256 encryption & permission flags
doc.Security.IsEncryptionEnabled = true;
doc.Security.UserPassword = "UserPassword123";
doc.Security.OwnerPassword = "MasterOwnerKey!";
doc.Security.EncryptionAlgorithm = PdfEncryptionAlgorithm.AES_256Bit;
doc.Security.Permissions = DocumentPermissions.Print | DocumentPermissions.Copy;
// Add dynamic anti-leak security watermark
doc.Security.EnableWatermark = true;
doc.Security.WatermarkText = "CONFIDENTIAL - INTERNAL ONLY";
doc.Save("secured-review.pdf");
PDF manipulation, merging & dynamic stamping (v1.14.0)
using ShreePdf.Manipulation;
// 1. Merge multiple PDF byte streams while preserving & fusing RAG metadata
byte[] mergedPdf = PdfDocumentModifier.MergeDocuments(new[] { doc1Bytes, doc2Bytes });
// 2. Extract specific page ranges or permute page order
byte[] slicePdf = PdfDocumentModifier.ExtractPages(mergedPdf, new[] { 1, 3, 5 });
byte[] reorderedPdf = PdfDocumentModifier.ReorderPages(mergedPdf, new[] { 3, 1, 2 });
// 3. Stamp dynamic watermarks, Bates numbers, and headers/footers
byte[] batesStamped = PdfPageStamper.StampBatesNumber(reorderedPdf, prefix: "ACME-CONF-", startNumber: 1001);
byte[] finalPdf = PdfPageStamper.StampWatermark(batesStamped, "INTERNAL REVIEW ONLY", opacity: 0.25f);
var data = new Dictionary<string, string?> { ["customer"] = "Ada Lovelace", ["total"] = "$4,200" };
Document.FromMarkdownTemplate("# Statement for {{customer}}\n\nBalance: **{{total}}**", data)
.Save("statement.pdf");
Output anywhere
doc.Save("report.pdf"); // to a file
byte[] bytes = doc.GenerateBytes(); // in memory
await doc.GenerateBytesAsync(); // async (web / serverless)
doc.GenerateToStream(httpResponseStream); // stream directly, bounded memory
Highlights
- 🎨 Out-of-the-box themes — professional presets so documents never look "default."
- 📝 Universal ingestion — build with a fluent C# API, or drop in Markdown or HTML.
- 📊 Native vector charts & data reporting — bar, line, area, pie, and donut charts, sparklines, progress bars, stat cards, status badges, QR codes, Code128/EAN-13 barcodes, and multi-column newspaper layouts.
- 🧩 Rich content — text, images, hyperlinks & anchors, ordered/unordered lists, page numbers, watermarks, landscape, and full-bleed backgrounds.
- 📋 Advanced tables — per-cell styling, auto column sizing, content-sized rows that grow to fit, merged cells (row/column span), images inside cells, and headers that repeat across page breaks.
- 🧭 Navigation built in — reader-sidebar bookmarks from your headings, plus an auto table of contents with page numbers and clickable links.
- 🔒 Enterprise security & encryption — AES-256 password protection, granular permission restrictions, dynamic anti-leak watermarking, and permanent PII text redaction.
- ✍️ Digital signatures & PDF/A archival — PKCS#12 cryptographic signing, RFC 3161 TSA timestamping, visible appearance seals, PDF/A-1b/2b/3b archival standards, and ZUGFeRD / Factur-X XML invoice embedding.
- 📄 Tidy pagination — smart page budgeting keeps content clean and avoids awkward orphan spills.
- ⚡ Fast & flexible output — synchronous,
async, or direct-to-Stream. - 🤖 AI / RAG friendly — optional machine-readable document metadata for indexing pipelines.
- 🌐 ASP.NET Core ready — Minimal API results and Razor view rendering.
Learn more
- ▶️ Interactive playground, samples & full documentation: jjopensoftworks-blip.github.io/ShreePdfPage
- 📦 Source, samples & issues: github.com/jjopensoftworks-blip/ShreePdf
Licensing
ShreePdf ships in a free Community tier for evaluation and everyday use, and a Pro tier for unlimited-page, watermark-free commercial use. Pro is unlocked at runtime with a license key:
LicenseManager.ActivateOnline("YOUR-LICENSE-KEY", "https://your-license-server");
Activation is opt-in and offline-friendly (validated once, then cached; re-checked only near expiry). The Community tier makes no network calls. See the project site for details.
<div align="center">
Made with ❤️ by jjopensoftworks-blip
</div>
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Net.Codecrete.QrCodeGenerator (>= 3.1.0)
- PDFtoImage (>= 4.1.1)
- SkiaSharp (>= 4.151.0)
- SkiaSharp.NativeAssets.Linux.NoDependencies (>= 4.151.0)
-
net8.0
- Net.Codecrete.QrCodeGenerator (>= 3.1.0)
- PDFtoImage (>= 4.1.1)
- SkiaSharp (>= 4.151.0)
- SkiaSharp.NativeAssets.Linux.NoDependencies (>= 4.151.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.