﻿# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [9.1.3] - 08-Jul-2026
### Fixed
- Fixed an issue where `PdfPage.saveAsPng()` generated incorrect results after calling `savePdf()` more than once on the same document. (DOC-7717)
- Fixed an issue where TrueType (TTC) and WOFF fonts were incorrectly embedded in the generated PDF when `FontEmbedMode` was set to `EmbedFullFont`, causing rendering issues in some browsers. (DOC-7719)
- Fixed several issues discovered during an internal code review of the DsPdfJS codebase. (DOC-7714)

## [9.1.2] - 24-Jun-2026
### Fixed
- Fixed an issue where setting the `SoundAnnotation.icon` property to "Speaker" returned a null value instead of preserving the assigned icon name. (DOC-7618)
- Fixed an issue where a `HatchBrush` fill was not applied in the exported PDF when a page was first saved as PNG before saving as PDF. (DOC-7639)
- Fixed an issue where setting `TextField.text` to an empty string threw an exception after exporting form data via `exportFormDataToFDF`. (DOC-7640)
- Fixed an issue in DsPdfJS where reloading a PDF that contained a `LinkAnnotation` with a JavaScript action caused an exception to be thrown. (DOC-7641)

## [9.1.1] - 04-Jun-2026
### Fixed
- Fixed an issue where `PdfDocument.pages.clone()` did not clone form fields and annotations even when `cloneFields` or `cloneAnnotations` parameters were set to `true`. (DOC-7621)
- Fixed an issue where `importFormDataFromFDF()` failed to import some form field data from FDF files. (DOC-7620)
- Fixed an issue where `getText()` returned incorrect content when extracting text from redacted PDFs. (DOC-7617)
- Fixed an issue with inconsistent graphics rendering when applying `RadialGradientBrush` to shapes. (DOC-7570)
- Fixed an issue where `deleteText()` removed content that should not have been deleted. (DOC-7526)

### Changed
- Changed the default angle units for rotation transforms from **Degrees** to **Radians** (to align with the HTML canvas API). If your code passed degree values, convert them to radians or specify angle units explicitly.

### Added
- Added new properties:
  - `get DrawingContext.width(): number;`
  - `get DrawingContext.height(): number;`
  - `get DrawingContext.resolution(): number;`
  - `FormatProperties.allowFontSbits?: boolean;`
  - `get Format.allowFontSbits(): boolean;`

- Added new method overloads:
  - `BilevelBitmap.clip(x: number, y: number, width: number, height: number, metadataOnly?: boolean): BilevelBitmap;`
  - `GrayscaleBitmap.clip(x: number, y: number, width: number, height: number, metadataOnly?: boolean): GrayscaleBitmap;`
  - `Bitmap.resize(width: number, height: number, interpolationMode?: em.InterpolationMode): Bitmap;`
  - `Bitmap.clip(x: number, y: number, width: number, height: number, metadataOnly?: boolean): Bitmap;`
  - `Layout.append(text: string): void;`
  - `Layout.append(text: string, format: Format): void;`
  - `Layout.append(text: string, font: Font, fontSize: number, foreColor: ds.Color): void;`
  - `Layout.appendLine(text: string): void;`
  - `Layout.appendLine(text: string, format: Format): void;`
  - `Layout.appendLine(text: string, font: Font, fontSize: number, foreColor: ds.Color): void;`

## [9.1.0] - 05-May-2026
### Added
- Initial release.
