---
layout: default-layout
needAutoGenerateSidebar: true
needGenerateH3Content: true
noTitleIndex: true
title: Dynamsoft Document Viewer - Release Notes
keywords: Documentation, Dynamsoft Document Viewer, Release Notes
breadcrumbText: Release Notes
description: Dynamsoft Document Viewer Documentation Release Notes
permalink: /releasenotes/index.html
---

# Release Notes

## 5.0 (08/13/2026)

### Highlights

Dynamsoft Document Viewer 5.0 introduces a **pluggable architecture**, allowing you to load only the features you need — reducing bundle size and improving performance for your specific use cases.

### Modular Feature Packages

The following features are now packaged as standalone plugins that can be loaded on demand:

* **Camera plugin** (`camera.js`): The Capture Viewer's camera-related JavaScript is now packaged independently. Only applications that need camera capture functionality need to load this module.
* **Annotation plugin** (`annotation.js`): All annotation-related functionality is now packaged independently. If your application doesn't require annotation editing, you can omit this module to reduce the overall bundle size. Note that if the annotation plugin is not loaded, annotation-related UI elements in the viewer configuration will be automatically ignored when creating the viewer.
* **Image PDF parser plugin** (`image-pdf.js`): A new lightweight PDF parsing plugin for loading pure image-based (JPEG and JBIG2) PDFs without the overhead of the full PDF rendering engine. Combined with the newly added support for saving image-based PDFs in the default JavaScript, you can now handle image PDF workflows end-to-end without the PDF WASM module. Note that if you need to process PDFs containing vector graphics or require annotation features, the full PDF WASM module will be automatically loaded when needed.

### WASM Splitting & On-Demand Loading

The default image IO WASM module has been split to improve load times and reduce memory usage:

* **PDF** and **TIFF** modules are now separated from the core image IO WASM module, leaving the core module with only common image format support and licensing functions.
* These format-specific WASM modules are loaded **on demand** — only when your application actually needs to process TIFF or PDF files.
* For pure image-based PDFs, you can use the lightweight [Image PDF parser plugin](#modular-feature-packages) instead, eliminating the need to load the full PDF WASM module.
* This significantly reduces the initial download size, especially for camera-based document scanning scenarios where TIFF/vector PDF processing may not be needed.

### Removed

* Removed `CustomViewer`.
* Removed the dependency of [dynamsoft-core](https://www.npmjs.com/package/dynamsoft-core).

### Other Improvements

* Improved the alignment setting of text and redaction annotations by remembering the applied alignment via UI.
* Improved the speed of [`loadSource()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#loadsource).
* Improved the rendering of text annotations.
* Updated third-party libraries to enhance security.


## 4.0 (04/21/2026)

### New Features

* Added support for [redaction annotation](https://www.dynamsoft.com/document-viewer/docs/features/datamanagement/annotmanagement.md#redaction).
* Changed PDF rendering mode to high-fidelity rendering.

### API Changes

* Added redaction-related interfaces: [`Redaction`](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/redaction.md), [`RedactionAnnotationOptions`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/redactionannotationoptions.md), [`RedactionStyle`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/redactionstyle.md), [`applyRedactions()`](https://www.dynamsoft.com/document-viewer/docs/api/class/annotationmanager.md#applyredactions).
* Added redaction-related UI elements.
* Added `printPreparation` to progress info and renamed attribute `current` to `processed` for `LoadSourceInfo` and `SaveSourceInfo`. See [`InfoObject`](https://www.dynamsoft.com/document-viewer/docs/api/interface/infoobject.md).

### Improvements

Updated third-party libraries to enhance security.

### Bug Fixes

* Fixed loading of interlaced PNGs.
* Fixed loading of some non-standard PDFs with redundant trailing data.



## 3.2.1 (03/10/2026)

Updated third-party libraries to enhance security. 

## 3.2 (01/13/2026)

### Improvements

* Improved the context of search results, which now display the word before the searched word.
* Improved the rendering of selected annotations by reducing the number of items to draw.
* Improved the performance of selecting multiple annotations.
* Added a consistency check between the JavaScript and resource file versions.
* Added support for pinch-to-zoom under `textSelection` mode of `EditViewer` for mobile.
* Updated third-party libraries to enhance security. 

### Bug Fixes

Fixed the text overflow issue in custom stamps.


## 3.1 (10/16/2025)

### UX Changes

For Edit Viewer:

* Added support for panning images in `textSelection` mode.
* Text markup annotations can be modified after being cropped.
* Return to `pan` mode if `textSelection` mode is turned off on mobile by clicking the icon.
* Added support for returning to `pan` mode by pressing ESC.

For Edit Viewer and Browse Viewer:

When the cursor is around the viewer's edges when selecting text or dragging the thumbnails, auto-scrolling will be triggered. It can be configured using the [`enableAutoScrollForTextSelection`](https://www.dynamsoft.com/document-viewer/docs/api/interface/editviewerconfig.md#enableautoscrollfortextselection) property for Edit Viewer and the [`enableAutoScrollForDragPages`](https://www.dynamsoft.com/document-viewer/docs/api/interface/browseviewerconfig.md#enableautoscrollfordragpages) property for Browse Viewer.

### API Changes

Added interfaces for better UI customizability.

* [`getAnnotationDrawingStyle()`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#getannotationdrawingstyle) method for Edit Viewer
* [`undoRedoStateChanged`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#undoredostatechanged) event for Edit Viewer
* [`annotationDrawingStyleChanged`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#annotationdrawingstylechanged) event for Edit Viewer
* [`scroll`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#scroll) event for Edit Viewer and Browse Viewer
* [`paginationChanged`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#paginationchanged) event for all the viewers
* [`cropMode`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#cropmode) property for Edit Viewer. The [`crop()`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#crop) method of Edit Viewer will choose which images to crop based on the `cropMode` if no image indices are passed.

### Improvements

* Increased the FPS of rendering documents, especially documents with lots of pages.
* Optimized the performance of `updateOptions()`.
* Moved the magnifier into a separate layer to improve the performance and avoid being blocked.

### Bug Fixes

* Fixed a bug where changes of the layout will reset the position of the current document page to its top-left.
* Fixed a bug where the text is shifted if the PDF's media box has shifts.

## 3.0 (07/08/2025)

### Features Highlights

* Added support for text selection. We can now copy and annotate selected text.
* Added three text markup annotations: `highlight`, `strikeout` and `underline`.
* Added support for text search.

### API Changes

* Added classes for text markup annotations.
   * [`Highlight`](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/highlight.md)
   * [`Underline`](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/underline.md)
   * [`Strikeout`](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/strikeout.md)
* Added interfaces to set up text markup annotations.
   * [`HighlightAnnotationOptions`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/highlightannotationoptions.md)
   * [`UnderlineAnnotationOptions`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/underlineannotationoptions.md)
   * [`StrikeoutAnnotationOptions`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/strikeoutannotationoptions.md)
   * [`HighlightStyle`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/highlightstyle.md)
   * [`UnderlineStyle`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/underlinestyle.md)
   * [`StrikeoutStyle`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/strikeoutstyle.md)
   * [`RectXY`](https://www.dynamsoft.com/document-viewer/docs/api/interface/rectxy.md)
* Added new [tool mode](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#toolmode) for `EditViewer`: `textSelection`.
* Added new [annotation modes](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#annotationmode) for `EditViewer`: `highlight`, `strikeout` and `underline`.
* Added new buttons in [`ToolbarConfig`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/toolbarconfig.md): `copy`, `highlight`, `strikeout` and `underline`.
* Added new [elements](https://www.dynamsoft.com/document-viewer/docs/ui/default_elements.md) for `EditViewer`:
   * TextSelectionMode
   * TextSearchPanelSwitch
   * TextSearchPanel
   * HighlightAnnotation
   * UnderlineAnnotation
   * StrikeoutAnnotation
* Added text selection and search methods and events for [`EditViewer`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md).
* Added an [`IDocTextSearcher`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/idoctextsearcher.md) interface that can be created using [`createTextSearcher()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#createtextsearcher) of [`IDocument`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md).
* Added [`isPageModified()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#ispagemodified) method to detect whether a page has been modified.
* Added [`getVisiblePagesInfo()`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#getvisiblepagesinfo) for viewers.
* Added new events for viewers.
* Updated [`IPageData`](https://www.dynamsoft.com/document-viewer/docs/api/interface/ipagedata.md) to use Promise functions for computing-intensive operations.
* Updated [`updatePage()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#updatepage) to allow updating a page with PDF page content that has annotations.
* Updated [`addFonts()`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv.md#static-addfonts) to return an array of the names of added fonts.
* Updated [`DisplayTextConfig`](https://www.dynamsoft.com/document-viewer/docs/api/interface/displaytextconfig.md) for new elements.
* Removed the options parameter of [`getDefaultUiConfig()`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv.md#static-getdefaultuiconfig).

### Improvements

* Fixed the ineffective quality parameter of [`saveToJpeg()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#savetojpeg) if a page is unmodified.
* Improved cursor styles.
* Improved the performance of resaving a large PDF file.
   

## 2.1 (12/03/2024)

Version 2.1 of Dynamsoft Document Viewer comes with a suite of exciting new features, improvements to existing features, and performance optimizations.

Dynamsoft Document Viewer now comes with **massively improved performance** for working with huge documents with a large number of high resolution images. Users can expect to load, edit, annotate, and export massive documents with ease.

<iframe width="560" height="315" src="https://www.youtube.com/embed/3OD6wJ60zaA?si=kfXo78tsRbTjhKYL" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

### New Features

- Added `enableMagnifier`, which provides a corner magnifier in the [Edit Viewer](https://www.dynamsoft.com/document-viewer/docs/api/interface/editviewerconfig.md#enablemagnifier) and [Perspective Viewer](https://www.dynamsoft.com/document-viewer/docs/api/interface/perspectiveviewerconfig.md#enablemagnifier). This magnifier creates a zoomed-in view of the selected area to allow for more precise adjustments on touchscreen devices.

- Added keyboard shortcuts for document management. These shortcuts are controlled by [`KeyboardInteractionConfig`](https://www.dynamsoft.com/document-viewer/docs/api/interface/keyboardinteractionconfig.md). All shortcuts are available for the Edit Viewer, and only the navigation and page selection shortcuts are available for the Browse Viewer:
  - Undo/redo
  - Copy/cut/paste
  - Annotation/page selection
  - Scrolling/navigation
  - Cancel/delete

- Added drag-and-drop image loading with the new `enableLoadSourceByDrag` configuration property for the [Edit](https://www.dynamsoft.com/document-viewer/docs/api/interface/editviewerconfig.md#enableloadsourcebydrag), [Browse](https://www.dynamsoft.com/document-viewer/docs/api/interface/browseviewerconfig.md#enableloadsourcebydrag), and [Perspective](https://www.dynamsoft.com/document-viewer/docs/api/interface/perspectiveviewerconfig.md#enableloadsourcebydrag) Viewers  (enabled by default).

- The new [`setAnnotationDrawingStyle`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#setannotationdrawingstyle) method can now be used when creating annotations to set its default drawing style, for example, to set a custom image to use as the default stamp annotation.

- Added the following flags to restrict annotation editing actions: [`noResize`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/flags.md#noresize), [`noRotate`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/flags.md#norotate), [`noMove`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/flags.md#nomove). These flags are preserved when saving to PDF, and respected when importing into DDV from PDF.

- Added a [`flattened`](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/rectangle.md#flattened) property getter/setter to annotation objects, which flattens the **individual** annotation onto the base image layer. This behavior is also preserved upon saving to PDF. For example, a rectangle annotation may be flattened with [`Rectangle.flattened = true`](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/rectangle.md#flattened).

- Added informative task progression messaging using [`InfoObject`](https://www.dynamsoft.com/document-viewer/docs/api/interface/infoobject.md) for event listening. `InfoObject` provides different details for different types.

### Improvements 

- Improved general performance.

- Added support for processing much larger documents (over 1000 pages). See performance improvements compared to version 2.0:


  Win10  i5-7400 CPU @ 3.00GHz
  <table>
    <thead>
      <tr>
        <th>Document Type</th>
        <th>Number of Pages</th>
        <th>File Size</th>
        <th>Load Time</th>
        <th>Peak Memory Use for Loading</th>
        <th>Save Time</th>
        <th>Peak Memory Use for Saving</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <td rowspan="3">Image PDF[96DPI 2160x3840 convertMode ImageOnly]</td>
        <td>100</td>
        <td>92.1MB</td>
        <td>1.3s</td>
        <td>650MB</td>
        <td>1.33s</td>
        <td>780MB</td>
      </tr>
      <tr>
        <td>500</td>
        <td>460MB</td>
        <td>4.5s</td>
        <td>890MB</td>
        <td>12.2s</td>
        <td>1934MB</td>
      </tr>
      <tr>
        <td>1000</td>
        <td>921MB</td>
        <td>9.7s</td>
        <td>960MB</td>
        <td>24.07s</td>
        <td>4GB</td>
      </tr>
      <tr>
        <td rowspan="3">Text PDF[A4 convertMode render]</td>
        <td>100</td>
        <td>2.61MB</td>
        <td>0.411s</td>
        <td>330MB</td>
        <td>0.290s</td>
        <td>340MB</td>
      </tr>
      <tr>
        <td>500</td>
        <td>13.0MB</td>
        <td>1.185s</td>
        <td>446MB</td>
        <td>2.427s</td>
        <td>556MB</td>
      </tr>
      <tr>
        <td>1000</td>
        <td>26.1MB</td>
        <td>2.777s</td>
        <td>540MB</td>
        <td>4.861s</td>
        <td>590MB</td>
      </tr>
    </tbody>
  </table>

- The annotation toolbar and annotation palette in the Edit Viewer are now optional and can be toggled with [`toolbarConfig`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/toolbarconfig.md) and [`paletteConfig`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationinterface/paletteconfig.md) from [`annotationConfig`](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationconfig.md).

- Removed page scrolling with mouse scroll wheel and touchscreen swiping in single page mode.

- Improved page selection performance in the thumbnail gallery.

## 2.0 (08/20/2024)

**We are excited to introduce version 2.0, which focuses on adding a powerful new annotation feature. This release includes comprehensive support for various types of annotations, new APIs for managing annotations, and advanced UI capabilities for seamless interaction.**

Supported Annotation Types:

- [Rectangle](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/rectangle.md)
- [Ellipse](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/ellipse.md)
- [Polygon](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/polygon.md)
- [Polyline](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/polyline.md)
- [Line](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/line.md)
- [Ink](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/ink.md)
- [TextBox](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/textbox.md)
- [TextTypewriter](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/texttypewriter.md)
- [Stamp](https://www.dynamsoft.com/document-viewer/docs/api/class/annotation/stamp.md)

### Built-in UI for Annotation

#### Direct Annotation Operations in the UI

- Add, select, and delete annotations
- Drag, resize, and rotate selected annotations
- Real-time editing of annotation styles using the palette

#### New Built-in Elements

- Added built-in elements to enhance UI configuration flexibility.

### New APIs for Annotation

- Added the namespace [Dynamsoft.DDV.annotationManager](https://www.dynamsoft.com/document-viewer/docs/api/class/annotationmanager.md) and APIs for annotation management:

  - Create, delete, and retrieve annotations based on various conditions
  - Adjust annotation hierarchy
  - Handle events triggered by annotation operations

- Added the property [annotationConfig](https://www.dynamsoft.com/document-viewer/docs/api/interface/editviewerconstructoroptions.md#annotationConfig) to EditViewerConstructorOptions for configuring the annotations in the viewer, including the toolbar, palette, and default annotation style:

  - [annotationSelectionStyle](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationconfig.md#annotationSelectionStyle): Defines the style of annotation selection.
  - [inkCreateDelay](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationconfig.md#inkCreateDelay): Specifies the delay for ink creation to support annotations created in multiple strokes.
  - [showOnTopWhenSelected](https://www.dynamsoft.com/document-viewer/docs/api/interface/annotationconfig.md#showOnTopWhenSelected): Determines whether the selected annotation should be displayed on the top layer.

- Added the method [`<static> addFonts()`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv.md#static-addfonts) to add fonts to the library.

- Added the method [`selectAnnotations()`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#selectannotations) to select the specified annotation(s) on the current page.

- Added the method [`getSelectedAnnotations()`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#getselectedannotations) to retrieve selected annotation(s).

- Add properties [`mediaBox`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/pagedata.md#mediaBox) and [`cropBox`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/pagedata.md#cropBox) to [`PageData`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/pagedata.md) for accurate annotation position calculation.

- Added the property [`annotationMode`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#annotationmode) to specify or return the annotation mode of the viewer.

- Add the property `saveAnnotation` to the interfaces [`SavePngSettings`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/savepngsettings.md), [`SaveJpegSettings`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/savejpegsettings.md), or [`SaveTiffSettings`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/savetiffsettings.md) to determine whether annotations are saved as part of the image when calling [`document.saveToPng()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#saveToPng), [`document.saveToJpeg()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#saveToJpeg), or [`document.saveToTiff()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#saveToTiff).

- Added the property [`saveAnnotation`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/savepdfsettings.md#saveAnnotation) to the interface [`SavePdfSettings`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/savepdfsettings.md)  to configure whether annotations should be saved  when [`document.saveToPdf()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#saveToPdf) is called.

- Add the parameter [`defaultUiConfigOptions`](https://www.dynamsoft.com/document-viewer/docs/api/interface/defaultuiconfigoptions.md) to [`<static> getDefaultUiConfig()`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv.md#static-getdefaultuiconfig) to retrieve configurations including annotations.

- Add the parameter [`printSettings`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/printsettings.md) to the [`document.print()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#print)  to specify whether printable annotations should be included in the print.

- Added the type `annotation` to [`ToolMode`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#toolMode) to enable a mode that allows annotations to be manipulated via the UI.

- Added the type `annotationSelectionStyle` to [`EditViewerStyleName`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#getStyle) for retrieving or updating the annotation selection style.

### Other New APIs

Additionally, we've optimized performance and added several new features to enhance the overall user experience.

- Added the property [`password`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/savepdfsettings.md#password)  to the interface [`SavePdfSettings`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/savepdfsettings.md) for configuring the password of the PDF file to save when [`document.saveToPdf()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#saveToPdf) is called.

- Added the property [`imageScaleFactor`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/savepdfsettings.md#imageScaleFactor)  to the interface [`SavePdfSettings`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/savepdfsettings.md) for configuring the image scale factor of the PDF file to be saved when [`document.saveToPdf()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#saveToPdf) is called.

### Improved

- Optimize the display effect of images in thumbnails.
- Optimize the interactive experience of scaling.
- Modified the type of [`PdfSource.renderOptions.renderAnnotations`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/pdfsource.md#renderAnnotations) to support reading annotations.
- The method `openDocument()` supports the UID or the document object. This affects the `openDocument()` method in the [`EditViewer`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#openDocument), [`PerspectiveViewer`](https://www.dynamsoft.com/document-viewer/docs/api/class/perspectiveviewer.md#openDocument), [`CaptureViewer`](https://www.dynamsoft.com/document-viewer/docs/api/class/captureviewer.md#openDocument), and [`BrowseViewer`](https://www.dynamsoft.com/document-viewer/docs/api/class/browseviewer.md#openDocument) classes.

### Changed

- Change the length unit from pixel to point for functions and events related to cropping, for example, [`crop()`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#crop), [`getCropRect()`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#getCropRect), [`setCropRect()`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#setCropRect), [`cropRectDrawn`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#cropRectDrawn), [`cropRectDeleted`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#cropRectDeleted),[`cropRectModified`](https://www.dynamsoft.com/document-viewer/docs/api/class/editviewer.md#cropRectModified).
- Change the units of the parameters pageWidth and pageHeight in the method [`insertBlankPage`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#insertblankpage) from inches to points.
- The related date string format change shifts from format D:YYYYMMDDHHmmSS to D:YYYYMMDDHHmmSSOHH'mm'.

## 1.1 (01/12/2024)

### Improved

- Optimized compatibility with browsers. [>> Detail](https://www.dynamsoft.com/document-viewer/docs/gettingstarted/sys_requirements.md#supported-browsers)

### Added

- Added the namespace [`Dynamsoft.DDV.Core`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md).

- Added the property [`license`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md#license) to specify the license string.

- Added the property [`engineResourcePath`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md#engineresourcepath) to specify the path leading to a folder containing the distributed WASM files.

- Added the property [`deviceFriendlyName`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md#devicefriendlyname) to specify a human-readable name for the device which corresponds to its UUID.

- Added the method [`loadWasm()`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md#loadwasm) to load WASM modules before initializing.

- Added the method [`init()`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md#init) to initialize DDV.

- Added the method [`insertBlankPage()`](https://www.dynamsoft.com/document-viewer/docs/api/interface/idocument/index.md#insertblankpage) to insert a blank page to the document.

### Removed

The following API is removed.

| API Name                  | Notes                                                        |
| ------------------------- | ------------------------------------------------------------ |
| `Dynamsoft.DDV.setConfig()` | Use [`Dynamsoft.DDV.Core.license`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md#license),  [`Dynamsoft.DDV.Core.engineResource`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md#engineresourcepath), [`Dynamsoft.DDV.Core.deviceFriendlyName`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md#devicefriendlyname), [`Dynamsoft.DDV.Core.init()`](https://www.dynamsoft.com/document-viewer/docs/api/namespace/ddv_core.md#init) instead. |

## 1.0.0 (12/26/2023)

Dynamsoft Document Viewer (DDV) is a versatile SDK designed to offer a range of viewers for configuring and executing various document processing workflows.

### Highlights

#### Efficient Data Management

Organize, retrieve, and manage documents and pages efficiently: 
- Document Management: Document creation/deletion/merging, etc.
- Page management: Pages in documents loading/saving/deleting/moving, etc.

#### Various Viewers 

Various kinds of viewers implement different document processing flows:
- Edit Viewer: Edit the pages in document, such as, rotating, cropping, filtering, etc. and adjust the layout of the display.
- Capture Viewer: Control camera, play video stream, and capture the images from camera.
- Perspective Viewer: Do page boundaries manual adjustment & perspective transformation.
- Browse Viewer: Display pages in multiple-mode, pages can be multiple selected.
- Custom Viewer: No built-in UI or functionality, which is used for creating your own viewer.

#### Flexible Customization

Besides using the default user interface and viewer directly, developers can easily and flexibly customize them:
- [User Interface](https://www.dynamsoft.com/document-viewer/docs/ui/index.md): Layout, elements
- [Viewer](https://www.dynamsoft.com/document-viewer/docs/viewer/index.md): Styles, viewer properties

#### Advanced Features

DDV provides methods to access document boundaries detection and image filter algorithms.
- [Image filter](https://www.dynamsoft.com/document-viewer/docs/features/advanced/imagefilter.md): Image filter algorithm which is used by Filter element in Edit Viewer.
- [Document detection](https://www.dynamsoft.com/document-viewer/docs/features/advanced/documentdetect.md): Document boundaries detection algorithm which is used during capturing images. Recommend using [Dynamsoft Document Normalizer](https://www.dynamsoft.com/document-normalizer/docs/web/programming/javascript/api-reference/document-normalizer-module.html?lang=javascript).
