14.4 release notes

RSS

Nutrient .NET SDK 14.4.0 introduces a packaging change for desktop viewers and significant performance improvements in PDF processing workflows.

Breaking change: WinForms and WPF viewers are now separate packages

Starting with 14.4.0, viewer components are distributed as dedicated NuGet packages.

Use the following packages:

  • GdPicture.API (core cross-platform processing API)
  • GdPicture (Windows wrapper package around GdPicture.API)
  • GdPicture.WinForms (WinForms viewer controls)
  • GdPicture.WPF (WPF viewer controls)

This separation helps reduce package footprint by letting you install only the viewer stack your application uses.

Impact on existing projects

When upgrading from earlier versions:

  • Keep GdPicture installed for Windows projects.
  • Add GdPicture.WinForms if your project uses WinForms viewer controls.
  • Add GdPicture.WPF if your project uses WPF viewer controls.

Projects that use viewer controls but only reference the base package won’t compile until the corresponding viewer package is added.

Upgrade steps

  1. Update NuGet packages to 14.4.0 or newer.
  2. Keep or add GdPicture.
  3. Add the viewer package for your UI framework.
  4. Rebuild the solution.
  5. Verify viewer-related screens and workflows.

Example: WinForms project

Terminal window
dotnet add <ProjectName>.csproj package GdPicture.WinForms

Example: WPF project

Terminal window
dotnet add <ProjectName>.csproj package GdPicture.WPF

Performance improvements

Compared to 14.3.1, 14.4.0 includes major improvements in several document-generation and extraction workflows. In some contexts, we’ve seen up to a 90 percent speed increase.

Benchmark context:

  • BenchmarkDotNet v0.15.8, macOS Tahoe 26.4 (25E246) [Darwin 25.4.0]
  • Apple M4 Max, 1 CPU, 16 logical and 16 physical cores
  • .NET SDK 10.0.100
  • [Host] : .NET 10.0.0 (10.0.0, 10.0.25.52411), Arm64 RyuJIT armv8.0-a
  • GdPicture 14.3.1 : .NET 10.0.0 (10.0.0, 10.0.25.52411), Arm64 RyuJIT armv8.0-a
  • GdPicture 14.4.0 : .NET 10.0.0 (10.0.0, 10.0.25.52411), Arm64 RyuJIT armv8.0-a
  • Runtime=.NET 10.0 Server=True IterationCount=3
  • LaunchCount=1 WarmupCount=3
MethodJobMeanErrorStdDevTime changeRatioSDAllocatedMemory change
PDF/A generationGdPicture 14.3.12,346.6 ms191.34 ms10.49 msbaseline2092.42 MBbaseline
PDF/A generationGdPicture 14.4.0187.9 ms40.95 ms2.24 ms92% faster1.1%278.81 MB87% less memory
PDF/UA generationGdPicture 14.3.12,277.4 ms178.58 ms9.79 msbaseline2092.42 MBbaseline
PDF/UA generationGdPicture 14.4.0914.3 ms117.37 ms6.43 ms60% faster0.7%1157.08 MB45% less memory
PDF to MarkdownGdPicture 14.3.120,611.3 ms726.78 ms39.84 msbaseline3152.81 MBbaseline
PDF to MarkdownGdPicture 14.4.01,224.8 ms239.26 ms13.11 ms94% faster0.9%1810.33 MB43% less memory
PDF GenerationGdPicture 14.3.12,289.8 ms96.39 ms5.28 msbaseline2092.24 MBbaseline
PDF GenerationGdPicture 14.4.0199.4 ms265.09 ms14.53 ms91% faster6.3%395.42 MB81% less memory

You can run the benchmark sample project from our public benchmark repository(opens in a new tab) or download the benchmark results.

Additional improvements in 14.4.0

This release also includes improvements and fixes across Office conversion and document parsing, including:

  • Improved rendering of graphic objects, footnotes, and endnotes in Office documents.
  • Improved pagination of floating blocks in Office headers and footers.
  • Improved field parsing across multiple content runs.
  • Improved memory consumption when rendering Excel files.
  • Fixes for fake encrypted XLS parsing.
  • Fixes for dropdown field parsing in Office documents.
  • Fixes related to COM environments.
  • Improvements to HTML-to-PDF conversion.

For a complete list of fixes and improvements included in 14.4.0, refer to the changelog.