Native Linux archival font repair
原生 text/vector PDF/A-4 转换可以通过配置的 Ghostscript pdfwrite 进程显式规范化缺失字体,保留可搜索文本和矢量路径,并在发布前用官方 veraPDF CLI 验证最终的原生归档文档
Callback ABI
{"schemaVersion":1,"type":"pdfa.convert","mode":"preserve","profile":"PDF/A-4","fontRepair":true,"maxFontRepairMilliseconds":120000}
fontRepair 默认 false;设为 true 即显式允许按已安装 Ghostscript 字体配置进行字体替换,规范化成功后返回 fontRepairPerformed true
响应还包括 textAndVectorsPreserved、validationSucceeded、pageCount 和既有的移除字段、签名与注释计数;成功发布用已验证的未加密归档文档替换句柄
Pascal 配置
Options := THPDFHeadlessArchivalPreservationOptions.Default;
Options.FontRepair := True;
Options.GhostscriptExecutable := '/usr/bin/gs';
Options.MaxFontRepairMilliseconds := 120000;
Report := HPDFConvertHeadlessToPDFA4PreservingFile(Document, Destination, Options);
GhostscriptExecutable 选择规范化可执行文件,JavaExecutable 与 ValidatorJAR 选择真实验证器,CancellationToken 作用于资源遍历、文本检查、规范化和验证
处理与限制
转换器先把源页面资源导入私有原生文档并拼合符合条件的注释外观,因此已认证 AES 输入经文档读取器解密,原始页面权限仍然适用
Ghostscript 收到启用 SAFER 的参数向量、prepress 基线、PDF 2.0 输出、字体嵌入和显式图像降采样覆盖;有界资源遍历把字体名收集为十六进制 PostScript 名,并为较旧 Ghostscript 版本准备显式 AlwaysEmbed 列表
规范化进程经 /usr/bin/prlimit 运行,地址空间限制取自 MaxWorkingBytes,文件大小限制取自 MaxOutputBytes;其输出与诊断有字节上限,MaxFontRepairMilliseconds 约束处理耗时
规范化页面必须保留原页数和提取出的字符序列,允许行与空白布局变化以及额外的拼合外观文本;转换器随后把它们导入带 sRGB output intent、XMP 和文档标识符的全新原生 PDF/A-4 模板
最终候选必须在 fsync 和原子重命名前通过官方配置的 veraPDF PDF/A-4 验证;后端不可用、文本变化、无效输出、超预算、超时或取消都会保持目标完好并清理私有 staging 文件
超时与取消会终止、必要时杀死并回收直接规范化进程;子进程可执行文件应直接运行,而不是经 shell 或会创建无关后代的包装器
运行时与保真度
字体修复需要 Ghostscript、其已安装替代字体和 util-linux prlimit;preservation 验证需要无头 Java 运行时、官方 veraPDF CLI JAR 以及用于原生 sRGB profile 生成的 Little CMS 2
替代字体可能改变 glyph 轮廓和布局;外观精确性重要时优先使用可用的原始字体,显式字体修复不承诺字节级一致的页面资源或保留签名
已签名输入要求 AllowSignatureInvalidation true,源/输出别名被拒绝,可见注释在拼合前仍需要可用的 normal 外观
独立验收覆盖 12 个标准拉丁字体面和一个未嵌入 Arial TrueType 字体,横跨明文、AES R5 与 AES R6 输入、旋转页面、真实嵌入字体程序、可搜索变音文本、保留矢量路径、像素保真度和真实 PDF/A-4 验证
Page imports and preservation · Native callback ABI · Native workflows