3 返信 最新の回答 日時: Aug 1, 2006 9:15 AM ユーザー:(masato-w@msi-net.co.jp)

    デフォルトのプロパティ値の変更

      スクリプトから、各フィールドのデフォルトのプロパティ値の変更は可能でしょうか?

      例えば、
      1.一度クリックイベントなどで、特定のフィールドを非表示にする。
      2.このpdfを保存する。
      3.再度開いたときに、1の状態を維持する。

      (状態をパラメータとして別のフィールドに保持して、docreadyイベントから復元も可能ですが、署名付き文書では改ざんとされてしまうためNG。)

      具体的なコーディングについて、ご存知の方は教えてください。
        • 1. Re: デフォルトのプロパティ値の変更
          こんにちは。少し確認させてください。

          ア.PDFファイルXを、条件1と2をパソコンAで行って、パソコンAで開示すれば、1の状態は保持される。

          イ.ところが、PDFファイルXに対して条件1と2をパソコンAで行って、PDFファイルXを一度も開示したことの無いパソコンBで開示すれば、1の状態は保持されない。特に問題となるのは非 表示設定(display.hidden)を行ったオブジェクトが全て表示されてしまうこと。パソコンAで行った条件1のうち、チェックボックスやラジオボタンの設定、テキストフィールドの内 容は全て保持されるが、非表示設定(display.hidden)を行ったオブジェクトが全て表示されてしまうので、表示内容のつじつまが合わない。

          というご質問の内容でよろしいでしょうか。
          • 2. Re: デフォルトのプロパティ値の変更
            Level 1
            返答ありがとうございます。

            説明が足りませんでした。すいません。

            保存を行った時点で、どこのPCで開いても、同じ状態に保たれなければなりません。

            1.ボタンのクリック時のイベントに
            //サンプル
            xfa.resolveNode("form1.#subform[0].TextField1").presence = "hidden";

            のようなスクリプトを記述し、作成完了。
            --> filea.pdf とする。

            2.filea.pdfをAcrobat7.0 Proで開く。
            このときは、form1.#subform[0].TextField1は表示。

            3.ボタンをクリック
            これで、非表示になる。

            4.fileb.pdfとして保存して、Acrobat7.0 Proを一度終了する。

            5.fileb.pdfを開く。
            form1.#subform[0].TextField1が表示されてしまう。

            ということが問題点です。

            さらに、TextField2を用意して、1のスクリプトに以下を加える。
            クリック時
            xfa.resolveNode("form1.#subform[0].TextField2").rawValue = "1";
            と、
            docreadyイベントに、
            if(xfa.resolveNode("form1.#subform[0].TextField2").rawValue == "1" ){
            xfa.resolveNode("form1.#subform[0].TextField1").presence = "hidden";
            }

            とすれば、一応実装できるが、署名フィールドを作成した場合に改ざんとなりNGなので、他に方法がないだろうか?

            ということです。
            • 3. Re: デフォルトのプロパティ値の変更
              Level 1
              自己解決しました。
              docReady --> initialize にスクリプトを書き換えたらうまくいくようです。

              また、この場合LayoutModelが使えなくなるようでした。