1.19 release notes
RSSNutrient Web SDK 1.19 adds programmatic execution of PDF actions, line spacing control for text and form field annotations, and a configurable Standalone page cache limit. It also brings annotation tab order to Document Engine mode, strengthens screen reader support, updates GdPicture, and ships a broad round of memory, rendering, and forms fixes. This release also removes duplicate localization keys, which requires an update if you override them. See the changelog for full details.
Execute PDF actions programmatically
You can now execute PDF actions from your own code with instance.executeAction() instead of relying on a user activating them in the UI. This works with action objects returned by APIs such as getDocumentOutline() and getBookmarks(), with actions attached to link annotations, and with actions you construct yourself.
- Execution is fail-fast: Traversal of the action tree stops at the first error and the returned promise is rejected. Side effects from actions that already ran aren’t rolled back.
- In server-backed mode, JavaScript actions require an execution context. Use the
contextoption to pass the triggering annotation or form field.
// Execute the action of the first document outline element.const outline = await instance.getDocumentOutline();const firstItem = outline.first();
if (firstItem?.action) { await instance.executeAction(firstItem.action);}
// Execute an action you construct yourself.await instance.executeAction( new NutrientViewer.Actions.GoToAction({ pageIndex: 5 }));
// Execute a JavaScript action with annotation context.await instance.executeAction(linkAnnotation.action, { context: { type: "annotation", annotation: linkAnnotation }, triggerEventType: "onPointerDown",});For more information, refer to the PDF actions guide.
Line spacing for text and form field annotations
Text annotations and widget annotations now expose a lineSpacing property that controls the spacing between lines of text. The value is the total line height in PDF points, measured baseline to baseline, and is independent of the font size:
const textAnnotation = new NutrientViewer.Annotations.TextAnnotation({ pageIndex: 0, boundingBox: new NutrientViewer.Geometry.Rect({ left: 50, top: 50, width: 300, height: 120, }), fontSize: 12, text: { format: "plain", value: "First line\nSecond line", }, // Total line height in PDF points, independent of `fontSize`. lineSpacing: 18,});
await instance.create(textAnnotation);Configurable Standalone page cache
In Standalone mode, the page cache is now capped at 256 MiB by default. It was previously unbounded, which allowed long viewing sessions over large documents to retain more memory than necessary. Use the new pageCacheSizeInBytes option to raise or lower the limit to suit your documents and target devices:
NutrientViewer.load({ // ...your existing configuration. pageCacheSizeInBytes: 512 * 1024 * 1024, // 512 MiB});The currently active page can still exceed this limit when that page alone requires more memory.
Annotation tab order in Document Engine mode
instance.getPageTabOrder() is now supported in Document Engine mode, so you can read the keyboard navigation order of a page’s annotations and form fields with the same API in both backends. Document-defined annotation tab order requires Document Engine 1.18.0 or later. Against earlier versions, Web SDK doesn’t request the unsupported endpoint and retains fallback tab ordering. The method reports that the Document Engine version doesn’t provide the document-defined order.
Independent callout text box positioning
Callout annotations are easier to lay out. You can now move a callout’s text box on its own by clicking and dragging it, leaving the callout line and its end point in place. A plain click still enters text edit mode, so existing editing behavior is unchanged.
Accessibility
This release improves screen reader support across comments, sidebars, Form Creator, and Document Editor. The comment sidebar animation now honors the prefers-reduced-motion setting.
Localization changes
Duplicate and dotted localization keys are removed, so each string now has exactly one canonical key. If you override any of the affected keys through custom translations, update them to the new names.
| Old key | New key |
|---|---|
TextComparison.filterInstruction | TextComparison_filterInstruction |
FormCreator | formCreator |
multiline | multiLine |
This release also fixes the custom color picker showing raw translation keys when using the en-GB locale. For more information on overriding translations, refer to the localization guide.
Document Engine 1.5.6 or later can run this release. In server-backed mode, using SearchType.WORD_BASED, removing password protection during PDF export, and removing annotation notes after an XFDF roundtrip require Document Engine 1.16.0 or later. Document-defined annotation tab order requires Document Engine 1.18.0 or later. See the Web SDK and Document Engine compatibility requirements.
For a complete list of changes, bug fixes, and improvements, refer to the changelog. For previous release notes, refer to the Web SDK 1.18 release notes. We appreciate your feedback and contributions as we continue to enhance Nutrient Web SDK.