|
HotPDF 是面向 Delphi 和 C++Builder 的 VCL 组件库,可在不依赖外部 PDF DLL 的情况下生成 PDF 文档。主要入口是 THotPDF 类,用于管理文档创建、页面访问、压缩、元数据、安全设置和输出流
典型工作流包括绘制文本和矢量图形、嵌入位图和图元文件内容、导入 TIFF 和 JPEG2000 图像、附加文件、配置查看器首选项、使用密码和权限保护最终文档,以及用密码加载 RC4-40 / RC4-128 Standard 加密 PDF 以输出未加密的已加载文档
当前亮点
- 扩展了对 TIFF、JPEG2000、WMF、EMF 以及 JBIG2Decode 过滤器识别工作流的图像支持
- 内置 LZW 支持、基于 zlib-ng 且兼容 zlib 模式的 Flate 压缩、64 位 zlib-ng 运行时 SIMD 调度,以及由 libjpeg-turbo 3.1.90 支撑并带 NASM SIMD 对象加速的标准 JPEG 处理
- Win32 和 Win64 的 C 运行时共享桥接由 HPDFCLibs.pas 实现,涉及 Win32 bcc32c/bcc32 OMF 对象、Win64 COFF64 对象以及 zlib-ng Win64x COFF 对象,包含 32 字节对齐的 C 内存分配
- 扩展了查看器和打印首选项,包括文档方向、打印缩放、双面模式、页面边界和初始缩放行为
- 改进了字体嵌入、Unicode 文本输出和从右到左文本渲染
- PDF/A Level A 输出为归档合规启用带标记 PDF 基础,同时将 PDF/UA-1 标识保持为显式的 PDFUACompliance 选项
- PDF/A-1、PDF/A-2、PDF/A-3、PDF/X-1a、PDF/X-3、PDF/X-4 和 PDF/UA-1 工作流包含 profile-aware producer gates、metadata generation、适用时的 OutputIntent 支持,以及经 veraPDF 验证的 PDF/A-2A / PDF/A-3A smoke coverage
- 更新了用于 ViewerPreferences 和嵌入字体验证的演示应用
核心能力地图
- AcroForm 字段与表单动作覆盖 text field、checkbox、radio button、combo box、list box、push button、signature field、SubmitForm、ResetForm、JavaScript 和 document-level action 工作流
- 注释、链接、附件和多媒体交互覆盖 text/link/file attachment annotation、embedded file name tree、rich media boundary、URI action、GoTo action 和页面级交互输出
- 密码保护、权限控制、AES-256 和 PAdES/PFX 签名覆盖 Standard security handler、revision 6 permissions、signature field、CMS/PAdES signing 和 PFX certificate loading
- PDF/A、PDF/X 和 PDF/UA profile-aware 输出覆盖 archival、print-production 和 accessibility identity,并把 producer gates、metadata、OutputIntent、Tagged PDF helper 和验证 smoke 串到同一标准合规模型
- Optional Content layers 覆盖可见性分组、导入页面隐藏/显示、group resources 和 viewer-controlled layer navigation
- patterns、shadings 和 reusable Form XObject 覆盖 tiling pattern、soft mask、transparency group、canvas helper 和可复用绘图资源
- JPEG、TIFF、CCITT、JPEG2000 和 JBIG2Decode 覆盖常用 bitmap import、fax-style bilevel image、JPEG/JPEG2000 stream handling 和已加载文档中的 JBIG2Decode 过滤器识别边界
- Unicode、CJK、RTL、vertical text 和 OpenType shaping 覆盖 Type 0 font、ToUnicode CMap、CJK font workflows、right-to-left text、vertical text、CFF/OpenType subsetting 和 GSUB-driven shaping
- Direct File API、large-file benchmark 和 loaded-document rewrite 覆盖大文件直接写入、对象替换表、页级重排、copy/merge/edit workflows 和已加载 PDF 保存路径
- OutputStream、LoadFromStream 和 memory-stream generation 覆盖 caller-owned stream 输出、内存流示例、stream-based loading 和无需临时文件的服务端生成场景
标准符合性定位
- PDF/A 支持通过 PDFACompliance 公开。HotPDF 提供 PDF/A metadata、profile restrictions、font-embedding enforcement、OutputIntent hooks 和 validation smoke coverage;应用程序仍需提供有效 ICC profiles、title/language values、fonts 以及符合 profile 的内容
- PDF/UA 支持通过 PDFUACompliance 和 Tagged PDF APIs 公开。HotPDF 提供 document-level wrapper、structure-tree machinery、role mapping、marked-content helpers、ParentTree wiring 以及 alternate-text / ActualText helpers;应用程序仍负责真实 semantic structure 和 reading order
- PDF/A Level A 与 PDF/UA-1 是两个独立声明。Level A 启用 archival conformance 所需的 Tagged PDF 基础,而 PDF/UA-1 XMP identity 只有在显式启用 PDFUACompliance 时才输出
构建和平台说明
- Win32 版本链接 bcc32c 生成的 zlib-ng OMF 对象以及 bcc32 生成的 JPEG/TIFF OMF 对象,存放于 Lib\thirdparty\Win32
- Win64 版本链接 Lib\thirdparty\Win64 中的 COFF64 对象;zlib-ng 后端目前链接 Lib\thirdparty\Win64x 中 bcc64x 生成的 COFF 对象
- 原生对象从干净输出重新构建的验证已通过:206 个 Win32 对象、205 个 Win64x 对象和 206 个 MSVC Win64 对象
- HPDFOpenJpeg.pas 单元当前作为 interface layer 和 extension point,不应视为完整原生 OpenJPEG runtime binding
诊断
- 库级通用诊断由 HotPDF.inc 中的 withDEBUG 控制,启用后将写入 HotPDF-Debug.log
- page-content merge tracing 由 PAGECONTENT_DEBUG_FILE 单独控制;只有显式启用时才会写入 PageContent_Debug.txt
自动化验证
- DUnitX Delphi regression suite 通过 Tests\Delphi\Run-HotPDFDelphiTests.bat 在 Win32 上通过 20 个测试,在 Win64 上通过 20 个测试
- GoogleTest C++Builder regression suite 通过 Tests\C++Builder\Run-HotPDFCBuilderTests.bat 在 Win32 上通过 17 个测试,在 Win64x 上通过 17 个测试
- 自动化覆盖会执行 generated metadata、Unicode 和 RTL text、annotations、attachments、standard JPEG image placement、image 和 TIFF import、zlib-ng Flate compression、barcode output、memory-stream output、page setup、encryption、hyperlinks、paragraphs、copy/merge/edit workflows、tables、charts、numeric output、metafiles 以及 structured reports
HotPDF 适用于报表生成、技术文档、图像处理工作流,以及其他需要以程序方式直接控制 PDF 输出的应用
|