You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript调整可填写PDF表单字段的字符间距

调整PDF表单字段字符间距的正确JS实现

你原来的代码无效是因为textField.textFont.textState是只读属性,无法直接修改字符间距。要实现这个需求,需要通过修改字段的**默认外观(Default Appearance)**来设置,这是Acrobat JS控制表单文本样式的标准方式。

方法一:直接修改字段的默认外观字符串

PDF表单字段的defaultAppearance属性是一个字符串,定义了文本的字体、大小、颜色以及字符间距等样式。其中字符间距由/Tc参数控制,单位是千分之一倍的字体大小(比如字体大小12pt时,/Tc 125对应1.5pt的字符间距)。

代码示例:

var field = this.getField("field1");
var currentDA = field.defaultAppearance;

// 处理已有/Tc参数的情况:替换为目标值
if (currentDA.includes("/Tc")) {
  currentDA = currentDA.replace(/\/Tc\s+[\d.-]+/, "/Tc 125"); // 125对应1.5pt(12pt字体下)
} else {
  // 无/Tc参数时,在字体设置后添加(匹配/Tf 字体名 字号的格式)
  currentDA = currentDA.replace(/(\/Tf\s+[\w\/]+\s+\d+)/, "$1 /Tc 125");
}

// 应用修改并刷新字段
field.defaultAppearance = currentDA;
// 强制刷新显示
field.display = display.noPrint;
field.display = display.visible;

如果需要固定1.5pt的字符间距(不随字体大小变化),可以动态计算/Tc的值:

var field = this.getField("field1");
var fontSize = field.fontSize;
var charSpacingPt = 1.5;
var tcValue = Math.round(charSpacingPt * 1000 / fontSize);

var currentDA = field.defaultAppearance;
if (currentDA.includes("/Tc")) {
  currentDA = currentDA.replace(/\/Tc\s+[\d.-]+/, `/Tc ${tcValue}`);
} else {
  currentDA = currentDA.replace(/(\/Tf\s+[\w\/]+\s+\d+)/, `$1 /Tc ${tcValue}`);
}

field.defaultAppearance = currentDA;
field.display = display.noPrint;
field.display = display.visible;

方法二:通过字段格式化事件动态应用

如果希望用户输入文本时自动应用字符间距,可以给字段添加Format事件:

var field = this.getField("field1");
field.setAction("Format", `
  var charSpacingPt = 1.5;
  var fontSize = event.target.fontSize;
  var tcValue = Math.round(charSpacingPt * 1000 / fontSize);
  var newDA = event.target.defaultAppearance.replace(/\/Tc\s+[\d.-]+/g, "") + " /Tc " + tcValue + " ";
  event.target.defaultAppearance = newDA;
`);

注意事项

  • 仅支持Adobe Acrobat/Reader环境,其他PDF编辑器可能不兼容Acrobat JS
  • 修改后需要刷新字段显示(通过切换display属性实现)
  • 该设置会应用到字段内的所有文本,包括已有内容和新输入内容

内容的提问来源于stack exchange,提问作者TipVisor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 04:05:37