Skip to content

福昕 PDF SDK v11.1

发布日期:2026 年 3 月 31 日

不兼容变更

以下变更在从 v11.0 升级时需要修改代码。未做调整的项目将无法编译或可能出现异常行为。

ActionCallback — 接口参数变更与新增纯虚方法

ActionCallback 类有 1 处接口参数变更7 个新增纯虚方法,所有子类必须更新。

参数变更GetPageWindowRect 新增 documentpage_index 参数:

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

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

新增纯虚方法 — 如不需要相关功能,实现为空函数体即可:

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 — 新增纯虚方法(XFA)

新增一个纯虚方法,DocProviderCallback 的所有子类必须实现:

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

仅影响使用 XFA 模块的项目。如不需要相关功能,实现为空函数体即可。

IconProviderCallback::GetIcon — 接口参数变更(静默失效)

GetIcon 方法参数已变更。由于该方法不是纯虚函数,编译不会报错,但已有子类的重写方法将静默失效,不再被 SDK 调用:

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);

所需操作: 更新重写方法的参数列表,加入新的 annot_dict 参数。建议开启 -Woverloaded-virtual(GCC/Clang)或 /W4(MSVC)以在编译期检测此类问题。

OCRCallback — 新增纯虚方法

已有的 OCRCallback 类新增纯虚方法 IsImageIgnored

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; // 新增
};

所需操作: 所有 OCRCallback 子类必须实现 IsImageIgnored。返回 false 可保持原有行为(不忽略任何图像)。

OCRConfig 构造函数与 Set() — 参数变更

参数化构造函数和 Set() 方法新增 3 个必填参数:

cpp
// v11.0(5 个参数)
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 个参数)
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);

所需操作: 补充 3 个新参数。使用 true, 300, 0 可保持与原有默认行为一致。也可改用默认构造函数(自动初始化所有字段为默认值)。

OCR::OCRPDFPage / OCRPDFDocument / OCRConvertTo / OCRPDFDocuments — 新增参数

所有 OCR 处理方法新增 OCRProgressCallback* 参数:

cpp
// v11.0
void OCRPDFPage(PDFPage pdf_page, bool is_editable);
void OCRPDFPage(PDFPage pdf_page, bool is_editable, const OCRConfig& config);
// 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++:有默认值 NULL,现有调用无需修改。
  • C# / Python / Java / Node.js / Go:绑定层不继承 C++ 默认参数值,现有调用必须显式传入新参数(传 null / None / nil 可保持原有行为)。

PDF 转 Office — API 参数变更

以下转换 API 在本版本中存在不兼容变更。详细迁移指南及代码示例,请参阅 转换 SDK v3.1.0 发版说明 — 不兼容变更

  1. PDF2WordSettingData — 新增必选参数 max_blank_paragraphs_per_page_bottomenable_generate_headers_and_footers 默认值从 false 改为 true
  2. PDF2PowerPointSettingData — 新增必选参数 enable_adapt_to_largest_page
  3. PDF2ExcelSettingData — 新增必选参数 enable_aggressive_table_repairinclude_watermarks
  4. PDF2OfficeSettingData — 新增必选参数 enable_matching_system_fonts
  5. PDF 转 Word 现在默认保留文档内部导航链接

新增功能与增强

平台

  • 新增 Node.js v21 和 v22 支持(在原有 v10–v20 基础上扩展至 v10–v22)
  • 新增 Node.js macOS 平台支持
  • 新增中文开发者接口文档

转换

  • 新增 Windows 平台 WPS 引擎转 PDF 能力:Convert::FromWord/Excel/PowerPoint(..., e_Office2PdfEngineWps)
  • 新增 PDF 转 Word 系统字体精准匹配开关:PDF2OfficeSettingData::enable_matching_system_fonts
  • 更新 PDF 转 Word 默认保留文档内部导航链接
  • 新增 PDF 转 PPT 页面尺寸自适应策略:PDF2PowerPointSettingData::enable_adapt_to_largest_page
    • 新增 PDF 转 Excel 表格结构修复与水印输出控制选项:PDF2ExcelSettingData::enable_aggressive_table_repair / include_watermarks
  • 新增 Linux Office2PDF 字体嵌入开关:Office2PDFSettingData::is_embed_font
  • 新增转换 SDK 版本查询接口:Office2PDF::GetVersion() / PDF2Office::GetVersion()
  • 更新 Office2PDF::ConvertFromWord 支持 DOC(Word 97-2003)格式

OCR

  • 新增进度回调:OCRProgressCallback 类,通过 ProgressNotify(int current_rate) 上报进度
  • 新增阿拉伯语支持:OCREngine::SetLanguages("Arabic")
  • 新增配置参数:OCRConfig::confidence(置信度阈值)和 OCRConfig::resolution_to_overwrite(分辨率覆盖)
  • 新增命令行多进程并行 OCR 工具:ocr_win64.exe / ocr_linux64
  • 新增图像过滤回调:OCRCallback::IsImageIgnored(ImageObject*)

渲染

  • 新增叠印渲染支持:Renderer::SetOverprint(bool is_to_enable_overprint)

签名与安全

  • 新增签名前自修改追踪回调:ActionCallback 中增加 InitModifyItem()ResetModifyItem()NotifyBeginDoJob()NotifyAfterDataChange()NotifyEndDoJob();新增 DocProviderCallback::NotifyWidgetChangeInfo() 用于 XFA Widget 变更追踪
  • 新增 CertChainResolverCallbackTrustedCertStoreCallback,支持跨 CA 体系的 LTV 启用(在 LTVVerifier 中使用)
  • 新增 Redaction::EnableFileStream(),通过文件流落盘降低高密文标记量场景下的内存峰值

表单与注释

  • 新增 29 个 XFA 事件类型至 XFADoc::EventType,支持细粒度事件处理(Click、Change、Enter、Exit、PreSign、PostSign、PreSave、PostSave 等)
  • 更新 IconProviderCallback::GetIcon,新增 annot_dict 参数以访问注释字典

文档与页面

  • 更新 ActionCallback::GetPageWindowRect,新增 documentpage_index 参数,支持 JS 图层(OCG)控制
  • 新增 ActionCallback::GetVisiblePageCount()ActionCallback::GetVisiblePage(),用于查询多页视图中的可见页面
  • 新增结构化标签删除方法:PDFDoc::RemoveStructTree()PDFStructTree::RemoveChild()StructElement::RemoveChild()
  • 新增 Font::IsCharSupported(uint32 unicode, const PDFDoc& document),用于字符支持检测
  • 新增 Library::AddExternalFontPath()Library::MatchExternalFontsOnly(),用于外部字体路径管理

3D

  • 新增 PDF3DContext::Add3DAnnot(),支持在指定页面插入 3D 注释(文件路径和 ReaderCallback 两种模式)
  • 新增 3D 预设视图与模型树交互能力:PDF3DAnnotInstance::ApplyPresetView()GetPresetViewList()ModelNode 类及节点显隐控制

优化

  • 新增透明度优化,支持低/中/高分辨率模式:OptimizerSettings::SetTransparencyMode()

问题修复

转换

  • 修复 PDF 转 Word 页面四角生成裁切线,导致第三方翻译软件处理后无法打开的问题
  • 改进 PDF 转 Word 跨应用渲染一致性(Microsoft Office 与 WPS Office 之间)
  • 修复 PDF 转 Excel 单元格文本被放入形状内而非直接在单元格中的问题
  • 修复 PDF 转 Excel 表格边框以位图形式覆盖在表格上方的问题
  • 修复 PDF 转 Excel 转换耗时过长、单元格以图片形式呈现的问题
  • 修复 PDF 转 PPT 页面尺寸异常,内容缩小到左上角的问题
  • 修复 Office2PDF::ConvertFromWord 处理特定 DOCX 文件时崩溃的问题
  • 修复 Word 转 PDF 字符间距不正确导致错误换行的问题
  • 修复 Word 转 PDF 加粗文本显示过度加粗的问题
  • 修复 Word 转 PDF 末尾文本丢失的问题
  • 修复 Word 转 PDF 图形形状偏差和文本错误换行的问题
  • 修复特定 OFD 文件转换为 PDF 后文字内容丢失的问题

OCR

  • [Linux] 修复因缺少中文字体导致 OCRConvertTo 失败(ERR_FREN_NO_PAGES)的问题
  • 修复特定文件执行 OCRConvertTo 报错(ERR_IMAGE_LIBJPEG_LIBRARY_RAISED_ERROR)的问题
  • 修复 44 页文档执行 OCRConvertTo 仅输出第一页的问题

渲染

  • 修复 Bitmap DIBFormat 中 CMYK 转 ARGB 色彩转换不正确的问题
  • [性能] 修复多文档打开时逐步渲染耗时递增(17s→24s→30s→40s)的问题
  • 修复 OutputPreview::SetSimulationProfile() 未正确反映不同 ICC 配置文件的问题
  • 修复特定 PDF 在 OutputPreview 渲染中文本缺失的问题
  • 修复特定 PDF 页面与 Adobe 渲染结果不一致的问题
  • 修复使用 e_DIBRgb 创建的 Bitmap 通过 Image::SaveAs 保存时崩溃的问题
  • 修复向特定文档页面添加 PathObject 后渲染异常的问题
  • 修复通过 buffer 构造的 Bitmap 调用 delete() 未释放内存的问题

打印

  • 修复 PrintManager 输出色彩偏差和不均匀点阵的问题
  • 修复多线程使用 PrintManager 时偶发崩溃的问题
  • 修复 FXPM_AddPDFFromFileToJobFXPM_SetJobDocumentName 不支持中日韩路径的问题
  • 修复 FXPM_SetJobDuplex(1) 未启用双面打印的问题
  • 修复混合方向页面内容未随页面方向旋转的问题
  • 修复 SetRotation() 导致横向 PDF 以纵向文本方向打印的问题
  • 修复通过 AddPDFFromFile 添加多个文件时 PrintJob 仅打印第一个文件的问题

表单

  • 修复 XFA ExportData/ImportData 循环操作导致表头和数字签名损坏的问题
  • 修复 XFA TextField Widget 增殖导致打开时间逐步增长直至崩溃的问题
  • 修复 C# ViewDemo 对特定 XFA 文档渲染空白页的问题
  • 修复 JavaScript 图层(OCG)显隐控制无效的问题
  • [回归] 修复 v11 中 ActionCallback 触发回归,部分回调在字段修改后不再触发的问题
  • 修复"继承缩放"书签目标仅对第一个书签生效的问题

文档与页面

  • 修复 StartEmbedAllFonts 后调用 SaveAse_SaveFlagLinearized)崩溃的问题
  • 修复 Html2PDF 超时后 fxhtml2pdf 成为僵尸进程的问题
  • [性能] 修复 25,000 页 PDF 执行 StartSplitByFileSize 耗时超过 1 小时的问题
  • 修复高密文标记量连续处理场景下 Redaction 内存峰值过高的问题
  • [Windows] 修复 ComplianceEngine::SetTempFolderPath() 将临时文件写入可执行文件目录而非系统临时目录的问题
  • 修复 C# TextPage.GetTextInRect 对特定字符返回问号的问题
  • 修复 GetEditingTextCaretPosition 返回错误位置导致输入法候选窗口偏移的问题

其他

  • 修复多进程并行 Optimizer 图像压缩产生视觉伪影的问题
  • 修复特定 3D PDF 点击 3D 注释区域后显示空白的问题
  • 改进 AutoTagging 对 Figure 类型图像的识别准确度(相对于 Adobe Auto-Tag)
  • 修复 Comparison 对 OCR 文档内容匹配不正确的问题