Nutrient .NET SDK vs. iText Core: Complete comparison for .NET developers
Table of contents
iText Core (v9.x, by Apryse): Build PDF-centric applications with granular control. Community resources and commercial support are available. Purchase add-ons separately as your needs grow. AGPLv3 is available for open source projects.
Nutrient .NET SDK: All document processing features are included. Process scanned invoices, extract structured data, and handle any document format without additional licenses. A single SDK reduces development time and vendor management.
Choose iText for PDF generation with community support. Choose Nutrient for faster deployment and lower technical debt when handling mixed document types.
Key differences at a glance
Time to market
iText Core: Assemble multiple tools for complete workflows
Nutrient: Complete solution with built-in OCR, extraction, and conversion
Developer productivity
iText Core: Write custom parsing logic for data extraction
Nutrient: Automated extraction from invoices, forms, and tables without custom parsing
Maintenance burden
iText Core: Manage separate vendors for add-ons
Nutrient: Single SDK, license, and vendor — no version conflicts or integration issues
Direct feature comparison
| Feature | Nutrient .NET SDK | iText Core |
|---|---|---|
| PDF generation | ✅ Full support | ✅ Primary focus (high-level and low-level APIs) |
| HTML-to-PDF rendering | ✅ Chrome-based rendering with full CSS/media support | ⚠️ Requires pdfHTML add-on (separate purchase) |
| PDF editing | ✅ Add/remove content, annotations, stamps, watermarks | ✅ Merge, split, stamp, watermark; add content via PdfCanvas (removing/redacting content requires pdfSweep add-on) |
| Text extraction | ✅ Advanced extraction | ✅ Basic text extraction (built in) |
| OCR | ✅ Built in, 125+ languages, advanced pre/post-processing | ⚠️ Requires pdfOCR add-on (separate purchase, Tesseract/ONNX-based) |
| Form processing | ✅ Create, fill, flatten | ✅ AcroForm (full support); ⚠️ XFA (fill/extract built in, flattening requires pdfXFA add-on) |
| Digital signatures | ✅ Certificates, timestamps | ✅ Full PAdES support, FIPS compliance, SHA-3, ECC (elliptic-curve cryptography) |
| Document operations | ✅ Merge, split | ✅ Merge, split, reorder |
| ML-powered data extraction | ✅ Key-value pairs, tables, OMR | ❌ Not supported |
| Format support | ✅ 100+ formats | ⚠️ PDF only (no Office conversion add-on available for .NET) |
| PDF/A compliance | ✅ PDF/A-1 through PDF/A-4 | ✅ PDF/A-1a/b, 2a/b/u, 3a/b/u, 4e/f |
| PDF/UA accessibility | ✅ Full compliance, auto-tagging, and conversion | ✅ PDF/UA-1 (full support) |
| Barcode generation/reading | ✅ Generate and read 1D/2D | ✅ Add barcodes (generation), no built-in reading |
| Image preprocessing | ✅ Deskew, denoise, and remove lines/punch holes | ⚠️ Via pdfOCR add-on |
| Document scanning | ✅ TWAIN/WIA scanner support | ❌ Not supported |
| OMR (optical mark recognition) | ✅ Extract checkboxes, bubbles | ❌ Not supported |
| MRZ extraction | ✅ Passports, IDs, visas, driver’s licenses | ❌ Not supported |
| Hyper-compression | ✅ MRC compression for scanned documents | ❌ Not supported |
| Desktop PDF viewer | ✅ WinForms/WPF viewer with search, bookmarks | ❌ Not applicable |
| Cross-platform | ✅ Windows, Linux, macOS (.NET 6/7/8, Framework 4.6.2) | ✅ .NET Standard 2.0+, .NET Core, .NET 5+ |
| Large document handling | ✅ Optimized for large files | ✅ Multi-gigabyte files, thousands of pages |
| Deployment footprint | Larger binary (native components for OCR/rendering, modular loading) | Lightweight library (~few MB core), modular add-ons as needed |
| Community and support | Direct commercial support with SLA, comprehensive documentation | Open source community (StackOverflow, GitHub), third-party examples, commercial support available |
| Licensing | Commercial | Dual license (AGPLv3 or commercial) |
| Pricing | Contact for quote | Volume-based commercial pricing (contact for quote) |
Advanced AI extraction: For LLM-powered natural language extraction and document classification, Nutrient offers the AI Document Processing SDK as a separate product with its own license. This adds advanced capabilities like intelligent invoice processing with machine learning (ML) templates and confidence scores.
Nutrient vs. iText Core: Code example comparisons
The following examples show how common PDF operations differ between iText Core and Nutrient .NET SDK, from basic document creation to OCR and merging.
Example 1: Generate PDFs from scratch
iText Core approach:
using iText.Kernel.Pdf;using iText.Layout;using iText.Layout.Element;
// Create a new PDF document.PdfWriter writer = new PdfWriter("output.pdf");PdfDocument pdf = new PdfDocument(writer);Document document = new Document(pdf);
// Add a paragraph to the document.Paragraph para = new Paragraph("Hello World! This is a PDF created with iText 9.") .SetFontSize(14);document.Add(para);
// Close the document.document.Close();iText Core uses a high-level API with Document, Paragraph, and layout elements. You can control PDF structure through both convenience methods and low-level manipulation.
using GdPicturePDF gdpicturePDF = new GdPicturePDF();
// Set the origin to the top-left corner of the page.gdpicturePDF.SetOrigin(PdfOrigin.PdfOriginTopLeft);
// Create a new page with the Letter size.gdpicturePDF.NewPage(PdfPageSizes.PdfPageSizeLetter);
// Add a font and select it.gdpicturePDF.AddStandardFont(PdfStandardFont.PdfStandardFontHelvetica);gdpicturePDF.SetTextSize(14);
// Set the text color to black.gdpicturePDF.SetFillColor(0, 0, 0);
// Draw text on the page.gdpicturePDF.DrawText(72, 72, "Hello World! This is a PDF created with Nutrient .NET SDK.");
// Save the document.gdpicturePDF.SaveToFile(@"C:\temp\output.pdf");Nutrient creates the PDF with GdPicturePDF, adds a page with NewPage(), selects a font, and draws text with DrawText(). For richer layouts, DrawTextBox() supports alignment and wrapping within a rectangle.
Example 2: Extract text from an existing PDF
iText Core approach:
using iText.Kernel.Pdf;using iText.Kernel.Pdf.Canvas.Parser;using iText.Kernel.Pdf.Canvas.Parser.Listener;
// Open an existing PDF document.PdfDocument pdfDoc = new PdfDocument(new PdfReader("document.pdf"));
// Extract text from all pages.StringBuilder text = new StringBuilder();for (int i = 1; i <= pdfDoc.GetNumberOfPages(); i++){ ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); string pageText = PdfTextExtractor.GetTextFromPage(pdfDoc.GetPage(i), strategy); text.Append(pageText);}
// Close the document.pdfDoc.Close();
// Save extracted text.File.WriteAllText("extracted.txt", text.ToString());iText Core provides multiple extraction strategies: SimpleTextExtractionStrategy extracts text in reading order, while LocationTextExtractionStrategy preserves spatial positioning.
using GdPicturePDF gdpicturePDF = new GdPicturePDF();
// Load the source document.gdpicturePDF.LoadFromFile("input.pdf");
// Optional: Improve word boundary detection in structured documents.gdpicturePDF.SetTextExtractionOptions(TextExtractionOptions.PreserveLayout);
// Extract text from all pages.StringBuilder text = new StringBuilder();for (int i = 1; i <= gdpicturePDF.GetPageCount(); i++){ gdpicturePDF.SelectPage(i); text.Append(gdpicturePDF.GetPageText());}
// Save the extracted text to a file.File.WriteAllText("ExtractedText.txt", text.ToString());Nutrient loads the PDF with LoadFromFile(). It then iterates through pages with SelectPage() and extracts text using GetPageText(). SetTextExtractionOptions(PreserveLayout) maintains the original spatial positioning of text, similar to iText’s LocationTextExtractionStrategy.
Example 3: Perform OCR on scanned PDFs
iText Core approach:
using iText.Kernel.Pdf;using iText.Pdfocr;using iText.Pdfocr.Tesseract4;using System.Collections.Generic;using System.IO;
// Note: pdfOCR is a separate add-on from iText.// Configure OCR engine with Tesseract.var ocrEngineProperties = new Tesseract4OcrEngineProperties();ocrEngineProperties.SetPathToTessData(new FileInfo("path/to/tessdata"));
var tesseractEngine = new Tesseract4LibOcrEngine(ocrEngineProperties);var ocrPdfCreator = new OcrPdfCreator(tesseractEngine);
// Perform OCR on image file and create searchable PDF.var imageFiles = new List<FileInfo> { new FileInfo("scanned.jpg") };using (var writer = new PdfWriter("output_ocr.pdf")){ ocrPdfCreator.CreatePdf(imageFiles, writer).Close();}This example uses iText’s pdfOCR add-on (separate purchase) with the Tesseract 4 engine. It requires a path to Tesseract language data and supports ONNX-based ML models for Latin-based languages.
using GdPicturePDF gdpicturePDF = new GdPicturePDF();
// Load the source document.gdpicturePDF.LoadFromFile("input.pdf");
// Run the OCR process on all pages with maximum multithreading support.gdpicturePDF.OcrPages("*", 0, "eng", "", "", 300);
// Save the result in a PDF document.gdpicturePDF.SaveToFile(@"C:\temp\output.pdf");Nutrient loads scanned PDFs and runs OCR on all pages using OcrPages() with image preprocessing. No additional products are needed.
Example 4: Merge multiple PDFs
iText Core approach:
using iText.Kernel.Pdf;using iText.Kernel.Utils;
// Create output document.PdfDocument pdfDoc = new PdfDocument(new PdfWriter("merged.pdf"));
// Merge utility.PdfMerger merger = new PdfMerger(pdfDoc);
// Load and merge first document.PdfDocument firstDoc = new PdfDocument(new PdfReader("document1.pdf"));merger.Merge(firstDoc, 1, firstDoc.GetNumberOfPages());firstDoc.Close();
// Load and merge second document.PdfDocument secondDoc = new PdfDocument(new PdfReader("document2.pdf"));merger.Merge(secondDoc, 1, secondDoc.GetNumberOfPages());secondDoc.Close();
// Close the merged document.pdfDoc.Close();iText Core uses PdfMerger to combine PDFs. You can merge specific page ranges from each source document.
Nutrient .NET SDK approach:
// Option 1: Merge with full control over document-level options.using GdPicturePDF firstDoc = new GdPicturePDF();firstDoc.LoadFromFile(@"C:\temp\document1.pdf");
using GdPicturePDF secondDoc = new GdPicturePDF();secondDoc.LoadFromFile(@"C:\temp\document2.pdf");
GdPicturePDFFactory.MergeDocuments(new[] { firstDoc, secondDoc }, out GdPicturePDF mergedDoc);using (mergedDoc){ mergedDoc.SaveToFile(@"C:\temp\merged.pdf");}
// Option 2: Merge PDF documents by file path.using GdPicturePDF gdpicturePDF = new GdPicturePDF();string[] sources = new[] { @"C:\temp\document1.pdf", @"C:\temp\document2.pdf" };gdpicturePDF.MergeDocuments(sources, @"C:\temp\merged.pdf");
// Option 3: Combine mixed file types (PDFs, images, Office documents) into a single PDF.using GdPictureDocumentConverter gdpictureConverter = new GdPictureDocumentConverter();IEnumerable<string> source = new List<string>(new string[] { @"C:\temp\source1.jpg", @"C:\temp\source2.xlsx" });gdpictureConverter.CombineToPDF(source, @"C:\temp\output.pdf", PdfConformance.PDF1_5);Nutrient’s GdPicturePDFFactory.MergeDocuments() works with loaded documents and supports merging options. For a simpler approach, MergeDocuments() on GdPicturePDF takes an array of file paths and a destination. Nutrient can also combine mixed file types — images, Office documents, and CAD files — into a single PDF using CombineToPDF().
Pricing comparison
Here’s how iText Core and Nutrient .NET SDK compare on licensing, add-on costs, and total cost of ownership.
iText Core pricing
Dual licensing model:
- AGPLv3 free for open source (must publish source code)
- Commercial license: removes AGPL requirements, includes support
- Volume-based pricing (contact for quote)
Add-on costs:
iText Core is the base product. Additional capabilities require separate add-ons:
- pdfHTML — HTML/CSS-to-PDF conversion (separate purchase)
- pdfOCR — OCR functionality (separate purchase)
- pdfXFA — XFA form flattening and dynamic form handling (separate purchase)
- pdfCalligraph — Global fonts and writing systems (separate purchase)
- pdfSweep — Advanced redaction (separate purchase)
- pdfOptimizer — Document optimization (separate purchase)
Note: iText doesn’t offer a native Office document conversion add-on for .NET. .NET developers would need alternative solutions for Office-to-PDF conversion.
Nutrient .NET SDK pricing
Commercial licensing:
- Contact Sales for a custom quote
- Enterprise support included
- No per-developer or per-project restrictions
- Flexible licensing models available
- All features included in base license (OCR, data extraction, and multi-format support)
- Optional AI Document Processing SDK available for advanced LLM-powered extraction
Nutrient’s single license reduces procurement complexity and integration issues between components.
Total cost of ownership comparison
| Factor | iText Core | Nutrient .NET SDK |
|---|---|---|
| Initial cost | Volume-based (contact for quote) | Contact for pricing |
| Additional libraries needed | pdfOCR, pdfHTML add-ons (Office conversion not available for .NET) | All-in-one solution |
| Support | Commercial support included with license | Enterprise support included |
| Updates | Included with subscription | Commercial updates and patches |
| Compliance | PDF/A, PDF/UA supported | Complete (PDF/A, PDF/UA, signatures) |
| Training | Documentation and community resources | Comprehensive documentation |
| Maintenance | Vendor-supported | Vendor-supported |
When iText Core costs less:
- Your application is open source (AGPLv3 license)
- You only need PDF creation and manipulation (no OCR or format conversion)
- Low-to-moderate PDF processing volume
- You don’t require add-ons
When Nutrient delivers stronger ROI:
- Faster delivery — complete document features in days instead of months
- No custom parsing — built-in data extraction for common document types
- Handle multiple formats — process any document type without additional tools
- Enterprise support with SLAs and simplified vendor management
Migration guide: iText Core to Nutrient
Migrating from iText Core to Nutrient requires API adaptation but adds document processing capabilities beyond PDF. The steps below cover installation, scope assessment, API mapping, and expanding into Nutrient’s broader feature set.
Step 1: Install Nutrient .NET SDK
Install via NuGet and configure licensing:
# Add the package (.NET 6.0 or higher)dotnet add package GdPicture.API
# For .NET Framework 4.6.2:dotnet add package GdPictureusing GdPicture14;
LicenseManager licenseManager = new LicenseManager();licenseManager.RegisterKEY(""); // Empty string for trial modeStep 2: Identify migration scope
Direct replacement: Map iText Core PDF operations to Nutrient equivalents
Feature expansion: Use Nutrient’s OCR, extraction, and multi-format capabilities beyond PDF
Hybrid approach: Use iText Core for specific PDF operations, Nutrient for document processing
Step 3: API mapping
Common iText Core patterns and Nutrient equivalents:
| iText Core pattern | Nutrient equivalent |
|---|---|
PdfDocument + Document | GdPicturePDF |
PdfReader / PdfWriter | LoadFromFile() / SaveToFile() |
PdfTextExtractor.GetTextFromPage() | SelectPage() + GetPageText() |
PdfMerger.Merge() | GdPictureDocumentConverter.CombineToPDF() |
PdfSigner.SignDetached() | SetSignatureCertificateFromP12() + ApplySignature() |
new Paragraph().Add() | DrawText() / DrawTextBox() |
Step 4: Add document processing features
After migrating core PDF functionality, add Nutrient’s document processing features:
- OCR — Example 3 shows built-in OCR without separate add-ons
- Data extraction — Extract data from forms, tables, and key-value pairs
- Multi-format — Convert documents to PDF (Office, images, and CAD)
- Compliance — Full PDF/A support for archival standards
Migration effort estimate
| Project complexity | Estimated effort | Key challenges |
|---|---|---|
| Simple PDF operations (< 10 APIs) | 1–2 weeks | API mapping, testing |
| Medium complexity (10–50 APIs) | 3–8 weeks | Refactoring, feature parity |
| Large application (50+ APIs) | 2–4 months | Architecture changes, testing |
Plan for API differences. iText Core uses high-level Document and Layout APIs. Nutrient uses method-based APIs with explicit page selection. Code patterns differ but functionality is equivalent.
Use case recommendations
| Decision factor | Choose iText Core when… | Choose Nutrient when… |
|---|---|---|
| Document types | Users work only with digital PDFs | Users scan documents, extract data, or process 100+ file types |
| Development approach | Team builds custom PDF workflows and extraction logic | Ship faster with prebuilt OCR, extraction, and format conversion |
| Total cost | Initial license cost is the priority | Minimize TCO with one SDK, one vendor, no integration overhead |
| Compliance standards | PDF/A and PDF/UA standards are requirements | Meet archival and accessibility standards across diverse document types |
| Support and licensing | Open source project (AGPLv3) or prefer modular pricing | Need SLA-backed support and predictable all-in-one licensing |
Community vs. enterprise support: iText offers an open source community with third-party examples and StackOverflow discussions, plus commercial support options. Nutrient provides commercial support with SLAs and direct vendor communication.
Hybrid approach: Some teams use both libraries — iText Core for PDF generation and standards compliance, and Nutrient for OCR, extraction, and multi-format conversion. This requires managing two SDKs and licenses.
Conclusion
The decision comes down to scope.
If your application only generates or manipulates digital PDFs, iText Core delivers granular control with flexible licensing. For open source projects, AGPLv3 makes it accessible. For commercial apps, modular pricing lets you add capabilities as needed.
If your application processes scanned documents, extracts data from forms, or handles mixed file types, Nutrient eliminates the integration work. Teams ship production-ready document processing without building OCR pipelines, extraction parsers, or format converters.
Bottom line: iText Core is a PDF library. Nutrient is a document processing platform. Choose based on what you’re building.
Try Nutrient free or contact Sales for a custom ROI analysis.
FAQ
Nutrient includes OCR, data extraction, and image preprocessing built in, so teams can deploy document processing features faster. iText Core requires purchasing the pdfOCR add-on and building custom extraction logic.
Yes, but migration costs 2–3x more development time than choosing Nutrient initially. You’ll rewrite extraction logic, manage two vendors, and coordinate versions. If scanned documents or data extraction are planned, starting with Nutrient avoids rewrites.
iText Core offers AGPLv3 licensing for open source projects that publish source code. Applications must share code under AGPL terms. Nutrient is commercially licensed only. For open source projects, use iText Core. For commercial applications, compare total cost, including add-ons.
Consider total cost of ownership, not just licenses. iText Core requires the pdfOCR add-on, custom Office conversion, extraction parsers (2–3 months of development), and multiple upgrade cycles. Nutrient’s single license reduces procurement and integration costs. Teams can save up to 40–60 percent when including development time and maintenance.
Nutrient .NET SDK includes ML-powered extraction for key-value pairs, tables, and form fields. For LLM-based natural language extraction and document classification, the AI Document Processing SDK is available separately.
iText Core uses object-oriented patterns (Document, Paragraph, PdfSigner) familiar to .NET developers, and documentation and community resources are available. Nutrient uses method-based APIs with explicit state management. iText Core has a shorter learning curve for PDF-only work, while Nutrient requires more setup but provides broader functionality. For PDF-only work, choose iText Core. For document processing (OCR, extraction, and multi-format), Nutrient’s single API means you avoid learning multiple libraries.
Yes. iText Core supports .NET Standard 2.0+, .NET Core, .NET 5+, and .NET Framework, and it’s actively maintained for modern .NET development. Nutrient supports .NET 6/7/8 and .NET Framework 4.6.2+.