PDF 合规性 (Compliance)
PDF Compliance
福昕 PDF SDK 支持 PDF 版本标准化转换,当前支持的版本有 PDF 1.3, PDF 1.4, PDF 1.5, PDF 1.6 和 PDF 1.7。当转换到 PDF 1.3 版本时,如果源文档含有透明度的数据,则其会被转换到 PDF 1.4 版本而不是 PDF 1.3 版本 (PDF 1.3 版本不支持透明度);如果源文档不含有任何透明度的数据,则会按预期转换到 PDF 1.3 版本。
PDF/A Compliance
PDF/A 是一种 ISO 标准的 PDF 文件格式版本,用于电子文档的存档和长期保存。PDF/A 与 PDF 的不同之处在于 PDF/A 禁用了 PDF 中不适合长期存档的特性,比如字体链接 (与嵌入字体相对)、加密、JavaScript、音频和视频等。
福昕 PDF SDK 提供 APIs 用以将 PDF 转换为符合 PDF/A 标准的文档,或验证 PDF 是否符合 PDF/A 标准。支持的 PDF/A 标准包括 PDF/A-1a、PDF/A-1b、PDF/A-2a、PDF/A-2b、PDF/A-2u、PDF/A-3a、PDF/A-3b、PDF/A-3u (ISO 19005- 1, 19005 -2 和 19005-3)。
PDF/E Compliance
PDF/A 是一种 ISO 标准的 PDF 文件格式版本,用于工程文档的存档和可靠交换。其适用于在工程工作流程中创建、交换、存档和打印文档。
从 10.1 版本开始,福昕 PDF SDK 提供 APIs 用以将 PDF 转换为符合 PDF/E 标准的文档,或验证 PDF 是否符合 PDF/E 标准。其支持 PDF/E-1 标准。
PDF/X Compliance
PDF/X 是一种 ISO 标准的 PDF 文件格式版本,用于交换图形密集的文档。其主要用于确保在设计、绘图、工程和图形艺术等领域打印文件时的一致性和可预测性。 从 10.1 版本开始,福昕 PDF SDK 提供 APIs 用以将 PDF 转换为符合 PDF/X 标准的文档,或验证 PDF 是否符合 PDF/X 标准。支持的 PDF/X 标准包括 PDF/X-1a、PDF/X-3、PDF/X-4、PDF/X-4p。
预检功能
从 10.1 版本开始,福昕 PDF SDK 支持预检功能,该功能允许用户使用福昕 PDF SDK 获取预检键,以分析或修复 PDF 文件
本节将介绍如何设置相关环境以运行 'compliance' 或者 'preflight' demo。
NOTE
- 对于 Mac Java,需要将
var\legacy
文件夹下的pdfEngineLight.dylib
文件拷贝至引擎根目录进行替换。另外,其不支持多线程。
系统需求
平台: Windows, Linux (x86 和 x64), Mac
开发语言: C, C++, Java, C#, Python, Objective-C, Node.js
License Key: license key 中包含 'Compliance' 模块的权限
SDK 版本: Foxit PDF SDK (C++, Java, C#, Objective-C) 6.4 或更高版本 (对于PDF Compliance, 则需要Foxit PDF SDK 7.1或更高版本); Foxit PDF SDK (C) 7.4 或更高版本; Foxit PDF SDK (Python) 8.3或更高版本; Foxit PDF SDK (Node.js) 10.0 或更高版本
NOTE
- 对于 PDF/E、PDF/X 以及预检功能,需要使用福昕 PDF SDK 10.1 版本。
Compliance 资源文件
请联系 Foxit 支持团队或者销售团队以获取 Compliance 资源文件包。
获取到资源文件包后,将其解压到所需目录 (比如,Windows 解压到 "compliance/win",Linux 解压到 "compliance/linux",Mac 解压到 "compliance/mac"),然后您将看到 Compliance 的资源文件如下:
Windows 平台:

Windows Compliance Folder
Linux 平台:

Linux Compliance Folder
Mac 平台:

Mac Compliance Folder
运行 compliance 或者 preflight demo
在 10.1 版本之前,福昕 PDF SDK 提供了一个 compliance demo 用来展示如何使用福昕 PDF SDK 验证 PDF 文档是否符合 PDF/A 标准,如何将 PDF 转换为符合 PDF/A 标准的文档,以及如何进行 PDF 版本标准化转换。该 demo 位于 \examples\simple_demo\compliance
文件夹下。
从 10.1 版本开始,福昕 PDF SDK提供了2个 demo:
- 一个 compliance demo 用来展示如何使用福昕 PDF SDK 验证 PDF 文档是否符合 PDF/A 或 PDF/E 或 PDF/X 标准,如何将 PDF 转换为符合 PDF/A 或 PDF/E 或 PDF/X 标准的文档,以及如何进行 PDF 版本标准化转换。该 demo 位于
\examples\simple_demo\compliance
文件夹下。 - 一个 preflight demo 用来展示如何使用福昕 PDF SDK 获取预检键,以分析或修复 PDF 文件。该 demo 位于
\examples\simple_demo\preflight
文件夹下。
构建一个 compliance 资源目录
以 Java 开发语言为例,在运行 compliance 或者 preflight demo 之前,您需要首先构建一个 compliance 资源目录,然后将该目录的路径传给 ComplianceEngine.initialize
接口用来初始化 compliance 引擎。
从 10.0 版本开始,compliance 资源文件提供了默认的线程安全机制。对于多线程,应首先调用 API ComplianceEngine.initializeThreadContext
,然后再使用 compliance 插件模块中的其它接口。
Windows
在 Windows 平台构建一个 compliance 资源目录,请按照如下的步骤:
- 新建一个文件夹作为 compliance 的资源目录。比如,
D:/compliance_resources
。 - 将
compliance/win
目录下的ect
、lang
、var
文件夹拷贝到D:/compliance_resources
。 - 根据要编译的平台架构,选择相应的库资源。
- 如果使用 win32,则将
compliance/win/lib/x86
文件夹下的所有文件拷贝到D:/compliance_resources
。 - 如果使用 win64,则将
compliance/win/lib/x64
文件夹下的所有文件拷贝到D:/compliance_resources
。
例如,使用 win32 平台架构,则 compliance 资源目录如下所示:

Win32 Compliance Folder
Linux
在 Linux 平台构建一个 compliance 资源目录,请按照如下的步骤:
- 新建一个文件夹作为 compliance 的资源目录。比如,
/root/Desktop/compliance_resources
。 - 将
compliance/linux
目录下的ect
、lang
、var
文件夹拷贝到/root/Desktop/compliance_resources
。 - 根据要编译的平台架构,选择相应的库资源。
- 如果使用 linux32,则将
compliance/linux/lib/x86
文件夹下的所有文件拷贝到/root/Desktop/compliance_resources
。 - 如果使用 linux64,则将
compliance/linux/lib/x64
文件夹下的所有文件拷贝到/root/Desktop/compliance_resources
。
例如,使用 linux32 平台架构,则 compliance 资源目录如下所示:

Linux32 Compliance Folder
对于 Linux 平台,在运行 demo 之前,您需要将 compliance 资源目录加入到系统共享库目录的查找路径中,否则 ComplianceEngine.initialize
会执行失败。
例如,在运行 demo 之前,您可以通过命令 export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}: /root/Desktop/compliance_resources
将 compliance 资源目录临时加入到 LD_LIBRARY_PATH
。
Mac
对于 Mac 平台,您可以直接使用 compliance/mac
资源文件夹作为 compliance 的资源目录。
配置 Demo
以 Java 开发语言为例,构建 compliance 资源目录后,在 \examples\simple_demo\compliance\compliance.java
文件中配置 compliance demo,在 \examples\simple_demo\compliance\preflight.java
文件中配置 preflight demo。
本节以 Windows 平台为例,展示如何在 compliance.java
或者 preflight.java
文件中进行 demo 配置。对于 Linux 和 Mac 平台,其配置操作与 Windows 平台相同。
指定 compliance 资源目录
在 compliance.java
或者 preflight.java
文件中,如下所示,添加 compliance 资源目录,用以初始化 compliance 引擎。

初始化引擎库
NOTE
- 如果您使用的是福昕 PDF SDK 的试用 key,则无需授权 compliance 引擎库。
- 如果您使用的是福昕 PDF SDK 的正式授权 key,则福昕销售团队将向您发送一个额外的 unlock code,用于初始化 compliance 引擎库。将 unlock code 传递给初始化函数
ComplianceEngine.initialize (compliance\_resource\_folder\_path, compliance\_engine\_unlockcode)
。
(可选) 为 compliance engine 设置语言(仅适用于 compliance demo)
ComplianceEngine.setLanguage
函数用来为 compliance 引擎设置语言。默认的语言是英语,所有支持的语言如下所示: "Czech", "Danish", "Dutch", "English", "French", "Finnish", "German", "Italian", "Norwegian", "Polish", "Portuguese", "Spanish", "Swedish", "Chinese-Simplified", "Chinese-Traditional", "Japanese", "Korean".
例如,取消注释 ComplianceEngine.setLanguage
函数,并将语言设置为 "Chinese-Simplified"。

设置语言
(可选) 为 compliance 引擎设置临时文件夹(仅适用于 compliance demo)
ComplianceEngine.setTempFolderPath
函数用于设置一个临时文件夹以存储处理过程 (如验证或转换) 中生成的文件。如果此函数未设置自定义的临时文件夹,则将使用系统中默认的临时文件夹。
例如,取消注释 ComplianceEngine.setTempFolderPath
函数,并将路径设置为 D:/compliance_temp
(必须为一个有效的路径)。

设置临时文件夹
运行 Demo
以 compliance demo 为例,定位到 \examples\simple_demo\compliance
目录,运行 RunDemo.bat
,然后控制台将默认打印以下内容:

运行 Demo
输出文档位于 \examples\simple_demo\output_files\compliance
文件夹下。