福昕 PDF SDK v11.1
发布日期:2026 年 3 月 31 日
不兼容变更
以下变更在从 v11.0 升级时需要修改代码。未做调整的项目将无法编译或可能出现异常行为。
ActionCallback — 接口参数变更与新增纯虚方法
ActionCallback 类有 1 处接口参数变更 和 7 个新增纯虚方法,所有子类必须更新。
参数变更 — GetPageWindowRect 新增 document 和 page_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 发版说明 — 不兼容变更。
PDF2WordSettingData— 新增必选参数max_blank_paragraphs_per_page_bottom;enable_generate_headers_and_footers默认值从false改为truePDF2PowerPointSettingData— 新增必选参数enable_adapt_to_largest_pagePDF2ExcelSettingData— 新增必选参数enable_aggressive_table_repair和include_watermarksPDF2OfficeSettingData— 新增必选参数enable_matching_system_fonts- 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
- 新增 PDF 转 Excel 表格结构修复与水印输出控制选项:
- 新增 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 变更追踪 - 新增
CertChainResolverCallback和TrustedCertStoreCallback,支持跨 CA 体系的 LTV 启用(在LTVVerifier中使用) - 新增
Redaction::EnableFileStream(),通过文件流落盘降低高密文标记量场景下的内存峰值
表单与注释
- 新增 29 个 XFA 事件类型至
XFADoc::EventType,支持细粒度事件处理(Click、Change、Enter、Exit、PreSign、PostSign、PreSave、PostSave 等) - 更新
IconProviderCallback::GetIcon,新增annot_dict参数以访问注释字典
文档与页面
- 更新
ActionCallback::GetPageWindowRect,新增document和page_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_AddPDFFromFileToJob和FXPM_SetJobDocumentName不支持中日韩路径的问题 - 修复
FXPM_SetJobDuplex(1)未启用双面打印的问题 - 修复混合方向页面内容未随页面方向旋转的问题
- 修复
SetRotation()导致横向 PDF 以纵向文本方向打印的问题 - 修复通过
AddPDFFromFile添加多个文件时 PrintJob 仅打印第一个文件的问题
表单
- 修复 XFA
ExportData/ImportData循环操作导致表头和数字签名损坏的问题 - 修复 XFA TextField Widget 增殖导致打开时间逐步增长直至崩溃的问题
- 修复 C# ViewDemo 对特定 XFA 文档渲染空白页的问题
- 修复 JavaScript 图层(OCG)显隐控制无效的问题
- [回归] 修复 v11 中
ActionCallback触发回归,部分回调在字段修改后不再触发的问题 - 修复"继承缩放"书签目标仅对第一个书签生效的问题
文档与页面
- 修复
StartEmbedAllFonts后调用SaveAs(e_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 文档内容匹配不正确的问题