THotPDF.SetLoadedFreeTextText Method
用嵌入的 Unicode 字体、可选富文本和原子的 graph transaction,替换已加载 FreeText 注释的正常外观
声明
procedure SetLoadedFreeTextText(PageIndex, AnnotationIndex: Integer;
const AText: UnicodeString; const Options: THPDFLoadedTextAppearanceOptions;
const RichContent: AnsiString = ''; const DefaultStyle: AnsiString = '');
选项
修改个别字段之前,先用 THPDFLoadedTextAppearanceOptions.Default 初始化记录
| 字段 | 行为 |
|---|---|
| FontName, FontStyle, FontSize | 主字体、样式和点数大小;默认为 Arial、regular 和 12 点 |
| TextColor, Alignment, Padding | 纯文本颜色、左/中/右对齐和以点为单位的内边距;默认为黑色、左对齐和 2 点 |
| Opacity, Rotation | 不透明度取值 [0,1],旋转为 90 度的整数倍 |
| OverflowPolicy | THPDFLoadedTextOverflowPolicy:ltopReject 拒绝溢出,ltopClip 裁剪溢出,ltopShrinkToFit 用更小的字体重试 |
| MinFontSize | 缩小的下限,默认 4 点 |
| MaxTextUnits | 输入与纯文本预算,默认 1,048,576 个 UTF-16 单元;富文本输入上限为该预算的四倍 |
行为
AText 提供纯 Unicode 文本;非空的 UTF-8 RichContent 则改走 HTML 导入器和可选的 CSS DefaultStyle,然后从生成的文本推导 /Contents
生成的外观会把嵌入字体和 ToUnicode 映射复制进已加载的文档,因此保存、扁平化和文本提取都能保留其 Unicode 文本
方法继承已配置的字体 fallback 链、ShapingFeatures、Arabic、Syriac、N'Ko、Adlam 和 Hanifi Rohingya 的 auto-shaping 开关,以及 GSUB script 与语言选择;每次 shrink-to-fit 重试都使用相同设置,不会改动调用方的配置
保留受支持的背景、实线/虚线边框、矩形内缩和两点/三点 callout 几何,并同步 /AP、/Contents、/RC、/DS、/CA、/Q 和旋转元数据
几何非法、纯文本字形未解析、cloudy 边框、资源超限和被拒绝的溢出都会抛出异常并回滚整个更新;已存在的外层 graph transaction 保持活动
富文本遵循受支持的 HTML/CSS 子集;外部资源被禁用,固定的 CSS 字号可能导致 shrink-to-fit 无法缩小个别 run
每个外观写入器最多接受 256 个不同的 shaping 字体选择和累计 64 MiB 的原始字体数据;任一限制超出都会拒绝更新并保留原注释
相关 API
- SetLoadedFreeTextRichText 使用同一条外观管线,溢出策略为裁剪
- SetLoadedFreeTextPlainText 保持原有的 ASCII 契约
- SetLoadedAnnotationContents 只编辑存储的 contents