0

我正在尝试调整多行 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;
}

使用此脚本,行间距工作得很好,但不再可能手动插入换行符。一旦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 还将双空格视为单个跨度,因此该脚本在两个空格后添加了换行符。

有没有办法在多行文本字段中永久设置行距而不会弄乱一切?

4

2 回答 2

1

我想我自己找到了解决方案。在仔细查看 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;
}

我没有做太多测试,但看起来这个解决方案可以正常工作。

于 2014-08-19T16:18:05.640 回答
0

行间距只能在启用了richText 的多行字段中控制。

启用richText 的字段的问题在于它们不能防重置,因为没有defaultRichValue 属性(引入它需要积极参与ISO 32000 程序)。

解决方法是保存 spans 数组的状态,并在重置后重新创建它。您必须编写自己的重置功能,并在用户使用重置此表单操作时添加一些预防措施。

于 2014-08-19T16:05:22.183 回答