losLab 软件开发博客

HotPDF Delphi Component

Software Development Blog

HotPDF Delphi Component

在 Delphi 中跨文档复用 THotPDF 实例

解释为什么复用已结束的 THotPDF 会触发 load-document 错误,Create、BeginDoc、EndDoc、Free 的生命周期如何运作,以及何时应当新建实例 报错内容是 ,而且几乎总是在第二次尝试时才会出现。第一份文档可以正常写出。随后同一个 实例又被要求开始第二份文档,这时

HotPDF Delphi Component

在 Delphi 中使用 HotPDF 构建 AcroForm 字段和动作

使用 HotPDF 在 Delphi 中创建 AcroForm 文本字段、复选框、单选组,以及提交或 JavaScript 动作,并避免表单接收时出现导出值不匹配问题,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

在 Delphi 中使用 HotPDF 生成 PDF 可扫描条形码

用 Delphi 中的 HotPDF 在 PDF 里绘制线性条形码,了解它支持的符号体系,以及模块宽度和静区如何决定扫描器能否成功读出条码,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

Delphi 中使用 HotPDF 为现有 PDF 添加书签

在 Delphi 中使用 HotPDF 为现有 PDF 添加书签和命名目标:AddLoadedOutline 嵌套、XYZ 目标以及 /Count 语义陷阱 HotPDF 通过 在 Delphi 中为现有 PDF 添加书签,该函数在已加载的文档上创建任何嵌套级别的提纲条目,并且它通过 和 读写命名目标(Named

HotPDF Delphi Component

Delphi HotPDF 内置模板匹配 OCR

HotPDF 在 Delphi 中重建内置模板匹配 OCR:DIB 行顺序、Otsu 二值化、16×24 字形模板,以及通过高度聚类判断大小写

HotPDF Delphi Component

使用 HotPDF 图元在 PDF 中绘制图表

HotPDF 没有图表对象,因此您需要使用 Delphi 中的 Rectangle、LineTo 和 Circle 自己绘制条形图、折线图和饼图。这里介绍了坐标计算和布局。 HotPDF 没有图表对象。没有 ,没有 ,也没有任何可以接收数字数组并返回渲染图形的东西。相反,它为您提供了一个页面画布,其中包含每个 PDF

HotPDF Delphi Component

在 Delphi PDF 中使用 HotPDF 处理阿拉伯语和 RTL 文本成形

了解 HotPDF 在 Delphi PDF 中会做哪些文本成形、不会做哪些文本成形:双向重排、阿拉伯语连写、从希伯来语到泰语和天城文的覆盖范围,以及如何验证输出 把阿拉伯语短语 传给 ,然后打开结果文件。字母方向是错的,每个字母都停留在孤立字形,前后之间还留着明显空隙,看起来就像有人把英文倒着打出来,再在每个字符之间

HotPDF Delphi Component

Delphi 中的 HotPDF TextOut:大小、样式、旋转和间距

超越 Hello World,在 Delphi 中使用 HotPDF TextOut:设置字体大小和样式,按角度旋转,精确放置坐标,并调整字符和单词间距。 HotPDF 文档中的每一个可见字符串都是通过一次调用生成的: 。Hello World 示例使用它最简单的形式,字体只设置了一次,四个参数保留为合理的默认值

HotPDF Delphi Component

在 Delphi 中安全地重写 PDF 内容流

HotPDF 的 VisitLoadedPageContentOperators 把页面内容流里的每个操作符交到你手上,逐个保留、删除、替换或中止;全部保留时重写结果与原流逐字节一致,改别人的文档也放心

HotPDF Delphi Component

Delphi 中的 HotPDF 自定义 PDF 查看器:MVC 架构

HotPDF 如何将 Delphi PDF 查看器拆分为无界面的 THPDFViewerModel 和基于 TScrollBox 的视图,让缩放、搜索与导航逻辑可进行单元测试 HotPDF 将 Delphi PDF 查看器拆分为两部分: 是一个负责缩放、旋转、搜索、高亮和导航状态的普通类,不依赖窗口句柄;

HotPDF Delphi Component

在文本编辑器中手工编辑 PDF,然后修复它

SaveLoadedDocumentDiagnostic 把 PDF 写成没有对象流和交叉引用流的可读形式,手工改完再交给 RepairDiagnosticDocument,靠复制字节重建偏移量、流长度、xref 与文件尾,而不是整份重新序列化

HotPDF Delphi Component

Delphi 动态 XFA 表单运行时:HotPDF 事务

在 Delphi 中用 HotPDF TXFAWidgetRuntime 填写动态 XFA 表单:每次字段编辑都是快照、验证、计算、重排的原子事务,失败整体回滚,预算先于任何分配执行

HotPDF Delphi Component

Delphi中的ECDSA PDF签名校验:DER转P1363

在Delphi中把CMS DER编码的ECDSA签名转换为IEEE P1363格式以供BCryptVerifySignature使用:严格的r、s解码、曲线提供程序名称与CMS签名者匹配 CMS容器内的一个ECDSA 是一个DER编码的 。而Windows CNG函数 两种格式都不接受:它要的是IEEE

HotPDF Delphi Component

使用 HotPDF 将 EMF 和 WMF 矢量导入 Delphi PDF

HotPDF 的 EMF 和 WMF 解释器将 GDI 渐变填充映射为 PDF 轴向渐变,把阴影画刷映射为平铺图案,让 Delphi 中的矢量输出保持真实还原,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

使用 HotPDF 在 Delphi 中实现 EN 16931 Schematron 规则引擎

HotPDF 使用原生 XPath 1.0 引擎在 Delphi 中验证 EN 16931 Schematron 业务规则,跳过 XPath 2.0 检查,并在 Delphi 7 上提供存根实现 HotPDF 通过 验证 EN 16931 电子发票业务规则,这是一个由库自行实现的 Schematron 断言引擎,基于

HotPDF Delphi Component

静默禁用字体子集化的 EndDoc 错误

在文件写入后才运行的字体子集化会生成全量字体且不报错,了解 HotPDF 中隐藏的 EndDoc 顺序错误是如何产生的,以及应如何捕获它,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

在 Delphi 中从已加载的 PDF 提取图片:HotPDF

在 Delphi 中使用 HotPDF 的 ExtractLoadedImage 函数,将已加载之 PDF 中的图片解码:支援将 Flate、LZW、JPEG、JPEG 2000、Indexed、CMYK、CCITT 与 JBIG2 滤镜转换为 TBitmap。 你的磁碟上有一份

HotPDF Delphi Component

字体子集闭包:Delphi PDF中丢失的成形字形

当子集闭包忽略 GSUB 输出时,成形后的阿拉伯文和印地文字形会渲染成 .notdef,了解 HotPDF 如何把成形用的字形 ID 并入 Delphi 字体子集,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

HotPDF 在 Free Pascal Win32 下的 C 符号修饰

Free Pascal 在 Win32 上给 cdecl 导入自动加下划线前缀,而 public name 导出按字面原样保留,HotPDF 用两个前缀常量同时满足两侧约定,且不破坏 Delphi 构建

HotPDF Delphi Component

HotPDF 中的 rowspan 网格与跨页重复表头

HotPDF 渲染 HTML 表格时用真实的占用网格处理 rowspan 与 colspan,行高靠实测而不是数字符数,分页断开时在每一续页重复表头,并对两种会画错的情况明确拒绝重复

HotPDF Delphi Component

HotPDF 图像降采样核与打印抖动

HotPDF 通过 ImageDownsampleKernel 提供可分离的双三次与 Lanczos3 降采样核,另以 RenderOutputDither 提供 Floyd-Steinberg 渲染抖动,每一样都在拿时间换质量

HotPDF Delphi Component

Delphi中Indexed PDF调色板:基础颜色空间与循环

HotPDF 在 Delphi 中如何把基于 Gray、CMYK、Lab 和 ICCBased 的 Indexed PDF 调色板规范化为公开 RGB 调色板,解析时处理分量打包与范围缩放,并用深度上限防住间接引用循环

HotPDF Delphi Component

用HotPDF在Delphi中做区域无关的PDF数字格式化

为什么十进制逗号区域会在 Delphi 中破坏 PDF 内容流,每个实数都必须用句点写;HotPDF 在 Type 1 字体、SVG 和 FPC 构建中钉死区域无关的数字格式化,工作站在任何 locale 下都输出同一字节序列

HotPDF Delphi Component

Delphi PDF 中的原生 JBIG2 双色调图像压缩

JBIG2 能让扫描的黑白页面在 PDF 中达到最小体积,了解 HotPDF 如何在 Delphi 中写入 JBIG2Decode 流并接入不同的编码器后端,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

在 Delphi 中跨页面共享 JBIG2 符号字典

HotPDF 在 Delphi PDF 中把跨页面的 JBIG2 符号字典合并为一个 /JBIG2Globals 流,从而减少多页扫描文件中的重复字形存储,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

在 Delphi 中用带标记输出实现声明式 PDF 排版

用 THPDFDOMDocument 声明小节、堆栈、文本、列表和表格,再交给 THPDFDOMRenderer 测量并分页,排版代码从此不用自己算 y 坐标,跨页时 PDF/UA 结构树也会一并生成

HotPDF Delphi Component

Delphi 中的线性化 PDF 输出:HotPDF 提示表

HotPDF 如何在 Delphi 中写出用于 Fast Web View 的线性化 PDF:页面分区、提示表、布局收敛与 4 GiB 偏移量上限 HotPDF 通过 上的 属性写出线性化 PDF 文件,也就是 Acrobat 标注为 Fast Web View 的那种布局。在 之前设置这个属性,会让 HotPDF

HotPDF Delphi Component

HotPDF 中的 PAdES LTV 证据与种子值

用一次 HotPDF 调用把刚签好的 PDF 从 B-B 级升级到 B-LT 级,沿 AIA caIssuers 自动补全 CMS 缺失的证书链,并对签名字段声明的种子值约束做强制校验

HotPDF Delphi Component

用HotPDF在Delphi中解码PDF Predictor和LZWDecode

HotPDF如何在Delphi中解码PDF DecodeParms:PNG predictor行标签10到15、TIFF Predictor 2样本差分,以及LZW EarlyChange码字宽度 一个标记为 的流,并不意味着每一行都使用PNG filter 2。HotPDF是面向Delphi和C++Builder的原

HotPDF Delphi Component

在 Delphi 中用 HotPDF 进行后量子与 EdDSA PDF 签名

HotPDF 在 Delphi 与 C++Builder 中校验 ML-DSA、Ed25519 与 Ed448 的 CMS 签名,并通过回调、远程与 PKCS#11 签名提供者把私钥留在进程之外,EnsureMLDSAExtensions 显式声明后量子扩展以让校验结论可被其他实现复现

HotPDF Delphi Component

Delphi 中的 PDF 解压炸弹:HotPDF 过滤器链预算

为什么按过滤器逐个设限拦不住嵌套式 PDF 解压炸弹?了解 HotPDF 的 DecodeBudgetBytes 上限如何在 Delphi 中约束过滤器链的每个阶段,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

Delphi 中的非破坏性 PDF 高亮:HotPDF 审阅层

HotPDF 在 Delphi 中添加高亮审阅层,将标记矩形保存在内存中而不重写 PDF,并在缩放和旋转过程中保持对齐 审阅期间在段落周围绘制的矩形不必成为 PDF 内部的标记。HotPDF 的 提供了 方法,该方法将每个高亮保留为内存中的记录,而不是对已加载文档的修改,因此审阅者可以标记数十个页面,同时磁盘上的文件仍

HotPDF Delphi Component

HotPDF:用对象依赖图找出 PDF 内存元凶

使用 HotPDF 依赖图、支配节点保留字节数、解析器 arena 统计与字符串驻留计数器,把已加载 PDF 的内存精确归因到真正持有它的对象上

HotPDF Delphi Component

在 Delphi 中使用 HotPDF 进行对象流和增量更新

了解 HotPDF 如何在 Delphi 中使用对象流和 xref 流压缩 PDF 结构,并通过增量更新保留已签名版本、控制兼容性与文件体积,安全修改现有文档。本文还说明何时应压缩追加历史,以及如何在发布前验证输出文件,适合归档与签名流程,也适合大规模文档处理和长期存档验证场景 PDF 1.5

HotPDF Delphi Component

纯 Delphi 中的 OpenType GSUB 样式替换

样式集和替换存在于字体的 GSUB 表中。了解 HotPDF 如何在纯 Delphi 中不依赖 HarfBuzz 解析 salt 和 ss01 到 ss20 替换。 设计师为标题选择了一款带有单层 的字体,或者为表格选择带有斜杠的零,或者为封面选择一组花体大写字母。这些字形已经存在于字体中。它们只是不是默认设置

HotPDF Delphi Component

HotPDF 的 CMYK 叠印打样与渲染设备

HotPDF 的 RenderLoadedPageToDevice 通过同一设备抽象把已加载 PDF 页面渲染到位图、打印机 HDC 或矢量图元文件,开启 RenderOverprintPreview 后同一次调用即可模拟 CMYK 四色油墨叠印,用于印刷前的屏幕打样核对,避免下机才发现色差

HotPDF Delphi Component

用 HotPDF 在 Delphi 中将 PDF 页面导出为 SVG

BuildLoadedPageSVG 一次调用就把已加载的 PDF 页面导出成独立 SVG 字符串,文本落在真正的 text 元素上,页面旋转、图像翻转、虚线样式和细线描边都按图形状态还原

HotPDF Delphi Component

Delphi 中不引发 OOM 的并行 PDF 页面渲染

RenderLoadedPagesParallelOrdered 跨工作线程渲染 PDF 页面,并按输入顺序把每一页回调交付出去;内存预算决定线程数、压住位图峰值占用,取消时也不会死锁

HotPDF Delphi Component

Delphi 中 PDF 解析器挂死:光标永不移动

一个不消费任何字节就返回的解析分支,能让一份 40 字节的畸形 PDF 陷入死循环。HotPDF 在 Delphi 里找出四处这样的零前进停滞并验证修复,这类缺陷不触发解码预算、不占内存,却把单核 CPU 跑满

HotPDF Delphi Component

Delphi 中 PDF MAC 修订链验证(ISO 32004)

HotPDF 如何在 Delphi 中按修订逐个验证 ISO/TS 32004 PDF MAC 链:每修订前缀流、CMS 签名写出顺序,以及先解密十六字节 /Perms 再采信的权限位

HotPDF Delphi Component

在 Delphi 中用 HotPDF 输出 PDF 2.0、PDF/A-4 与 PDF/UA-2

HotPDF 从 Delphi 与 C++Builder 写出原生 PDF 2.0 文档,覆盖三个 PDF/A-4 归档子集与带命名空间结构元素的 PDF/UA-2 无障碍输出,AddPDFAssociatedFile 处理关联文件,EndDoc 在生成结束时拦截破损结构树避免现场校验失败

HotPDF Delphi Component

在 Delphi 中用 HotPDF 把字体子集缓存到磁盘

HotPDF 的持久化磁盘字体子集缓存跨文档、跨进程复用 TrueType 与 OpenType 字体子集,采用内容寻址键、LRU 淘汰策略与九个可读的统计计数器,缓存失败时自动回退到普通内存子集化而绝不阻断文档产出,让批量报表任务大幅削减重复子集化所消耗的 CPU 时间和内存峰值

HotPDF Delphi Component

强化 Delphi PDF 签名器以抵御恶意 PKCS#12

证书解析器属于攻击面。本文介绍 HotPDF 在 PKCS#12 和 ASN.1 处理中修复的整数回绕与 PBKDF2 拒绝服务缺陷,并说明如何限制长度、迭代次数和解析开销,保护 Delphi PDF 签名流水线免受恶意凭据影响,适合服务器、批处理和上传证书场景的工程团队参考与审计

HotPDF Delphi Component

在 Delphi 中渲染 PDF 渐变:轴向与径向

在 Delphi 中使用 HotPDF 渲染 PDF 轴向和径向阴影:支持 sh 操作符,并在其函数引擎中把渐变离散化为色带逐段求值,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

在 Delphi 中渲染 Separation 和 DeviceN 专色

在 Delphi 中使用 HotPDF 渲染 PDF Separation 和 DeviceN 专色:色调变换函数、Type 4 计算器评估、Lab 白点适应 HotPDF 通过 解析颜色空间,通过 评估色调变换函数,并将结果通过替代空间转换为屏幕所需的 RGB,从而在加载的 PDF 页面上渲染 Separation

HotPDF Delphi Component

PDF渲染器什么都不画:四个隐蔽的Delphi缺陷

HotPDF 渲染器中四个隐蔽的 Delphi 缺陷:带前导斜杠的名称操作数、颠倒的 cm 矩阵拼接,以及一个把十二个操作符清零的 token 索引错误,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

用 HotPDF 解码 PDF 页面中旋转过的 QR 码

HotPDF 在已加载的 PDF 页面里解码旋转过的 QR 符号:在解码器内部对采样模块矩阵穷举全部八个 D4 方向,而不是旋转扫描掩模,把旋转重试留给 Code 39 等真正需要的线性条码

HotPDF Delphi Component

在 Delphi 中搜索并替换现有 PDF 中的文本

在 Delphi 中使用 HotPDF 搜索并替换现有 PDF 文件中的文本:字形级搜索、逆向字体编码,以及子集字体在替换时的真实限制,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

在 Delphi 中比较两份 PDF 文件:结构与像素

THPDFDocComparison 从文档目录出发遍历对象图,再逐页渲染做像素比对,产出一份 JSON 报告,列出每一处差异、消耗掉的预算,以及比对是否真的跑到了终点

HotPDF Delphi Component

用 HotPDF 在 Delphi 中按结构顺序提取 PDF 文本

HotPDF 组件如何遍历文档结构树并按 MCID 重新组装字形,以作者创作顺序读取标记 PDF 的文本;对未标记或仅装饰性标记的页面,自动回退到几何提取器,不再靠几何猜测拼错句子

HotPDF Delphi Component

Delphi 展平没有 /AP 流的 PDF 注释

HotPDF v2.743.0 在 Delphi 中为没有 /AP 流的 PDF 注释生成外观并完成展平,让 NeedAppearances 表单值和标记注释不再消失

HotPDF Delphi Component

使用 HotPDF 在 Delphi 中将数据表渲染为 PDF

在 Delphi 中把数据集的每一行绘制为真正的 PDF 表格:计算合适的列宽、对齐单元格文本、绘制网格线,并在表格跨页时自动重复表头,保持报表版式统一,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

HotPDF 在 Delphi 中渲染 PDF 平铺图案

了解 HotPDF 如何在 Delphi 中渲染 PDF 平铺图案:图案状态跨 q 和 Q 保持、被裁剪的填充与描边路径、可见图块范围以及硬性图块预算,适用于 Delphi 和 C++Builder 项目

HotPDF Delphi Component

Delphi 跨页提取带类型的 PDF 表格

HotPDF 如何在 Delphi 中通过 ExtractLoadedTypedTables 重建跨页 PDF 表格:列容差合并、保守的跨页延续和带类型的值

HotPDF Delphi Component

在 Delphi 中于绘制时检测缺失的 PDF 字形

HotPDF 组件可在绘制页面的同时记录每个会渲染成豆腐块的字形缺口并按唯一码点触发事件,再借助按文字系统划分的有序字体回退链自动补齐覆盖,把这类缺陷从客户投诉环节提前到构建期来做检查

HotPDF Delphi Component

在 Delphi 中使用 HotPDF 验证 PDF 数字签名

在 Delphi 中使用 HotPDF 验证 PDF 数字签名:读取签名者详细信息、重新哈希 ByteRange 字节、检查 CMS/RSA 签名,并了解 svValid 保证的内容 HotPDF 通过三个 方法在已加载 the 的 PDF 文档中验证数字签名: 、 和 ,这些方法是在 v2.259.0 中引入的

HotPDF Delphi Component

Delphi 使用 HotPDF 将 WebP 转为 PDF

HotPDF 用纯 Object Pascal 解码 WebP 无损 VP8L,让 AddImageFromFile 无需 DLL 就能接受 .webp,并避开 RFC 9649 中导致解码失败的位级陷阱

HotPDF Delphi Component

在 Delphi 中将 PDF 注释导入和导出为 XFDF

在 Delphi 中使用 HotPDF 导出和导入 PDF 注释为 XFDF:支持线条、多边形、墨水、内部颜色以及富文本评论的 ISO 19444-1 往返 HotPDF 通过作用于当前加载文档的两个函数 和 ,将 PDF 注释导出和导入为 XFDF。XFDF 是标准化为 ISO 19444-1 的 XML

HotPDF Delphi Component

Delphi 中使用 HotPDF 的 PDF 注释:类型和矩形框

使用 HotPDF 在 Delphi 中添加 PDF 注释:文本备注、自由文本、正方形和印章。了解矩形框如何定位它们,以及它们与 AcroForm 字段有何不同。 注释不是页面内容。当您调用 或绘制矩形时,这些标记将成为页面内容流的一部分,并被固化到渲染器绘制的字节中。注释是一个独立的字典,通过其