Delphi HotPDF Hello World:您的第一个 PDF 程序
使用 HotPDF 在 Delphi 中编写你的第一个 PDF:一个极简控制台 Hello World 示例,设置 Unicode 字体,用 TextOut 绘制文本并保存压缩文件
losLab 软件开发博客
Software Development Blog
使用 HotPDF 在 Delphi 中编写你的第一个 PDF:一个极简控制台 Hello World 示例,设置 Unicode 字体,用 TextOut 绘制文本并保存压缩文件
解释为什么复用已结束的 THotPDF 会触发 load-document 错误,Create、BeginDoc、EndDoc、Free 的生命周期如何运作,以及何时应当新建实例 报错内容是 ,而且几乎总是在第二次尝试时才会出现。第一份文档可以正常写出。随后同一个 实例又被要求开始第二份文档,这时
使用 HotPDF 在 Delphi 中创建 AcroForm 文本字段、复选框、单选组,以及提交或 JavaScript 动作,并避免表单接收时出现导出值不匹配问题,适用于 Delphi 和 C++Builder 项目
在 Delphi 中使用 HotPDF 将 Acrobat AF 格式、验证与计算脚本附加到已加载的 AcroForm,让 PDF 表单字段自动求和总额并格式化日期,适用于 Delphi 和 C++Builder 项目
在 Delphi 中使用 HotPDF 向现有 PDF 添加 Text、CheckBox、ComboBox、ListBox、PushButton 和 Signature 字段,并说明为何 /NeedAppearances 必不可少
在 Delphi 中用 HotPDF 配置 AES-256 PDF 加密:用户口令与属主口令、权限标志、R5 与 R6 修订之别,以及那个会无声失败的属性赋值顺序
使用 HotPDF 后台渲染让 Delphi PDF 查看器保持响应:在 UI 线程外排队渲染页面、取消待处理页面并对渲染结果进行位图缓存,适用于 Delphi 和 C++Builder 项目
用 Delphi 中的 HotPDF 在 PDF 里绘制线性条形码,了解它支持的符号体系,以及模块宽度和静区如何决定扫描器能否成功读出条码,适用于 Delphi 和 C++Builder 项目
在 Delphi 中使用 HotPDF 为现有 PDF 添加书签和命名目标:AddLoadedOutline 嵌套、XYZ 目标以及 /Count 语义陷阱 HotPDF 通过 在 Delphi 中为现有 PDF 添加书签,该函数在已加载的文档上创建任何嵌套级别的提纲条目,并且它通过 和 读写命名目标(Named
HotPDF 在 Delphi 中重建内置模板匹配 OCR:DIB 行顺序、Otsu 二值化、16×24 字形模板,以及通过高度聚类判断大小写
在 Delphi 中使用 HotPDF 在 PDF 里绘制矢量形状:用 MoveTo 和 LineTo 构建路径,控制描边与填充、RGB 颜色和线宽,并采用左下角坐标系,适用于 Delphi 和 C++Builder 项目
使用 HotPDF 在 Delphi 和 C++Builder 中从 Windows 证书存储区签署 PDF,了解如何修复 CNG 与 CAPI 字节序差异及 CertOpenStore 未解析链接错误
HotPDF 没有图表对象,因此您需要使用 Delphi 中的 Rectangle、LineTo 和 Circle 自己绘制条形图、折线图和饼图。这里介绍了坐标计算和布局。 HotPDF 没有图表对象。没有 ,没有 ,也没有任何可以接收数字数组并返回渲染图形的东西。相反,它为您提供了一个页面画布,其中包含每个 PDF
使用 HotPDF 在崩溃隔离的工作进程中解码不受信任的 DCTDecode、JPXDecode 和 JBIG2Decode 图像,通过 CodecIsolationMode、超时和内存上限进行控制
了解 HotPDF 在 Delphi PDF 中会做哪些文本成形、不会做哪些文本成形:双向重排、阿拉伯语连写、从希伯来语到泰语和天城文的覆盖范围,以及如何验证输出 把阿拉伯语短语 传给 ,然后打开结果文件。字母方向是错的,每个字母都停留在孤立字形,前后之间还留着明显空隙,看起来就像有人把英文倒着打出来,再在每个字符之间
超越 Hello World,在 Delphi 中使用 HotPDF TextOut:设置字体大小和样式,按角度旋转,精确放置坐标,并调整字符和单词间距。 HotPDF 文档中的每一个可见字符串都是通过一次调用生成的: 。Hello World 示例使用它最简单的形式,字体只设置了一次,四个参数保留为合理的默认值
使用 HotPDF 在 Delphi 中排版中日韩垂直文本:通过 IsVertical 开关控制 SetFont,让字形向下堆叠,修复 U+30FC 显示问题并从右到左排列列,适用于 Delphi 和 C++Builder 项目
HotPDF 的 VisitLoadedPageContentOperators 把页面内容流里的每个操作符交到你手上,逐个保留、删除、替换或中止;全部保留时重写结果与原流逐字节一致,改别人的文档也放心
HotPDF Delphi PDF 组件如何实现 ISO 32000 加密过滤器:StmF、StrF 和 EFF 策略、逐流 Crypt 覆盖,以及对象流密钥处理
HotPDF 如何将 Delphi PDF 查看器拆分为无界面的 THPDFViewerModel 和基于 TScrollBox 的视图,让缩放、搜索与导航逻辑可进行单元测试 HotPDF 将 Delphi PDF 查看器拆分为两部分: 是一个负责缩放、旋转、搜索、高亮和导航状态的普通类,不依赖窗口句柄;
SaveLoadedDocumentDiagnostic 把 PDF 写成没有对象流和交叉引用流的可读形式,手工改完再交给 RepairDiagnosticDocument,靠复制字节重建偏移量、流长度、xref 与文件尾,而不是整份重新序列化
在 Delphi 中用 HotPDF 签署 PDF:PFX 一次调用完成签名、为外部签名方预留 ByteRange、PAdES 基线字段,以及文档时间戳
在 Delphi 中处理超大 PDF 而无需整体载入内存:HotPDF Direct File API 支持文件句柄操作、加密复制、页数统计和增量更新,适用于 Delphi 和 C++Builder 项目
用 HotPDF 的 AnalyzeLoadedSignatureRevisions 在 Delphi 中对签名后的每一个增量 PDF 修订分类,并依据 DocMDP 与 FieldMDP 规则评级
在 Delphi 中用 HotPDF TXFAWidgetRuntime 填写动态 XFA 表单:每次字段编辑都是快照、验证、计算、重排的原子事务,失败整体回滚,预算先于任何分配执行
在Delphi中把CMS DER编码的ECDSA签名转换为IEEE P1363格式以供BCryptVerifySignature使用:严格的r、s解码、曲线提供程序名称与CMS签名者匹配 CMS容器内的一个ECDSA 是一个DER编码的 。而Windows CNG函数 两种格式都不接受:它要的是IEEE
用 HotPDF 在 Delphi 中修改已加载 PDF 的 Title、Author、XMP、PageMode 和书签,然后原地保存,无需重建 xref 或整张对象图
HotPDF 的 EMF 和 WMF 解释器将 GDI 渐变填充映射为 PDF 轴向渐变,把阴影画刷映射为平铺图案,让 Delphi 中的矢量输出保持真实还原,适用于 Delphi 和 C++Builder 项目
HotPDF 使用原生 XPath 1.0 引擎在 Delphi 中验证 EN 16931 Schematron 业务规则,跳过 XPath 2.0 检查,并在 Delphi 7 上提供存根实现 HotPDF 通过 验证 EN 16931 电子发票业务规则,这是一个由库自行实现的 Schematron 断言引擎,基于
在文件写入后才运行的字体子集化会生成全量字体且不报错,了解 HotPDF 中隐藏的 EndDoc 顺序错误是如何产生的,以及应如何捕获它,适用于 Delphi 和 C++Builder 项目
在 Delphi 中使用 HotPDF 的 ExtractLoadedImage 函数,将已加载之 PDF 中的图片解码:支援将 Flate、LZW、JPEG、JPEG 2000、Indexed、CMYK、CCITT 与 JBIG2 滤镜转换为 TBitmap。 你的磁碟上有一份
在 Delphi 中使用 HotPDF 从已加载的 PDF 中提取 Unicode 文本:ExtractLoadedPageText、保留布局的提取方式、ToUnicode CMap 以及字体解码回退链
当子集闭包忽略 GSUB 输出时,成形后的阿拉伯文和印地文字形会渲染成 .notdef,了解 HotPDF 如何把成形用的字形 ID 并入 Delphi 字体子集,适用于 Delphi 和 C++Builder 项目
HotPDF 在 Free Pascal 与 Lazarus 下编译时会有什么变化:Pascal 版 deflate 与 AES 后端、退化为存根的原生图像编解码器,以及四个可移植性陷阱
HotPDF 在 Free Pascal 3.2.2 与 Lazarus 4.6 的 Win64 上构建:Delphi 模式门槛、原生编解码目标文件为何无法链接,以及匿名方法缺位下的串行渲染回退
Free Pascal 在 Win32 上给 cdecl 导入自动加下划线前缀,而 public name 导出按字面原样保留,HotPDF 用两个前缀常量同时满足两侧约定,且不破坏 Delphi 构建
PDF Function Type 0 是一个多维插值表,了解 HotPDF 如何在 Delphi 中封装它,用来实现 3D 颜色 LUT 和专色色调变换,适用于 Delphi 和 C++Builder 项目
了解 HotPDF 如何在 Delphi 中计算 PDF Type 2 指数函数、Type 3 拼接函数和 Type 4 PostScript 计算器函数,以及 roll 与舍入陷阱
HotPDF 渲染 HTML 表格时用真实的占用网格处理 rowspan 与 colspan,行高靠实测而不是数字符数,分页断开时在每一续页重复表头,并对两种会画错的情况明确拒绝重复
HotPDF 在 Delphi 中将 HTML5 转换为 PDF,支持真正的 CSS 层叠、表格和分页控制,拒绝网络请求并对解析与布局预算计量
Word 和 Excel 导出的混合引用 PDF 加载良好,但重新保存时会失败,了解 HotPDF 如何在 Delphi 中读取 /XRefStm 表并安全处理这类文件,适用于 Delphi 和 C++Builder 项目
HotPDF 在 Delphi 中的超链接处理:PrintHyperlink 绘制 URI 链接、AddURILink 添加热点、AddGoToLink 实现页内跳转,以及多行链接的变通方案
HotPDF 通过 ImageDownsampleKernel 提供可分离的双三次与 Lanczos3 降采样核,另以 RenderOutputDither 提供 Floyd-Steinberg 渲染抖动,每一样都在拿时间换质量
HotPDF 在 Delphi 中如何把基于 Gray、CMYK、Lab 和 ICCBased 的 Indexed PDF 调色板规范化为公开 RGB 调色板,解析时处理分量打包与范围缩放,并用深度上限防住间接引用循环
为什么十进制逗号区域会在 Delphi 中破坏 PDF 内容流,每个实数都必须用句点写;HotPDF 在 Type 1 字体、SVG 和 FPC 构建中钉死区域无关的数字格式化,工作站在任何 locale 下都输出同一字节序列
JBIG2 能让扫描的黑白页面在 PDF 中达到最小体积,了解 HotPDF 如何在 Delphi 中写入 JBIG2Decode 流并接入不同的编码器后端,适用于 Delphi 和 C++Builder 项目
HotPDF 在 Delphi PDF 中把跨页面的 JBIG2 符号字典合并为一个 /JBIG2Globals 流,从而减少多页扫描文件中的重复字形存储,适用于 Delphi 和 C++Builder 项目
JPEG 2000 为 PDF 图像带来高位深与小波压缩,了解 HotPDF 如何在 Delphi 中解码 JPXDecode 流,并嵌入 JP2 和 J2K 格式图片,适用于 Delphi 和 C++Builder 项目
用 THPDFDOMDocument 声明小节、堆栈、文本、列表和表格,再交给 THPDFDOMRenderer 测量并分页,排版代码从此不用自己算 y 坐标,跨页时 PDF/UA 结构树也会一并生成
HotPDF 如何在 Delphi 中写出用于 Fast Web View 的线性化 PDF:页面分区、提示表、布局收敛与 4 GiB 偏移量上限 HotPDF 通过 上的 属性写出线性化 PDF 文件,也就是 Acrobat 标注为 Fast Web View 的那种布局。在 之前设置这个属性,会让 HotPDF
用一次 HotPDF 调用把刚签好的 PDF 从 B-B 级升级到 B-LT 级,沿 AIA caIssuers 自动补全 CMS 缺失的证书链,并对签名字段声明的种子值约束做强制校验
HotPDF如何在Delphi中解码PDF DecodeParms:PNG predictor行标签10到15、TIFF Predictor 2样本差分,以及LZW EarlyChange码字宽度 一个标记为 的流,并不意味着每一行都使用PNG filter 2。HotPDF是面向Delphi和C++Builder的原
HotPDF 在 Delphi 与 C++Builder 中校验 ML-DSA、Ed25519 与 Ed448 的 CMS 签名,并通过回调、远程与 PKCS#11 签名提供者把私钥留在进程之外,EnsureMLDSAExtensions 显式声明后量子扩展以让校验结论可被其他实现复现
在 Delphi 中用 HotPDF 写 ISO 32000-2 NChannel 色彩空间:DeviceN 五元素形式、每专色的 Separation 调值变换,以及 PDF/X-6n 着色剂表的一致性检查
为什么按过滤器逐个设限拦不住嵌套式 PDF 解压炸弹?了解 HotPDF 的 DecodeBudgetBytes 上限如何在 Delphi 中约束过滤器链的每个阶段,适用于 Delphi 和 C++Builder 项目
HotPDF 如何以纯 Pascal 实现 P-256、P-384、P-521、X25519 与 X448,以及 Montgomery 约减中一处借位比较如何让 bug 隐藏了一个月
HotPDF 在 Delphi 中添加高亮审阅层,将标记矩形保存在内存中而不重写 PDF,并在缩放和旋转过程中保持对齐 审阅期间在段落周围绘制的矩形不必成为 PDF 内部的标记。HotPDF 的 提供了 方法,该方法将每个高亮保留为内存中的记录,而不是对已加载文档的修改,因此审阅者可以标记数十个页面,同时磁盘上的文件仍
使用 HotPDF 依赖图、支配节点保留字节数、解析器 arena 统计与字符串驻留计数器,把已加载 PDF 的内存精确归因到真正持有它的对象上
了解 HotPDF 如何在 Delphi 中使用对象流和 xref 流压缩 PDF 结构,并通过增量更新保留已签名版本、控制兼容性与文件体积,安全修改现有文档。本文还说明何时应压缩追加历史,以及如何在发布前验证输出文件,适合归档与签名流程,也适合大规模文档处理和长期存档验证场景 PDF 1.5
样式集和替换存在于字体的 GSUB 表中。了解 HotPDF 如何在纯 Delphi 中不依赖 HarfBuzz 解析 salt 和 ss01 到 ss20 替换。 设计师为标题选择了一款带有单层 的字体,或者为表格选择带有斜杠的零,或者为封面选择一组花体大写字母。这些字形已经存在于字体中。它们只是不是默认设置
HotPDF 的 RenderLoadedPageToDevice 通过同一设备抽象把已加载 PDF 页面渲染到位图、打印机 HDC 或矢量图元文件,开启 RenderOverprintPreview 后同一次调用即可模拟 CMYK 四色油墨叠印,用于印刷前的屏幕打样核对,避免下机才发现色差
BuildLoadedPageSVG 一次调用就把已加载的 PDF 页面导出成独立 SVG 字符串,文本落在真正的 text 元素上,页面旋转、图像翻转、虚线样式和细线描边都按图形状态还原
RenderLoadedPagesParallelOrdered 跨工作线程渲染 PDF 页面,并按输入顺序把每一页回调交付出去;内存预算决定线程数、压住位图峰值占用,取消时也不会死锁
一个不消费任何字节就返回的解析分支,能让一份 40 字节的畸形 PDF 陷入死循环。HotPDF 在 Delphi 里找出四处这样的零前进停滞并验证修复,这类缺陷不触发解码预算、不占内存,却把单核 CPU 跑满
HotPDF 如何在 Delphi 中按修订逐个验证 ISO/TS 32004 PDF MAC 链:每修订前缀流、CMS 签名写出顺序,以及先解密十六字节 /Perms 再采信的权限位
HotPDF 从 Delphi 与 C++Builder 写出原生 PDF 2.0 文档,覆盖三个 PDF/A-4 归档子集与带命名空间结构元素的 PDF/UA-2 无障碍输出,AddPDFAssociatedFile 处理关联文件,EndDoc 在生成结束时拦截破损结构树避免现场校验失败
用 HotPDF 从 Delphi 生成符合 PDF/A、PDF/X 和 PDF/UA 的文件:输出意图、标记结构、ICC 配置文件,以及 veraPDF 验证步骤
HotPDF 的持久化磁盘字体子集缓存跨文档、跨进程复用 TrueType 与 OpenType 字体子集,采用内容寻址键、LRU 淘汰策略与九个可读的统计计数器,缓存失败时自动回退到普通内存子集化而绝不阻断文档产出,让批量报表任务大幅削减重复子集化所消耗的 CPU 时间和内存峰值
证书解析器属于攻击面。本文介绍 HotPDF 在 PKCS#12 和 ASN.1 处理中修复的整数回绕与 PBKDF2 拒绝服务缺陷,并说明如何限制长度、迭代次数和解析开销,保护 Delphi PDF 签名流水线免受恶意凭据影响,适合服务器、批处理和上传证书场景的工程团队参考与审计
在 Delphi 中搭建自动化 PDF 印前检查关卡:用 HotPDF 生成符合标准的文件,再用 veraPDF 和 Acrobat 在发布前逐项验证
在 Delphi 中使用 HotPDF 打印已加载的 PDF:通过 PrintLoadedDocument 驱动 TPrinter,渲染页面到任意 HDC,并将矢量 EMF 页面复制到剪贴板
使用 HotPDF 的 THPDFCoalescingRandomAccessSource 通过 HTTP 或慢速共享加载 PDF:区块缓存、自适应预读、可取消读取与区间统计信息
在 Delphi 中使用 HotPDF 内容流操作符,在已加载的 PDF 上遮蔽指定区域并构建 N-up 版面,同时了解必须遵守的遮蔽安全边界,适用于 Delphi 和 C++Builder 项目
HotPDF 在四个 Delphi 2D 条码编码器里修好了反转的 Reed-Solomon 生成多项式,也解释了为什么 QR、Data Matrix 和 PDF417 的既有测试全都漏掉了它
在 Delphi 中使用 HotPDF 渲染 PDF 轴向和径向阴影:支持 sh 操作符,并在其函数引擎中把渐变离散化为色带逐段求值,适用于 Delphi 和 C++Builder 项目
HotPDF 如何在 Delphi 中免安装渲染 PDF 内嵌字体:TrueType glyf 轮廓、CFF Type 2 charstring、Type 3 字形与编码映射
在 Delphi 中使用 HotPDF 将已加载的 PDF 页面渲染为 TBitmap:RenderLoadedPageToBitmap API、嵌入式 TrueType/CFF 字形轮廓、Type3 字体以及页面缓存
在 Delphi 中使用 HotPDF 渲染 PDF Separation 和 DeviceN 专色:色调变换函数、Type 4 计算器评估、Lab 白点适应 HotPDF 通过 解析颜色空间,通过 评估色调变换函数,并将结果通过替代空间转换为屏幕所需的 RGB,从而在加载的 PDF 页面上渲染 Separation
HotPDF 渲染器中四个隐蔽的 Delphi 缺陷:带前导斜杠的名称操作数、颠倒的 cm 矩阵拼接,以及一个把十二个操作符清零的 token 索引错误,适用于 Delphi 和 C++Builder 项目
HotPDF 生成 Delphi PDF 报表的实用指南:TextOut 坐标、Unicode 字体嵌入、JPEG 与 PNG 图像摆放,以及可缩放的绘图图元
HotPDF 在已加载的 PDF 页面里解码旋转过的 QR 符号:在解码器内部对采样模块矩阵穷举全部八个 D4 方向,而不是旋转扫描掩模,把旋转重试留给 Code 39 等真正需要的线性条码
在 Delphi 中使用 HotPDF 搜索并替换现有 PDF 文件中的文本:字形级搜索、逆向字体编码,以及子集字体在替换时的真实限制,适用于 Delphi 和 C++Builder 项目
THPDFDocComparison 从文档目录出发遍历对象图,再逐页渲染做像素比对,产出一份 JSON 报告,列出每一处差异、消耗掉的预算,以及比对是否真的跑到了终点
HotPDF 组件如何遍历文档结构树并按 MCID 重新组装字形,以作者创作顺序读取标记 PDF 的文本;对未标记或仅装饰性标记的页面,自动回退到几何提取器,不再靠几何猜测拼错句子
HotPDF 在 Delphi 中把 SVG 图形作为可复用的 Form XObject 导入 PDF,保留矢量渐变、裁剪路径和链接,同时拒绝脚本与外部引用
HotPDF v2.743.0 在 Delphi 中为没有 /AP 流的 PDF 注释生成外观并完成展平,让 NeedAppearances 表单值和标记注释不再消失
在 Delphi 中把数据集的每一行绘制为真正的 PDF 表格:计算合适的列宽、对齐单元格文本、绘制网格线,并在表格跨页时自动重复表头,保持报表版式统一,适用于 Delphi 和 C++Builder 项目
对齐的 PDF 文本需要考虑脚本感知的间距和快速宽度测量,了解 HotPDF 如何在 Delphi 中实现拉丁与 CJK 文本两端对齐并减少 GDI 往返,适用于 Delphi 和 C++Builder 项目
了解 HotPDF 如何在 Delphi 中渲染 PDF 平铺图案:图案状态跨 q 和 Q 保持、被裁剪的填充与描边路径、可见图块范围以及硬性图块预算,适用于 Delphi 和 C++Builder 项目
HotPDF 如何在 Delphi 中通过 ExtractLoadedTypedTables 重建跨页 PDF 表格:列容差合并、保守的跨页延续和带类型的值
HotPDF 组件可在绘制页面的同时记录每个会渲染成豆腐块的字形缺口并按唯一码点触发事件,再借助按文字系统划分的有序字体回退链自动补齐覆盖,把这类缺陷从客户投诉环节提前到构建期来做检查
HotPDF 在 Delphi 中把 OpenType 可变字体转换为可嵌入 PDF 的静态实例,将轴值烘焙进轮廓、度量和重建后的 sfnt 表
在 Delphi 中使用 HotPDF 验证 PDF 数字签名:读取签名者详细信息、重新哈希 ByteRange 字节、检查 CMS/RSA 签名,并了解 svValid 保证的内容 HotPDF 通过三个 方法在已加载 the 的 PDF 文档中验证数字签名: 、 和 ,这些方法是在 v2.259.0 中引入的
HotPDF 用纯 Object Pascal 解码 WebP 无损 VP8L,让 AddImageFromFile 无需 DLL 就能接受 .webp,并避开 RFC 9649 中导致解码失败的位级陷阱
用 HotPDF 的 FlattenLoadedXFA 在 Delphi 中把动态 XFA 表单转换为原生 AcroForm,审阅扁平化警告,并应对归档与 PDF/A 的限制
XFA 表单把富文本存储为 HTML 子集,了解 HotPDF 如何在 Delphi 中展平 exData 序列,并将其中的 a-href 链接转换为原生 PDF Link 注释,适用于 Delphi 和 C++Builder 项目
在 Delphi 中使用 HotPDF 导出和导入 PDF 注释为 XFDF:支持线条、多边形、墨水、内部颜色以及富文本评论的 ISO 19444-1 往返 HotPDF 通过作用于当前加载文档的两个函数 和 ,将 PDF 注释导出和导入为 XFDF。XFDF 是标准化为 ISO 19444-1 的 XML
HotPDF 如何在 Delphi 中把 XPS 与 OpenXPS 转成 PDF:0.75 固定页矩阵、VisualBrush 编译为共享 Form XObject、ImageBrush 平铺图案与椭圆径向渐变的处理
在 Delphi 中使用 HotPDF 生成、检测和验证 ZUGFeRD 与 Factur-X 电子发票:PDF/A-3 嵌入、EN 16931 Schematron 规则,以及引擎的真实限制
使用 HotPDF 在 Delphi 中添加 PDF 注释:文本备注、自由文本、正方形和印章。了解矩形框如何定位它们,以及它们与 AcroForm 字段有何不同。 注释不是页面内容。当您调用 或绘制矩形时,这些标记将成为页面内容流的一部分,并被固化到渲染器绘制的字节中。注释是一个独立的字典,通过其
HotPDF 的 RtLTextOut 方法在 Delphi 中的参考:函数签名与参数、charset 178/177 设置、RegisterUnicodeTTF 注册字体,以及常见 RTL 错误修复