Native page imports and preserved PDF/A-4
追加选定页面时保留其原始文本与矢量内容流、继承的 MediaBox/CropBox/Rotate、显式 UserUnit、嵌入字体、图像、共享资源和循环间接标识
AppendImportedPages 作用于两个不同的已加载文档,保留目标修订与加密,并在提交页面树前暂存全部导入对象;重复选择、无效引用、取消、权限和字节/对象/页预算都会保持目标不变
选定的源注释变成使用其 normal 外观状态、BBox 和 Matrix 的普通 Form XObject 内容;源交互与字段不导入,隐藏注释被移除,flattenAnnotations=false 显式移除全部源注释
可见注释需要可用的 normal 外观;NoZoom/NoRotate 几何需要另外的编辑策略,已签名或已认证的目标文档需要单独的签名文档策略
源用户密码必须授予文本提取权限,目标用户密码必须授予内容修改权限;owner 认证可绕过这些权限限制
经验证的保留
HPDFConvertHeadlessToPDFA4PreservingFile 创建带真实 sRGB output intent 与 PDF/A-4 XMP 的独立 PDF 2.0 文档,导入原始内容与拼合外观,用真实验证器 veraPDF CLI 验证暂存候选,并只原子发布合规输出
转换移除原始加密、交互字段、签名、catalog 动作、文档元数据和 catalog 附件,同时保留可达的页面内容/资源;源包含已签名字段时必须显式 allowSignatureInvalidation
默认路径保留原始字体程序;explicit font repair 为缺失字体追加有界规范化与可用替代字体嵌入,每个最终候选在替换目标前仍需真实 PDF/A-4 验证
验证器配置
安装无头 Java 和官方 veraPDF CLI JAR,然后设置 HOTPDF_VERAPDF_JAR 或在 Pascal 中配置 ValidatorJAR;默认路径为 /usr/bin/java 和 /opt/hotpdf-verapdf/cli.jar
验证使用独立进程参数、无头 Java、配置的堆上限、有界 stdout/stderr、时间预算和取消;超时/取消终止并回收子进程,删除私有 staging 文件
受管理的准备与 Java 堆限制不代表操作系统层面的 RSS 上限
回调操作
{"schemaVersion":1,"type":"pages.import","pages":[2,0,1],"sourcePassword":"source-owner","flattenAnnotations":true}
{"schemaVersion":1,"type":"pdfa.convert","profile":"PDF/A-4","mode":"preserve"}
pages.import 需要已加载目标句柄和单独的源 InputIO;目标认证随句柄走,sourcePassword 只作用于导入的输入
pdfa.convert 默认栅格;preserve 保留文本/矢量内容并在输出回调前调用 veraPDF,只在输出与结果发布成功后才用已验证的未加密文档替换句柄
验收
原生 Linux FPC 3.2.2 与 3.3.1 验证原始流/字体/CMap 字节、继承资源、旋转、AES 源/目标修订、变换外观、循环资源、重载行为、回滚、真实 PDF/A-4 验证和有界子进程生存期;Windows FPC 与 Delphi 演练页面导入,两种 C++Builder 架构编译公开头文件
sh Tests/Linux/Run-HeadlessPageImportAcceptance.sh
sh Tests/Linux/Run-LinuxABIAcceptance.sh
Page import and preserved archival contracts · Native document workflows