Skip to main content Skip to footer

What's New in Document Solutions v8.2

We’re excited to share the new releases in Document Solutions v8.2! This update introduces new enhancements across our API products, along with the ability to apply AI to PDF processing programmatically. Additionally, DsPdfViewer has been updated with improved user interfaces, and DsImageViewer has a new text and object tool to quickly apply shapes to your images. Explore the highlights for each product below:

Ready to check out the release? Download Document Solutions today!

Document Solutions for PDF (DsPdf)

AI-Powered PDF Processing

The v8.2 release introduces a powerful new package, DsPdfAI, designed to showcase how Document Solutions for PDF can integrate with AI services to enhance PDF document workflows. This feature allows developers to leverage OpenAI or Azure OpenAI to generate summaries, create outline trees, and extract structured tables data directly from PDFs.

Supported Scenarios

Currently, DsPdfAI supports the following three AI-driven PDF processing capabilities:

  • Generate a Document Summary - Quickly produce short or long summaries of any PDF document.
    Programmatically Generate a PDF Document Summary using DsPdfAI in C# or VB
  • Build a Document Outline Tree - Automatically generate a structured table of contents, complete with nested outline levels.
    Automatically generate a structured table of contents using AI capabilities included in a .NET PDF API
  • Extract Tables from a Document - Use natural language prompts to identify and extract tabular data from a PDF.
    Extract Tables from a PDF using PDF API AI Capabilities

These features are built on top of the OpenAI Chat API, with options to connect either via the official OpenAI .NET client library or the Azure OpenAI service.

API Overview

The new package introduces two main classes, both inheriting from a shared base class for core functionality:

  • OpenAIDocumentAssistant - Connects to the OpenAI REST API using the official .NET client library.
  • AzureOpenAIDocumentAssistant - Connects to Azure OpenAI services using the Azure.AI.OpenAI package.

Both derive from OpenAIDocumentAssistantBase, which implements the logic for extracting text via Page.GetText() and sending content to the AI service for processing. The pageRange parameter allows developers to limit requests to specific sections of a PDF.

Check out the code below to see how to implement the AI-powered features in DsPdf:

//
// --- Using OpenAI ---
//
var doc = new GcPdfDocument();
using var fs = File.OpenRead("myDocument.pdf");
doc.Load(fs);
var openAiToken = @"myToken";
var a = new OpenAIDocumentAssistant(openAiToken);
// Get the abstract for a PDF:
string @abstract = await a.GetAbstract(doc);
// Get the summary:
string summary = await a.GetSummary(doc);
// Build outlines:
await a.BuildOutlines(doc);
dos.Save("myDocumentWithOutlines.pdf");
// Get a GrapeCity.Documents.Pdf.AI.Table object from the PDF
// (2nd argument is the verbal request to AI describing the table to get):
var t = await a.GetTable(doc, "Get the \"Orders\" table from the document.");

Platforms Supported

  • OpenAI REST API (via the official .NET client)
  • Azure OpenAI Service (via the Azure.AI.OpenAI package)

Help | Demo


Document Solutions PDF Viewer (DsPdfViewer)

DsPdfViewer.wasm Now Supports Export to SVG

In the v8.2 release, the WebAssembly implementation of DsPdfViewer now supports saving and exporting a loaded-in PDF file to SVG format, which will be included within a .zip file after exporting to SVG format.

JavaScript Wasm PDF Viewer supports export to SVG

Demo

Redesigned Toolbar and Navigation for Better Usability

With the v8.2 release, DsPdfViewer introduces a redesigned toolbar and navigation system to improve usability, consistency, and customization across viewing and editing modes. These changes ensure that the most frequently used actions are easier to access, while still allowing backward compatibility for users who prefer the legacy layout.

Toolbar Layout Improvements

The toolbar has been restructured to prioritize commonly used actions and streamline the interface. If the old layout/behavior is desired, it can be restored by following the commands shown in the CHANGELOG.md file included with the release.

  • New Default Order
    • View mode: Open → Save → Print → Search (moved Open to the front for faster access)
    • Edit mode: Added Open before Save
  • Removed from Default Toolbar
    • Full Screen
    • Themes
    • Extract Table (moved to the side panel)
  • Form Filler Button
    • Now appears only in the mobile toolbar by default.
    • Optimized for smaller screens like tablets and phones, where form-filling is common.

New Toolbar

New JavaScript PDF Viewer Toolbar

Old Toolbar

Older JavaScript PDF Viewer

Side Panel Enhancements

The side panel has been updated for a more intuitive workflow, with a new default order and icon updates.

  • New Default Order:
    Document List → Shared Documents → Search → Thumbnails → Outline → Structure Tree → Articles → Layers → Attachments → Extract Table
  • Updated Extract Table Icon - Now displays a table with a right-pointing arrow for clarity.
New Side Panel Old Side Panel
New JavaScript PDF Viewer Side Bar Old JS PDF Viewer Side Panel

Navigation Controls & Keyboard Support

Navigation is now more compact, customizable, and accessible.

  • Visual Updates
    • Compact page navigation input
    • First/Last page buttons hidden by default
    • Improved page counter display logic
  • Keyboard Shortcuts (when page input is focused):
    • ← / → : Navigate pages (context-aware)
    • ↑ / ↓ : Force page navigation
    • PageUp / PageDown : Jump to previous/next page
    • Home / End : Jump to first/last page
    • Enter : Submit manual entry
    • Escape : Cancel input
    • Ctrl + Click on page arrows : Jump to first/last page
  • New Semantic CSS Classes
    .gc-btn.go-to-first  
    .gc-btn.go-to-last  
    .current-page-input  
    .gcv-page-input__text 

Overlapping Annotations Handling (Editor Mode)

When multiple annotations overlap, users now get clearer and more precise control:

  • Primary Context Menu shows actions for the topmost annotation.
  • Additional Annotations Section lists other overlapping annotations below a separator.
  • Clicking any listed annotation switches focus for editing.

When multiple annotations overlap, users now get clearer and more precise control:

Context Menu & UI Standardization

To ensure consistency and professionalism, the interface now follows standardized formatting for all text elements:

  • Buttons / Menu Items / Headers: Title Case
  • Tooltips: Sentence case
  • Labels: Title Case
  • Descriptions / Status Text: Sentence case
  • Placeholders: Sentence case
  • Technical Terms: Original case (e.g., PDF, URL, iOS)
  • Dynamic Values:
    • In Actions: Title Case → “Add {{count}} Files”
    • In Descriptions: Original case → “{{count}} files processed”

API Enhancements

Developers can customize navigation more precisely with new configuration options:

navigation: {
  showFirstButton: false,  
  showLastButton: false,  
  showPageInput: true,  
  pageCounterFormat: "Page {{current}} of {{total}}",  
  emptyPageCounterFormat: "-- No Document --",  
  pageInputWidth: 100,  
  buttonSizing: "compact", // Options: 'standard', 'custom'
}

Help | Migration Guide to Old Layout | Release Notes (List of changes in the layout) | Demo


Document Solutions for Excel (DsExcel)

  1. Performance Optimizations
  2. Support the FitSelection option setting in Zoom for chart sheets
  3. AcceptErrors option in Custom Function
  4. Get or set alternative text for Shapes
  5. Eta-reduced lambda - a simplified way to use Lambda functions
  6. New Excel functions - GROUPBY, PIVOTBY, PERCENTOF, TRIMRANGE
  7. Add more options to ShapeType enum.
  8. Get sheet count and name of SpreadJS Worksheet tabs
  9. Evaluate2 function to return spilled values
  10. Support for Logging system in DsExcel Java
  11. SpreadJS integration features

Document Solutions for Word (DsWord)

Update TOA and TA Fields

DsWord now provides APIs to work with TOA (Table of Authorities) and TA (Table of Authorities Entry) fields, making it easier to build and manage legal or reference-heavy documents programmatically.

The new ToaFieldOptions class enables developers to read and modify TOA field options, while the ToaPageNumberOptions class controls how page numbers are displayed. A CitationCategoryMap class has also been added to retrieve citation category names for more accurate categorization.

For TA fields, the new TaFieldOptions class allows reading and writing of TA field options, which define the text and page numbers or ranges for individual TOA entries. Together, these enhancements give developers full control to generate, update, and customize TOA and TA fields in Word documents.

The following code shows how to update TOA and TA fields programmatically:

// create a table of authorities entry options
TaFieldOptions ta = new TaFieldOptions(doc);
// set the category for the table of authorities entry 
ta.Category = 1;
ta.LongCitation.Text = "Anderson v. United States, 612 F.2d 1112 (9th Cir.1980)";
// create the invisible table of authorities entry field with specified options
p.AddComplexField(ta);
// add visible text to the same paragraph
p.AddRun(" Anderson v. United States");
// do the same for the other entries
ta.LongCitation.Text = "Duff v. Wilson, 69 Pa. 316 (Pa. 1871)";
p.AddComplexField(ta);
p.AddRun(", Duff v. Wilson");
ta.LongCitation.Text = "Sandstrom v. Larsen, 59 Haw. 491, 583 P.2d 971 (1978)";
p.AddComplexField(ta);
p.AddRun(" and Sandstrom v. Larsen.");
// create paragraph for the table of authorities field
p = doc.Body.AddParagraph();
// create options for the table of authorities field
ToaFieldOptions toa = new ToaFieldOptions(doc);
// set the category to include table of authorities entries
toa.EntriesCategory = 1;
// create table of authorities field with specified options
ComplexField field = p.AddComplexField(toa);
// build the table of authorities
field.Update();

Easily generate and customize legal references in Word documents with the new TOA and TA field APIs.

Help | Demo

Get List of Template Tags Defined in the Document

DsWord now provides a new API to retrieve all template tags (placeholders such as {{CustomerName}}) defined in a Data Template. Using the DataTemplate.GetTemplateTagInfos() method, developers can obtain a list of TemplateTagInfo objects that provide details such as the tag’s name, type, range, and text. This makes it easy to analyze or store placeholder information for reporting, data validation, or role-based permissions.

The following code showcases the new GetTemplateTagInfos() method in the DataTemplateclass:

// New method on the DataTemplate class:
public class DataTemplate
{ 
    // Gets the list of templates in the current document.
    List<TemplateTagInfo> GetTemplateTagInfos();
}

Quickly retrieve template tags to integrate with back-end systems or data workflows.

Help | Demo

Access Template Tags and Locations in the Exported PDF

When exporting a DsWord document to PDF, you can now mark template tag locations for accessibility, validation, or review. By setting WordLayoutSettings.MarkTemplateTagAreas = true, DsWord records the positions of template tags during layout. Developers can then use the PdfOutputSettings.MarkupTemplateTags delegate to add custom markup, such as PDF annotations, to highlight these tags on each page.

The code below showcases how to accomplish such a scenario:

// To use the API when exporting the DOCX:
// - Set MarkTemplateTagAreas to true in WordLayoutSettings, and
// - Specify your custom MarkupTemplateTags method in PdfOutputSettings.
public class MarkTagsInPDF
{
    public GcWordDocument CreateDocx()
    {
        var doc = new GcWordDocument();
        doc.Load(Path.Combine("Resources", "WordDocs", "House_Rental_Template.docx"));
        return doc;
    }

    public static WordLayoutSettings GetWordLayoutSettings()
    {
        return new WordLayoutSettings()
        {
            MarkTemplateTagAreas = true
        };
    }

    // Custom PDF output settings include a MarkupTemplateTags method
    // that adds markup annotations over Report/Data Template tags
    // present in the original DOCX.
    public static PdfOutputSettings GetPdfOutputSettings()
    {
        var settings = new PdfOutputSettings()
        {
            MarkupTemplateTags = (page, tags) =>
            {
                foreach (var tag in tags)
                {
                    foreach (var rect in tag.Areas)
                    {
                        var hilight = new TextMarkupAnnotation
                        {
                            Area = [rect],
                            Color = Color.YellowGreen,
                            MarkupType = TextMarkupType.Highlight,
                            Opacity = 0.4f,
                            RichText = $"Tag Info:<br>Name: <b>{tag?.Info?.Name}</b><br>Text: <b>{tag?.Info?.Text}</b>",
                        };

                        page.Annotations.Add(hilight);
                    }
                }
            }
        };
        return settings;
    }
}

Easily identify and highlight template tags in exported PDFs to support accessibility and review workflows.

Help | Demo


Document Solutions Image Viewer (DsImageViewer)

Text and Object Tool

DsImageViewer now includes a new Text and Object tool on the main toolbar, enabling users to quickly insert and customize predefined objects such as shapes, text, and images. When selected, it opens a secondary toolbar for choosing object types and a properties panel where users can adjust settings for the selected object.

JavaScript Image Viewer Text and Object Toolbar

The secondary toolbar supports inserting Text boxes, Rectangles, Lines, Arrows, Ellipses, Brackets, and Images. Each object includes configurable properties such as font, size, color, opacity, line styles, rotation, and more. For example, lines support start and end cap styles like arrows, circles, diamonds, and stars, while images allow options such as border radius, fill color, and aspect ratio control.

JavaScript Image Viewer Text and Object tool - quickly insert and customize shapes, text, and images.

The following code shows how to override the default layout of the objectTools toolbar by specifying a custom set and order of tools:

  viewer.addPlugin(new PaintToolsPlugin({ toolbarLayout: { 
      objectTools: ["Ellipse", "Rectangle", "Apply", "Cancel"] 
  }}));

Quickly add and customize visual elements in images using the new Text and Object tool in DsImageViewer.

Help | Demo

Ready to check out the release? Download Document Solutions today!

comments powered by Disqus