我正在尝试在多行pdf表单字段中调整行间距。 这些是我已经尝试过的东西:
使用富文本字段并通过“表单域文本属性”工具栏调整行间距: 这很有效,但重置表单时更改会丢失。
使用JavaScript: 我在多行文本字段中添加了一个击键事件。
var spans = event.richValue;
if (spans !== undefined) {
for ( var i = 0; i < spans.length; i++ ) {
spans[i].linespacing = 14; // linespacing
}
event.richValue = spans;
}
使用此脚本,linespacing正常工作,但不再可能手动插入换行符。一旦event.richValue = spans
被执行,它们就会被删除。
我尝试的最后一件事是稍微修改过的脚本版本:
var spans = event.richValue;
if (spans !== undefined) {
for ( var i = 0; i < spans.length; i++ ) {
spans[i].linespacing = 14; // linespacing
if (i < spans.length - 1) spans[i].text += "\r";
}
event.richValue = spans;
}
我试图通过在每个跨度的末尾添加“\ r”来修复消失的换行符。事实证明,Acrobat还将双空格视为单个范围,因此该脚本在两个空格后添加换行符。
有没有办法在多行文本字段中永久设置换行符而不会弄乱所有内容?
答案 0 :(得分:1)
只能在启用了richText的多行字段中控制Linespacing。
启用了richText的字段的问题是它们没有重置证明,因为没有defaultRichValue属性(引入它需要主动参与ISO 32000过程)。
解决方法是保存spans数组的状态,并在重置后重新创建它。您必须编写自己的重置功能,并在用户使用重置此表单操作时添加一些预防措施。
答案 1 :(得分:0)
我想我自己找到了解决方案。在仔细研究SPAN属性后,我偶然发现了endParagraph
。
这是我的最终自定义按键脚本:
var spans = event.richValue;
if (spans !== undefined && event.willCommit) {
for ( var i = 0; i < spans.length; i++ ) {
spans[i].textSize = 9; // font size
spans[i].linespacing = 14; // linespacing
// restore line breaks
if (spans[i].endParagraph) spans[i].text += "\r";
// reset styles to default
spans[i].fontStyle = "normal";
spans[i].fontWeight = 400;
spans[i].strikethrough = false;
spans[i].underline = false;
spans[i].textColor = color.black;
spans[i].alignment = "left";
spans[i].fontFamily = ["Arial"];
}
event.richValue = spans;
}
我没有做太多测试,但看起来此解决方案正常运行。