Metadata-Version: 2.1
Name: FoxitPDFSDKPython3
Version: 11.1.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 v11.1   Release Date: 31 March 2026 
==================================================================

## Breaking Changes

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

### `ActionCallback` — Parameter change and new pure virtual methods

The `ActionCallback` class has **1 parameter change** and **7 new pure virtual methods**. Any subclass must be updated.

**Parameter change** — `GetPageWindowRect` now requires `document` and `page_index` parameters:

```cpp
// v11.0
virtual RectF GetPageWindowRect() = 0;

// v11.1
virtual RectF GetPageWindowRect(const foxit::pdf::PDFDoc document, int page_index) = 0;
```

**New pure virtual methods** — implement with empty bodies if the functionality is not needed:

```cpp
virtual void NotifyBeginDoJob(const pdf::PDFDoc document,
    JavascriptModifyItemInfo::JavascriptEventType event_type) = 0;
virtual void NotifyAfterDataChange(const pdf::PDFDoc document,
    JavascriptModifyItemInfo modify_item_info) = 0;
virtual void NotifyEndDoJob(const pdf::PDFDoc document,
    JavascriptModifyItemInfo::JavascriptEventType event_type) = 0;
virtual bool InitModifyItem(const pdf::PDFDoc document,
    ModifyItemType item_type, int page_index, const WString dict_name) = 0;
virtual void ResetModifyItem(const pdf::PDFDoc document) = 0;
virtual int GetVisiblePageCount(const pdf::PDFDoc document) = 0;
virtual int GetVisiblePage(const pdf::PDFDoc document, int index) = 0;
```

### `DocProviderCallback` — New pure virtual method (XFA)

A new pure virtual method is added. Subclasses of `DocProviderCallback` must implement it:

```cpp
virtual void NotifyWidgetChangeInfo(const XFADoc doc, XFAWidgetModifyInfo change_info) = 0;
```

This only affects projects that use the XFA module. Implement with an empty body if not needed.

### `IconProviderCallback::GetIcon` — Parameter change (silent)

The `GetIcon` method has changed. This is **not** a pure virtual, so compilation will succeed, but existing overrides will **silently stop being called**:

```cpp
// v11.0
virtual PDFPage GetIcon(Annot::Type annot_type, const char* icon_name, ARGB color);

// v11.1
virtual PDFPage GetIcon(Annot::Type annot_type, const char* icon_name, ARGB color,
                        foxit::pdf::objects::PDFDictionary* annot_dict);
```

**Action required:** Update the override to include the new `annot_dict` parameter. Enable `-Woverloaded-virtual` (GCC/Clang) or `/W4` (MSVC) to detect this at compile time.

### `OCRCallback` — New pure virtual method

A new pure virtual method `IsImageIgnored` is added to the existing `OCRCallback` class:

```cpp
// v11.0
class OCRCallback {
  virtual bool NeedToCancelNow(const wchar_t* info) = 0;
};

// v11.1
class OCRCallback {
  virtual bool NeedToCancelNow(const wchar_t* info) = 0;
  virtual bool IsImageIgnored(foxit::pdf::graphics::ImageObject* image_object) = 0; // NEW
};
```

**Action required:** All subclasses of `OCRCallback` must implement `IsImageIgnored`. Return `false` to preserve previous behavior (no images ignored).

### `OCRConfig` constructor and `Set()` — Parameter change

The parameterized constructor and `Set()` method gained 3 new required parameters:

```cpp
// v11.0 (5 parameters)
OCRConfig(bool is_detect_pictures, bool is_remove_noise, bool is_correct_skew,
          bool is_enable_text_extraction_mode, bool is_sequentially_process);

// v11.1 (8 parameters)
OCRConfig(bool is_detect_pictures, bool is_remove_noise, bool is_correct_skew,
          bool is_enable_text_extraction_mode, bool is_sequentially_process,
          bool is_auto_overwrite_resolution, int resolution_to_overwrite, int confidence);
```

**Action required:** Add the 3 new parameters. Use `true, 300, 0` for default-equivalent behavior. Alternatively, use the default constructor which initializes all fields with defaults.

### `OCR::OCRPDFPage` / `OCRPDFDocument` / `OCRConvertTo` / `OCRPDFDocuments` — New parameter

All OCR processing methods add an `OCRProgressCallback*` parameter:

```cpp
// v11.0
void OCRPDFPage(PDFPage pdf_page, bool is_editable);
void OCRPDFPage(PDFPage pdf_page, bool is_editable, const OCRConfig config);
// ... same pattern for OCRPDFDocument, OCRConvertTo, OCRPDFDocuments

// v11.1
void OCRPDFPage(PDFPage pdf_page, bool is_editable, OCRProgressCallback* callback = NULL);
void OCRPDFPage(PDFPage pdf_page, bool is_editable, const OCRConfig config, OCRProgressCallback* callback = NULL);
```

- **C++**: Has default value `NULL` — existing calls compile without changes.
- **C# / Python / Java / Node.js / Go**: Bindings do **not** inherit the C++ default value. Existing calls must add the new parameter explicitly (pass `null` / `None` / `nil` to preserve previous behavior).

### PDF to Office — API parameter changes

The following conversion APIs have breaking changes in this release. For detailed migration guidance with code examples, see the **Breaking Changes** section in the **Conversion SDK v3.1.0 Release Note** (included in the Conversion SDK package).

1. `PDF2WordSettingData` — Add required parameter `max_blank_paragraphs_per_page_bottom`; default value of `enable_generate_headers_and_footers` changed from `false` to `true`
2. `PDF2PowerPointSettingData` — Add required parameter `enable_adapt_to_largest_page`
3. `PDF2ExcelSettingData` — Add required parameters `enable_aggressive_table_repair` and `include_watermarks`
4. `PDF2OfficeSettingData` — Add required parameter `enable_matching_system_fonts`
5. PDF-to-Word now preserves internal document navigation links by default## New Features and Enhancements

### Platform

- Add Node.js v21 and v22 support (extends previous v18-20 range)
- Add Node.js macOS platform support

---

### Conversion

- Add WPS-powered Office-to-PDF conversion on Windows via `Convert::FromWord/Excel/PowerPoint(..., e_Office2PdfEngineWps)`
- Add system font precise matching toggle for PDF-to-Word: `PDF2OfficeSettingData::enable_matching_system_fonts`
- Update PDF-to-Word to preserve internal document navigation links by default
- Add page size adaptation for PDF-to-PPT: `PDF2PowerPointSettingData::enable_adapt_to_largest_page`
- Add PDF-to-Excel table repair and watermark output controls: `PDF2ExcelSettingData::enable_aggressive_table_repair` / `include_watermarks`
- Add font embedding toggle for Linux Office2PDF: `Office2PDFSettingData::is_embed_font`
- Add version query APIs: `Office2PDF::GetVersion()` / `PDF2Office::GetVersion()`
- Update `Office2PDF::ConvertFromWord` to support DOC (Word 97-2003) format

---

### OCR

- Add progress callback via `OCRProgressCallback` class with `ProgressNotify(int current_rate)`
- Add Arabic language support: `OCREngine::SetLanguages("Arabic")`
- Add configuration parameters: `OCRConfig::confidence` (confidence threshold) and `OCRConfig::resolution_to_overwrite` (resolution override)
- Add standalone command-line tool for multi-process parallel OCR: `ocr_win64.exe` / `ocr_linux64`
- Add image filtering callback: `OCRCallback::IsImageIgnored(ImageObject*)`

---

### Rendering

- Add overprint rendering support: `Renderer::SetOverprint(bool is_to_enable_overprint)`

---

### Security and Signature

- Add pre-sign self-modification tracking callbacks in `ActionCallback`: `InitModifyItem()`, `ResetModifyItem()`, `NotifyBeginDoJob()`, `NotifyAfterDataChange()`, `NotifyEndDoJob()`; add `DocProviderCallback::NotifyWidgetChangeInfo()` for XFA widget change tracking
- Add `CertChainResolverCallback` and `TrustedCertStoreCallback` for cross-CA LTV enablement in `LTVVerifier`
- Add `Redaction::EnableFileStream()` to reduce memory peaks in high-redaction-volume scenarios via file stream

---

### Forms and Annotation

- Add 29 XFA event types to `XFADoc::EventType` for granular event handling (Click, Change, Enter, Exit, PreSign, PostSign, PreSave, PostSave, etc.)
- Update `IconProviderCallback::GetIcon` with `annot_dict` parameter for annotation dictionary access

---

### Document and Page

- Update `ActionCallback::GetPageWindowRect` with `document` and `page_index` parameters for multi-page JS layer (OCG) control
- Add `ActionCallback::GetVisiblePageCount()` and `ActionCallback::GetVisiblePage()` for querying visible pages in multi-page view
- Add methods to remove PDF logical structure tags: `PDFDoc::RemoveStructTree()`, `PDFStructTree::RemoveChild()`, `StructElement::RemoveChild()`
- Add `Font::IsCharSupported(uint32 unicode, const PDFDoc document)` for character support detection
- Add `Library::AddExternalFontPath()` and `Library::MatchExternalFontsOnly()` for external font path management

---

### 3D

- Add `PDF3DContext::Add3DAnnot()` to insert 3D annotation on a specified page (file path and ReaderCallback modes)
- Add 3D preset view and model tree interaction: `PDF3DAnnotInstance::ApplyPresetView()`, `GetPresetViewList()`, `ModelNode` class with visibility control

---

### Optimization

- Add transparency optimization with configurable resolution modes (Low/Medium/High): `OptimizerSettings::SetTransparencyMode()`

---

## Bug Fixes

### Conversion

- Fix PDF-to-Word crop marks at page corners causing translation software failures
- Improve PDF-to-Word cross-application rendering consistency between MS Office and WPS Office
- Fix PDF-to-Excel cell text placed inside shapes instead of cells
- Fix PDF-to-Excel table borders rendered as bitmaps overlaid on the table
- Fix PDF-to-Excel excessive conversion time with cells appearing as images
- Fix PDF-to-PPT page dimension changes with content shrunk to upper-left
- Fix `Office2PDF::ConvertFromWord` crash on specific DOCX files
- Fix incorrect character spacing in Word-to-PDF causing wrong line breaks
- Fix bold text appearing excessively bold in Word-to-PDF output
- Fix missing text (last sentence lost) in Word-to-PDF output
- Fix shape rendering deviations and incorrect text line breaks in Word-to-PDF

### OCR

- [Linux] Fix `OCRConvertTo` failure (`ERR_FREN_NO_PAGES`) due to missing Chinese fonts
- Fix `OCRConvertTo` error (`ERR_IMAGE_LIBJPEG_LIBRARY_RAISED_ERROR`) on specific files
- Fix `OCRConvertTo` only outputting first page of a 44-page document

### Rendering

- Fix incorrect CMYK-to-ARGB color conversion in Bitmap DIBFormat
- [Performance] Fix progressive rendering slowdown (17s->24s->30s->40s) with multiple open documents
- Fix `OutputPreview::SetSimulationProfile()` not reflecting different ICC profiles
- Fix missing text in OutputPreview rendering of specific PDFs
- Fix rendering inconsistencies with Adobe on specific PDF pages
- Fix crash when saving `Bitmap` created with `e_DIBRgb` via `Image::SaveAs`
- Fix abnormal rendering when adding `PathObject` to specific document pages
- Fix memory leak in `Bitmap` constructed from buffer where `delete()` did not free memory

### Printing

- Fix color discrepancies and uneven dot patterns in PrintManager output
- Fix intermittent crash in multi-threaded PrintManager usage
- Fix `FXPM_AddPDFFromFileToJob` and `FXPM_SetJobDocumentName` not supporting CJK paths
- Fix `FXPM_SetJobDuplex(1)` not enabling duplex printing
- Fix mixed-orientation page content not rotating with page direction
- Fix `SetRotation()` causing landscape PDFs to print with portrait text orientation
- Fix PrintJob only printing first file when multiple files added via `AddPDFFromFile`

### Forms

- Fix XFA `ExportData`/`ImportData` cycle corrupting table headers and digital signatures
- Fix XFA TextField Widget proliferation causing progressive load time increase and crash
- Fix C# ViewDemo rendering blank pages for specific XFA documents
- Fix JavaScript layer (OCG) visibility control having no effect
- [Regression] Fix `ActionCallback` trigger regression in v11 where some callbacks did not fire after field modification
- Fix "Inherit Zoom" bookmark destination only working for the first bookmark

### Document and Page

- Fix crash when calling `SaveAs` with `e_SaveFlagLinearized` after `StartEmbedAllFonts`
- Fix `fxhtml2pdf` zombie process after `Html2PDF` timeout
- [Performance] Fix `StartSplitByFileSize` taking over 1 hour for 25,000-page PDFs
- Fix excessive Redaction memory peaks in high-redaction-volume continuous-processing scenarios
- [Windows] Fix `ComplianceEngine::SetTempFolderPath()` writing to executable directory instead of system temp
- Fix C# `TextPage.GetTextInRect` returning question marks for certain characters
- Fix `GetEditingTextCaretPosition` returning incorrect positions causing misplaced IME candidate window

### Other

- Fix visual artifacts from parallel multi-process Optimizer image compression
- Fix specific 3D PDF showing blank after clicking 3D annotation area
- Improve AutoTagging recognition of Figure-type images vs. Adobe Auto-Tag
- Fix incorrect content matching in Comparison for OCR documents

