Release Notes


2026.8 - August, 2026
We'll describe in more detail what's been fixed/improved and why you should update:

1. The document page count engine has been improved.
A document format that doesn't have pages is called a flow-based or reflowable document. Its content flows continuously instead of being divided into fixed pages. Examples include:

  • Plain Text (.txt).
  • HTML (.html) (web pages).
  • Markdown (.md).
  • XML (.xml).
  • EPUB (reflowable e-books).
In contrast, page-based document formats include:
  • Microsoft Word (.docx, .rtf, .doc) (uses pages in Print Layout).
  • PDF (.pdf any versions).
  • OpenDocument Text (.odt).

If we’re talking about Document .Net is specifically about Microsoft Word Formats (DOC, DOCX, RTF), the document itself always supports pages in Print Layout. However, if you switch to Web Layout or Draft view, the document is displayed as a continuous flow without visible page boundaries, even though the document still has pages for printing. The same is in PDF .Net (PDF files).

Sautinsoft.Document determines the page count by laying out the document according to its current formatting and then counting the resulting pages. The total can change as you edit because Word continuously recalculates the layout.

The page count depends on factors such as:
  • Paper size (e.g., A4 vs. Letter).
  • Page margins.
  • Page orientation (Portrait or Landscape).
  • Font type and size.
  • Line and paragraph spacing.
  • Headers and footers.
  • Images, tables, and other objects.
  • Section breaks and page breaks.
  • Columns or other page layout settings.

For example, if you increase the font size from 11 pt to 12 pt, the same text may no longer fit on the same number of pages, increasing the page count.

How to see the page count

  • Status bar: The bottom-left corner of the Word window usually displays something like "Page 3 of 12".
  • Print Preview: This shows exactly how the document is paginated for printing.
  • Word Count dialog: Go to Review → Word Count to see the number of pages along with words, characters, paragraphs, and lines.

Why the page count may differ

The same document can have a different number of pages if:

  • It is opened on a system with different printer settings (Word uses the active printer's metrics to help determine layout).
  • The paper size changes (e.g., A4 vs. Letter).
  • Fonts are missing and substituted.
  • Margins or scaling settings are modified.
  • The document is viewed or printed with different layout options.

In short, Sautinsoft’ engine does not estimate pages based on the number of words. It calculates pages from the fully formatted document layout as it would appear when printed or viewed in Print Layout.

Our engine has been improved and now better handles various document formats (DOCX, PDF, DOC, RTF) that do not have a clear understanding of the number of pages. We also added support for the NСalc component inside components for fast and optimal determination of the number of pages.

2. To perform a full-text search in a PDF using C#.

A full-text search in a PDF means searching the actual textual content of a PDF document, rather than just its filename, metadata, or bookmarks. The goal is to find documents (or locations within documents) that contain specific words, phrases, or patterns.

There are several levels of complexity depending on the type of PDF and the search requirements.

  1. Searchable vs. Scanned PDFs
  2. The first thing to understand is that not all PDFs contain text.
    Searchable PDF
    These PDFs contain actual text objects.
    Examples:
    • Microsoft Word → Save as PDF
    • Excel → Export to PDF
    • PDF generated from HTML
    The text can be extracted directly.
    The quick brown fox jumps over the lazy dog.
    Searching simply means examining these text objects.
    Scanned PDF
    A scanned PDF is usually just an image.

    There is no searchable text.

    To perform full-text search, the document must first go through OCR (Optical Character Recognition) to convert the image into text.

  3. How PDF Text Is Stored
  4. Unlike a Word document, PDFs do not store text as paragraphs.
    Instead, they contain many drawing commands.
    Example (conceptually):
    Draw "H" at (100,700)
    Draw "e" at (108,700)
    Draw "l" at (115,700)
    Draw "l" at (118,700)
    Draw "o" at (121,700)

    A PDF library reconstructs these characters into words and sentences before searching.

  5. Basic Full-Text Search
  6. The simplest algorithm is:
    
                                bool found = text.Contains("invoice",
                                StringComparison.OrdinalIgnoreCase);
        

    The methods of SEARCHING in SautinSoft:

    • Phrase Search
    • Multiple Keywords
    • Regular Expression Search
    • Case Sensitivity
    • Whole Word Search
    • Fuzzy Search
    • Indexed Search
    • Highlighting Results

  7. Challenges in PDF Full-Text Search
  8. PDFs are designed for presentation, not logical document structure, so searching isn't always straightforward. Common challenges include:

  9. Typical Architecture
  10. A production-grade PDF search system often follows this pipeline:
  11. Full-Text Search in C#
  12. For .NET applications, the workflow is typically:
    • Open the PDF with a PDF/DOCX SautinSoft library.
    • Extract text from each page.
    • If the PDF is scanned, run OCR first.
    • Search the extracted text using string matching, regular expressions, or an index.
    • Optionally map matches back to page coordinates to highlight them.

    For a few PDFs, extracting text and searching in memory is usually sufficient. For large collections (thousands or millions of documents), building a full-text index with a search engine such as Sautinsoft.Document or SautinSoft.Pdf provides much faster query performance and supports advanced features like relevance ranking, phrase queries, and fuzzy matching.

    To perform full-text search in a PDF .Net using C#, you generally need to:
    1) Extract the text from the PDF.
    2) Search the extracted text for your keyword or phrase.
    Here are the most common approaches.
    Install:
    dotnet add package SautinSoft.Pdf
    Example:
    using System;
    using System.IO;
    using SautinSoft;
    using SautinSoft.Pdf;
    using SautinSoft.Pdf.Content;
    using System.Linq;
    
    namespace Sample
    {
        class Sample
        {
            /// 
            /// Find text in the PDF.
            /// 
            /// 
            /// Details: https://sautinsoft.com/products/pdf/help/net/developer-guide/find-text.php
            /// 
            static void Main(string[] args)
            {
                // Before starting this example, please get a free trial key:
                // https://sautinsoft.com/start-for-free/
    
                // Apply the key here:
                PdfDocument.SetLicense("Serial_key");
    
                string pdfFile = @"Example_01.pdf";
    
                var document = PdfDocument.Load(pdfFile);
                {
                    // 1.   Try to find text "Hello My Friend"
                    var text = document.Pages[0].Content.GetText().Find("Hello My Friend ");
    
                    Console.WriteLine("Found " + text.Count() + " elements of this symbol combination.");
    
                    foreach (var occur in text)
                    {
                        // 2.   Show the bounds of the string " Hello My Friend "
                        Console.WriteLine(occur.ToString());
                        Console.WriteLine(
                            $"Bottom    {occur.Bounds.Bottom}\n"+
                            $"Left      {occur.Bounds.Left}\n" +
                            $"Top       {occur.Bounds.Top}\n" +
                            $"Right     {occur.Bounds.Right}");
    
    
                        //      I create a new PdfQuad with Top and Hight of the found " Hello My Friend "
    
                        double dL = occur.Bounds.Left;
                        double dB = occur.Bounds.Bottom;
                        double dR = occur.Bounds.Right;
                        double dT = occur.Bounds.Top;
                        PdfQuad quad = new PdfQuad(dL, dB, dR, dT);
    
                        // 4.   Show the bounds for GetText
                        Console.WriteLine("\n\nGet text of amount on position:");
                        Console.WriteLine(
                            $"Bottom    {dB}\n" +
                            $"Left      {dL}\n" +
                            $"Top       {dT}\n" +
                            $"Right     {dR}");
    
                        // 5.   GetText with PdfTextOptions
                        var txtOnBounds = document.Pages[0].Content.GetText(new PdfTextOptions
                        {
                            Bounds = new PdfQuad(140, 640, 250, 660),
                            Order = PdfTextOrder.Reading
                        });
    
                        // 6.   Show found amount
                        Console.WriteLine($"\n\nFound Text:\n{txtOnBounds.ToString()}:");
    
                    }
    
                }
            }
        }
    }
        

Advantages

  • Free
  • .NET Support
  • Good text extraction
  • No Adobe dependency

3. Full support for embedded fonts at SautinSoft’ engines.

Embedded fonts in a PDF are font programs that are stored inside the PDF file itself. Instead of relying on the fonts installed on the viewer's computer, the PDF contains the necessary font data, ensuring the document looks the same everywhere.

Why embed fonts?
Embedding fonts provides several benefits:
  • Consistent appearance – Text is rendered exactly as the author intended.
  • Cross-platform compatibility – The PDF displays correctly on Windows, macOS, Linux, mobile devices, and browsers.
  • Reliable printing – Prevents font substitution that can change layout or line breaks.
  • Long-term archiving – Required by standards such as PDF/A.
Types of font embedding
  1. Full embedding
  2. The entire font program is included in the PDF.
    Advantages
    • All characters are available.
    • Text can often be edited without needing the original font.
    • Disadvantages
    • Larger PDF file size.
  3. Font subsetting
  4. Only the glyphs (characters) actually used in the document are embedded.
    For example:
    Original font:
    ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
    Text in PDF:
    HELLO
    Embedded subset:
    H E L O
    Advantages
    • Much smaller PDF.
    • Most PDFs use this approach.
    • Disadvantages
    • If you later edit the PDF and add characters that weren't embedded, the editing software may need access to the original font or substitute another font.

    What happens if fonts are not embedded?

    When a PDF references a font that isn't embedded:
    1) The PDF viewer looks for the font on the local system.
    2) If it cannot find it, it substitutes another font.
    3) The document's appearance may change.

    Possible effects include:
    • Different line wrapping
    • Changed page breaks
    • Misaligned tables
    • Incorrect spacing
    • Missing symbols or non-Latin characters.

    Which fonts cannot be embedded?

    Some commercial fonts have licensing restrictions.
    A font contains an embedding permission (often called the fsType flag in OpenType fonts) that specifies whether embedding is:
    • Installable
    • Editable
    • Preview & Print
    • Restricted (embedding prohibited).
    SautinSoft.PDF typically respects these permissions.
    SautinSoft has strong support for embedded fonts in PDF documents.
    Key capabilities include:
    • ✅ Reads embedded fonts from PDF files.
    • ✅ Preserves embedded fonts during PDF loading and saving.
    • ✅ Supports three modes through PdfLoadOptions.PreserveEmbeddedFonts:
    • Enabled – Always load embedded fonts.
      Disabled – Ignore embedded fonts and use system fonts.
      Auto – Use embedded fonts only when the font is not installed on the system (recommended).

    Example:

    var options = new PdfLoadOptions()
    {
        PreserveEmbeddedFonts = PropertyState.Enabled
    };
    
    DocumentCore dc = DocumentCore.Load("input.pdf", options);
        
    Support for embedded fonts in DOCX has also been added and improved.
    According to the release notes:
    • ✅ Reads DOCX files containing embedded fonts.
    • ✅ Preserves embedded fonts during document processing.
    • ✅ Continual improvements have been made to font subsetting, reducing document size while maintaining rendering quality.

    Font Handling

    When a required font is unavailable, SautinSoft provides:

    • Detection of missing fonts (FontSettingsMissingFonts)
    • Font substitution (FontSettingsAddFontSubstitutes)
    • Font selection events for custom replacement logic

    Unicode and Advanced Font Support

    Recent versions also include expanded support for:
    • TrueType fonts
    • Unicode fonts
    • OpenType ligatures
    • CJK (Chinese, Japanese, Korean)
    • WOFF and other font formats
    • Special glyphs, ornaments, and symbol fonts.

2026.7 - July, 2026
This is the biggest update in a few months (since Jan, 2026). We'll describe in more detail what's been fixed/improved and why you should update:

  • Component stability in multithreading mode.
Our libraries offer more functionality than just simple format conversion. We've eliminated instability and critical errors (crashes) that occurred during multi-threaded document conversion. Over the past few months, extensive work has been done to accelerate single-threaded and multi-threaded modes, and interaction between PDF, DOCX, HTML, RTF, Excel, and other applications has been improved. When implementing parallelism in C#, consider the specifics of your tasks:
  • Parallel.ForEachAsync (Recommended): for I/O-bound tasks (disk and network operations) without thread idleness.
  • Parallel.ForEach: exclusively for CPU-bound tasks (calculations, parsing in memory).

Currently, stable operation is guaranteed for the entire SautinSoft product line.

  • Full support for Chinese, Japanese and Korean languages.
To address difficulties in processing a number of Asian languages, a new text recognition algorithm was implemented. If the original font is unavailable in the operating system or cannot be parsed, the system performs an intelligent substitution. The alternative font is selected with complete precision based on the width, height, and column geometry (example: "YouYuan" -> "SimSun").
  • The Excel’ engine. Reader/Writer.
We’ve added the support of a lot of Unicode fonts in our engine.

2026.6 - June, 2026
We’re excited to officially launch the new version of our Excel .Net 2026.6
Let's see what's new:

  • We've improved the engine for processing layers containing text, images, shapes, and fills.
  • Minor bugs and inaccuracies have been fixed.

2026.5 - May, 2026
We’re excited to officially launch the new version of our Excel .Net 2026.5
Let's see what's new:

  • We implemented some important changes to the library.
  • Minor bugs and inaccuracies have been fixed.
  • We made a lot of changes in the library to reduce the number of memory allocations and the total amount of memory allocated.
  • Improved the parsing of Excel sheets with broken or incorrect structures.

From 5th, May:

  • We implemented some important changes to the library.
  • Minor bugs and inaccuracies have been fixed.
  • We fixed a bug with incorrect processing of some elements when parsing Excel documents.

2026.4 - April, 2026
We’re excited to officially launch the new version of our Excel .Net 2026.4
Let's see what's new:

  • An image-parser improves image optimization behavior by encoding images.
    With this modification, image recompression is now synchronized with the chosen encoding during the optimization process, resulting in more consistent outcomes when resizing images, restricting resolution, and adjusting quality settings.
  • A PDF-engine and a PDF-Writer: Following the release of version 2026.4.X, which emphasized enhancements to table calculations in HTML and PDF readers, improved support for ParagraphFormat, and superior rendering, frequent updates are made available.
    These updates include specialized versions such as PDF. Net, PDF Metamorphosis .Net, PDF Focus .Net, PDF Vision .Net, Document .Net, which are regularly updated to ensure compatibility with the .NET framework.
  • Minor bugs and inaccuracies have been fixed.

From 22nd, April:

  • Minor bugs and inaccuracies have been fixed.
  • Improved handling of table borders and margins in Excel: XLSX.

2026.3 - March, 2026
We’re excited to officially launch the new version of our Excel .Net 2026.3
Let's see what's new:

  • Fixed a bug with the absence of some specific characters in the resulting file.
  • Minor bugs and inaccuracies have been fixed.

2026.2 - February, 2026
We’re excited to officially launch the new version of our Excel .Net 2026.2
Let's see what's new:

  • Fixed a bug preventing the creation of empty XLSX files.
  • Improved component stability under .Net 10.
  • Minor bugs and inaccuracies have been fixed.

From 19th, February:

  • Fixed a bug with empty cells.

2026.1 - January, 2026
We’re excited to officially launch the new version of our Excel .Net 2026.1
Let's see what's new:

  • Fixed the minor issues, found and sent to us from our customers. Therefore the component became more error-free.
  • New functionality and properties have been added.
  • .NET 10.0 support: Starting from the version 2026.1.20 appeared the SautinSoft assemblies compiled for a unified platform .NET 10.0.

    .NET 10.0 support

  • Over the past year:
  • Improved Word document processing speed by 1.6 times.
  • Improved HTML conversion quality by adding new styles, tags, and metadata.
  • Optimized conversion time between formats by 1.3 times using new PDF/WORD/EXCEL engine models.
  • Added new fixes and security patches to meet global standards.
  • The overall quality of our components has improved and become more stable.

2025.11 - November, 2025

We’re excited to officially launch the new version of our .Net 2025.11!
Let's see what's new:

  • XLSX file processing speed has been doubled by optimizing structured data reading parameters.
  • Support for multiple formulas has been added.
  • Customer feedback has been addressed.
  • The quality of tabular data processing has been improved.
  • Cell formatting has been improved.

2025.10.17 - October 17th, 2025

We’re excited to officially launch the new version of our Excel .Net 2025.10!
Let's see what's new:

  • This release enhances formula processing, ensuring more accurate calculations and improved compatibility across complex spreadsheets.
  • Several minor issues have also been resolved to deliver a more stable and reliable conversion experience.

2025.8.12 - August 12nd, 2025

We’re excited to officially launch the new version of our Excel .Net 2025.8!
Let's see what's new:

  • Enhanced Excel file conversion for greater accuracy and formatting preservation.
  • Improved handling of merged cells and complex sheet structures, ensuring better layout fidelity in exported formats.
  • Fixed several minor issues to improve overall stability and performance.

2025.8.4 - August 4th, 2025

We are very excited to officially launch the new version of our Excel .Net 2025.8!
Let's see what's new:

  • This release introduces enhancements to the overall Excel file conversion process.
  • Output to formats like DOCX, RTF, and PDF is now more space-efficient, allowing more content to fit on each page.
  • We've also made improvements to XLSX export and addressed several minor bugs to increase reliability and consistency across various scenarios.

2025.6.5 - June 5th, 2025

We are very excited to announce the official release of our new Excel .Net 2025.6!
This update delivers enhancements focused on improving the fidelity of visual and structural elements during processing. Let's see what's new:

  • Refined the handling of conditional formatting to ensure more accurate color rendering across various cell conditions.
  • Improved image processing.
  • Shape rendering has also been improved, with better color precision and the introduction of support for grouped shapes, allowing for more faithful representation of complex layouts.
  • Several minor bugs have also been addressed to improve overall stability.

2025.4.23 - April 23rd, 2025

We’re excited to officially launch the new version of our Excel .Net 2025.4. Let's see what's new:

  • We’ve introduced subtle under-the-hood refinements designed to reinforce stability, boost responsiveness, and ensure even greater consistency when working with diverse Excel file structures. The component is now better equipped to handle complex scenarios while delivering a smoother overall experience.
  • We’ve updated the default content margins to ensure better alignment when exporting to different formats. In addition, support for a wider range of Excel formulas has been added, allowing for more accurate interpretation and conversion of complex calculations.

2025.2.06 - February 6th, 2025

We are happy to announce about the official release of Excel .Net 2025.2.6! Excel .Net is a standalone C# assembly which gives you full set of API to manipulate (read, write, edit, convert) with documents in XLSX, XLS, CSV formats. The component is completely written in 100% managed C# and help you to:

  • Create and edit Excel files (XLS, XLSX) on the fly or based on existing documents.
  • Formula support: Add, modify, and calculate complex formulas.
  • Formatting options: Customize styles, fonts, colors, borders, merge cells, and more.
  • Data handling: Work with large datasets, including adding, deleting, and updating rows and columns.
  • Multimedia integration: Insert images, charts, and graphs.
  • Compatibility: Read and write Excel files created with various versions of Microsoft Excel.
  • Cross-platform support: Compatible with Windows, macOS, and Linux.