多行字段中的行间距

时间:2014-08-19 10:16:45

标签: javascript acrobat acrobat-sdk

我正在尝试在多行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还将双空格视为单个范围,因此该脚本在两个空格后添加换行符。

有没有办法在多行文本字段中永久设置换行符而不会弄乱所有内容?

2 个答案:

答案 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;
}

我没有做太多测试,但看起来此解决方案正常运行。