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 もダブルスペースを 1 つのスパンとして扱うことが判明したため、このスクリプトは 2 つのスペースの後に改行を追加します。

すべてを台無しにすることなく、複数行のテキスト フィールドに行間を永続的に設定する方法はありますか?

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 が有効になっている複数行フィールドでのみ制御できます。

リッチテキストが有効になっているフィールドの問題は、defaultRichValue プロパティがないため、リセット防止ではないことです (これを導入するには、ISO 32000 手順に積極的に参加する必要があります)。

回避策は、spans 配列の状態を保存し、リセット後に再作成することです。独自のリセット関数を記述し、ユーザーがこのフォーム アクションをリセットするときにいくつかの予防策を追加する必要があります。

于 2014-08-19T16:05:22.183 に答える