Metadata-Version: 2.1
Name: FoxitPDFSDKPython3
Version: 12.0.0
Summary: Foxit PDF SDK For Python3
Home-page: https://developers.foxit.com
Author: Foxit Software Inc.
Author-email: support@foxitsoftware.com
License: Other/Proprietary License (Commercial)
Keywords: PDF SDK,PDF Library,PDF render,PDF view,PDF print,PDF Edit,PDF convert
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Operating System :: Unix
Classifier: Operating System :: MacOS
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Software Development
Requires-Python: >=3.6, <4
Description-Content-Type: text/plain

Foxit PDF SDK v12.0   Release Date: 30 September 2026 
==================================================================

## Breaking Changes

The following changes require code updates when upgrading from v11.1. Existing projects that use these APIs will not compile or may behave differently without modification.

### `SearchCallback::NeedToCancel` — New pure virtual method

A new pure virtual method was added to the full-text search callback. Missing implementations fail to compile:

```cpp
// Earlier versions: method did not exist
// 12.0 and later
virtual bool NeedToCancel() = 0;
```

**Action required:** Implement the method on every `SearchCallback` subclass. If cancellation is not needed, return `false`.

### `WatermarkSettings` constructor and `Set` — Parameter expansion

Two parameters were appended to the constructor and `Set`:

```cpp
// Earlier versions
WatermarkSettings(position, offset_x, offset_y, flags, scale_x, scale_y, rotation, opacity);
settings.Set(position, offset_x, offset_y, flags, scale_x, scale_y, rotation, opacity);

// 12.0 and later
WatermarkSettings(position, offset_x, offset_y, flags, scale_x, scale_y, rotation, opacity,
                  is_offset_centered, relative_scale_to_page);
settings.Set(position, offset_x, offset_y, flags, scale_x, scale_y, rotation, opacity,
             is_offset_centered, relative_scale_to_page);
```

**Action required:** Supply the new parameters per the updated signatures. When relative scaling is unused, pass `relative_scale_to_page = 0` (or your product convention); when centered offset is unused, pass `is_offset_centered = false`.

### `FillerAssistCallback::Refresh` — Signature change

The form-filler assist refresh callback signature changed:

```cpp
// Earlier versions
virtual void Refresh(const PDFPage& page, const RectF* rect) = 0;

// 12.0 and later
virtual void Refresh(const PDFPage& page, const RectF& rect, bool has_reparse_page) = 0;
```

**Action required:** Update every `FillerAssistCallback` (or equivalent) implementation: take `rect` by reference and handle `has_reparse_page` as needed.

### `Preflight::Analyze` / `AnalyzeAndFixup` — Return type change

In the Compliance module, these APIs changed from returning nothing to returning `ResultInformation`. Parameters are unchanged; only the return type changed:

| API | Earlier | 12.0 |
|-----|---------|------|
| `Analyze` | `void` | `ResultInformation` |
| `AnalyzeAndFixup` | `void` | `ResultInformation` |

**Action required:** Update call sites to receive and handle the new return type.

Callbacks are required only when using the corresponding new capabilities (no change if unused):

- `PreflightGroupLocalCallback`: localizes group item names and comments via `Preflight::SetPreflightGroupLocalCallback`. Implement `Release`, `GetGroupItemLocalName`, and `GetGroupItemLocalComment`.

### `TaggedPDF` / Accessibility APIs — Header move and `StartTagDocument`

PDF Accessibility APIs moved into the accessibility add-on, with AutoTagging entry-point changes:

| Item | Earlier | 12.0 |
|------|---------|------|
| Header path | `pdf/pdfaccessibility/…` | `addon/accessibility/…` (packages may also expose `fs_taggedpdf.h`—follow the published include tree) |
| Constructor | `TaggedPDF(const PDFDoc& doc)` | `TaggedPDF(const PDFDoc& doc, bool is_fix = false)` |
| Tagging entry | `StartTagDocument(pause = NULL)`; plus `SetCallback` | `StartTagDocument(pause, report_callback = NULL, callback = NULL)`; `SetCallback` deprecated |
| `pause` default | Defaulted to `NULL` | No default; must be passed explicitly (may be `NULL`) |

```cpp
// Earlier versions
TaggedPDF tagged(doc);
tagged.SetCallback(cb);
tagged.StartTagDocument();

// 12.0 and later
TaggedPDF tagged(doc, false);
tagged.StartTagDocument(NULL, report_stream, provider_callback);  // pause must be explicit
```

**Action required:** Update `#include`s; remove `SetCallback` and pass the report stream plus optional `AutoTagProviderCallback` to `StartTagDocument`; always pass `pause` explicitly.

### `DWG2PDFSettingData::export_hatches_type` — Default value change

When left unset, the default hatch export type changed (silent behavior change):

| Property | Earlier | 12.0 |
|----------|---------|------|
| `export_hatches_type` | `e_DWG2PDFExportHatchesTypeBitmap` | `e_DWG2PDFExportHatchesTypePolygons` |
| `other_export_hatches_type` | — (not present) | `e_DWG2PDFExportHatchesTypeBitmap` |
| `gradient_export_hatches_type` | — (not present) | `e_DWG2PDFExportHatchesTypeBitmap` |

**Action required:** To keep the earlier behavior, set `export_hatches_type = e_DWG2PDFExportHatchesTypeBitmap` explicitly; configure the new other/gradient hatch properties as needed.

### `JavascriptEventType` — Some enum numeric values shifted

In earlier versions, an unused integer gap (20) existed between `FieldKeyStroke` (value 19) and `FieldValidate`. In 12.0 that gap was assigned to `FieldValidate`, and subsequent enum values shifted forward by 1:

| Enum | Earlier | 12.0 |
|------|---------|------|
| `FieldKeyStroke` | 19 | 19 (unchanged) |
| `FieldValidate` | 21 | 20 |
| `FieldCalculate` | 22 | 21 |
| `FieldFormat` | 23 | 22 |
| …through `MediaStop` | 46 | 45 |

**Action required:** Always use enum symbols (for example `e_JavascriptEventTypeFieldValidate`); do not hard-code integer enum values. If code uses `if (type == 21)` expecting `FieldValidate`, integer `21` maps to `FieldCalculate` in 12.0 and later.

## New Features and Enhancements

### Platform

- Node.js (Node-API): Migrated the Node.js native binding from the legacy Node/V8 Binding to Node-API, with prebuilt packages for napi3 / napi6 / napi8, expanding compatibility (approximately Node.js 8.15–26; some historical minor versions excluded). Installation automatically matches the current runtime.
- Simple Demo command-line samples: Simple Demo supports command-line arguments. Samples are published at https://github.com/foxitsoftware/foxit-pdf-sdk-cli-samples

---

### Conversion

- Markdown and PDF conversion: Added Markdown to PDF (`Md2PDF::ConvertFromMarkdown`) and PDF to Markdown (`PDF2Md::ConvertToMarkdown`). Load the Conversion library and ensure the corresponding module license before use.
- Enhanced DWG/DXF to PDF: Configure layout scope, title-block XML, auto-tiling, line-weight styles, output DPI, and more via `DWG2PDFSettingData`. See `export_hatches_type` default change above.
- Unified cross-platform Java Office-to-PDF entry points: `fromWord` / `fromExcel` / `fromPowerPoint` share the same method parameters; the SDK Java binding dispatches by platform internally. Existing platform-specific APIs remain available.

---

### OCR

- Improved OCR recognition quality (large-image handling, certain Chinese garbled-text scenarios, and related cases). Upgrade to the ABBYY OCR resource pack that ships with this release.

---

### Signature and Security

- ISO 32004 document integrity protection: Standalone mode (`PDFDoc::StartIntegrityProtection`) and signature-attached mode (`StartIntegrityProtectionWithSignature`), with configurable digest algorithm, password, permission bits, and whether to encrypt metadata.

---

### Text and Content

- Glyph ID lookup by Unicode: `Font::GetGlyphID`
- Full-text search ignore whitespace in the pattern: `FullTextSearch::SetIgnoreSpace`; off by default; no index rebuild required
- Full-text search supports cooperative cancellation (see `NeedToCancel` above)
- Watermarks support relative scaling to the target page and offset calculation from the watermark center (see `WatermarkSettings` above)

---

### Rendering

- Convert bitmaps to CMYK: `Bitmap::ConvertFormat(..., e_DIBCmyk)` converts RGB / ARGB / RGB32 (and related) bitmaps directly to CMYK
- Improved CMYK page rendering performance (same-document retest: about 86% reduction on Win32, about 19% on Win64)
- Improved decoding of halftone JBIG2 images with HENABLESKIP

---

### Forms and Annotations

- Batch annotation hit-testing by rectangle: `PDFPage::GetAnnotsAtRect` / `GetAnnotsAtDeviceRect`, complementing existing point hit-testing; annotations with Hidden / NoView / Invisible flags are not returned.

---

### Standards and Compliance

- PDF/A-4e / PDF/A-4f: Added validation and conversion. Upgrade to the Compliance resource pack that ships with this release.

---

### Accessibility

- Accessibility check, fix, navigation, and tag tree: Publicized `AccessibilityChecker`, `AccessibilityFixer`, `AccessibilityNavigator`, `ReadingOrder`, `TagTreeEditor`, and related APIs.
- Improved AutoTagging structure recognition: better heading levels (such as H1/H2) and less overly flat structure trees, closer to common reader tagging results.

---

### Document and Page

- Improved document open performance in specific scenarios (sample about 99.7% reduction)
- Add image frames from a file path: `Image::AddFrame` accepts an image file path.
- SVG / WMF (EMF) vector graphics into PDF: Write SVG / WMF (EMF) into a PDF page or whole document via `VectorGraphics`.

---

## Bug Fixes

### Conversion

- Fix font drift and incorrect font sizes in DWG2PDF when specific fonts were missing (can be mitigated/fixed by adding the corresponding `.shx` fonts to the engine Fonts directory)
- Fix execution failures/crashes in Windows Java DWG2PDF caused by conflicts between the ODA export component and JDK bundled runtimes
- Fix garbled text in parts of specific DWG drawings after conversion to PDF
- Fix garbled text in DWG2PDF output from historical versions
- Fix DWG2PDF output losing original drawing layer information
- Fix line weight and related attributes not being preserved correctly after DWG2PDF conversion
- Fix unexpected font substitution for some fonts during PDF to Word / Excel
- Fix Office2PDF incorrectly reporting "No 3D module right" when fonts were missing; the error message is now accurate
- Fix garbled text (shown as "?") after converting specific DWG files on Linux
- Fix overlapping/squeezed lines after converting specific DWG files
- Fix crashes in Linux Java when combining OCR and PDF2Word engine workflows

### Rendering

- Fix incorrect knockout transparency-group shape calculation that made preview results inconsistent with Adobe / WPS
- Fix rendering of specific XFA documents that was inconsistent with Adobe
- Fix some text appearing bolder and abnormal anti-aliasing in Output Preview (regression relative to v11.1)
- Fix bordered link annotations not showing borders during rendering / image export
- Fix results inconsistent with Adobe after enabling simulated overprint (`EnableSimulateOverprint`)

### Document and Page

- Fix excessively long PDF/A validation and incomplete validation output after adding FreeText annotations with embedded fonts
- Fix garbled output when writing certain Unicode symbols into headers/footers from C# (not reproducible on the C++ side)
- Fix possible hangs or stack overflows from `Bookmark::MoveTo` on structurally abnormal PDFs; the API now returns errors more robustly
- Fix unexpected results when moving a bookmark node to become a sibling of its parent
- Fix page width/height not updating after setting PageBox when re-read (use the correct path including `PDFPage::Normalize()` where applicable)

### OCR

- Fix text position drift and ghosting after OCR on specific documents
- Fix upside-down OCR results on specific pages
- Fix flipped or 90°-rotated OCR results on specific pages

### Text and Content

- Fix intermittent errors from `PDFPage::AddText`
- Fix invisible text after replacing Japanese with English using TextSearchReplace
- Fix rare characters not displaying when creating text objects with SimSun-ExtB, and incorrect `IsCharSupported` results
- Fix `TextPage.GetText` returning different results on .NET Core versus .NET Framework
- Fix inaccurate `Font::IsCharSupported` results for some fonts (such as HanaMinA)

### Platform

- Fix heap-corruption style crashes on Linux (for example Ubuntu 24) in specific licensing scenarios
- Fix .NET on Linux ARM failing to load `fsdk.dll` when calling `TextPage.GetChars`
- Fix document object misalignment / format corruption under concurrent editing

### Signature and Security

- Fix incorrect position of the last character in watermark strings after calling `embed()` on the watermark font
- Fix Adobe reporting errors on specific pages after EmbedFont-related flows
- Fix Chinese tiled watermarks not displaying on Linux when fonts were loaded from a path

### Printing

- Fix possible Access Violation on application exit if `PrintManager.Release` was not called
- Fix PrintManager incorrectly using an already-closed printer handle on release/close paths

### Forms and Annotations

- Fix missing `/Length` entries when exporting stamps added through the SDK to FDF
- Fix `XFADoc::FlattenTo` dropping field values that contain diacritics

### Optimization

- Fix inconsistent Optimizer handling of already-subset / non-embedded fonts that caused some fonts to be substituted

