原生 Linux 与 macOS

原生 FPC 后端在 Linux x64 与 macOS ARM64 上支持无头库工作流,产出真实的 ELF 与 Mach-O 程序

PDF 创建、保存/加载、文本提取与编辑、结构化提取、便携 OCR 回调、位图渲染、元数据、加密、网络 range 访问以及原生 PFX 签名,都使用既有 TPDFlib API

运行时依赖

提供程序库用途
OpenSSL 3libcryptoAES CBC/GCM、摘要、PKCS12 身份、CMS 签名、完整性以及显式信任锚链
libcurllibcurl 与异步 DNSHTTP/HTTPS、有界二进制传输、range 访问与 RFC 3161 请求
Cairolibcairo位图图像表面、路径、剪裁、字形轮廓与图像
Fontconfiglibfontconfig真实的本地字体文件匹配,包括显式的字族替换
OpenJPEG 2libopenjp2JPEG 2000 解码与编码

Linux 加载对应的系统 SONAME;macOS 使用 /opt/homebrew 下的 ARM64 库与系统 libcurl

缺失库、缺失符号或不受支持的操作会产生显式失败;不使用任何 Windows 设备上下文替代物

签名与时间戳

默认 PFX 提供程序支持真实的 RSA 与 EC 身份、分离式 CMS、CAdES 以及传统的附加式 SHA1 配置;验证会检查 PDF ByteRange 字节与 CMS 签名

证书链验证需要显式的信任锚;内嵌证书不授予信任,仅完整性也不意味着信任

ApplyPAdESSignatureTimeStamp 使用配置的默认原生 HTTP 传输获取并附加真实的 RFC 3161 令牌;请在原始签名之前预留足够的 /Contents 容量

时间戳验证会检查签名的令牌、消息 imprint、独占的关键 timeStamping EKU、TSA 名称、可选的期望 policy/nonce,以及令牌生成时刻的可信证书链

文档时间戳还会验证实际的 PDF ByteRange imprint;调用方可以使用既有的 DocTimeStamp 直通工作流并提供令牌

元数据与渲染

XMP 使用真正的命名空间感知 DOM,并在编辑期间保留无关属性

无论源编码如何,XML 读取器都拒绝 DTD 声明;输入与解码后的字符都有界,DOM 构建之前的流式处理会限制深度与节点事件数量

渲染使用真实的原生位图存储与 Cairo 图像表面;条带渲染保留设备空间坐标,并使用保护行保持边界抗锯齿一致

原生字族字体嵌入会解析真实的 Fontconfig 文件,嵌入一个完整的独立 TrueType 程序,带 CIDFontType2、Identity CIDToGIDMap、初始化的度量与 Unicode 宽度;BMP 文本与便携 OCR 层在 PDF 保存/重新加载后仍然有效

该入口拒绝未嵌入的字族字体、字体集合、CFF 程序与仅位图嵌入权限;受限制的嵌入需要既有的显式权限覆盖,禁止子集化的字体保持为完整程序

限制

构建与验证

python3 Tests/Native/run_native_tests.py --compiler /path/to/fpc --output /tmp/pdflib-native-tests

传入 --config /path/to/fpc.cfg 可显式指定编译器配置;runner 不会更改全局编译器设置,也不会添加 -FcUTF8

该套件检查真实的原生可执行文件格式,并写出包含编译器/依赖版本、源码哈希、可执行文件哈希、结果与限制的 JSON 报告

随库附带的 Tests/Native 测试夹具覆盖 PDF 保存/重载/渲染、文本工作流、加密、元数据、签名、真实 HTTP/TSA 流量以及负面安全用例

参考索引