2 返信 最新の回答 日時: Jul 9, 2007 10:00 AM ユーザー:(brazil)

    「文書を印刷する」アクションにスクリプトを追加〜プリンタを強制指定

      acrobat8で作成しています。
      ユーザがプリンタを選んでも強制的に特定のプリンタを利用させたい、という要件があります。

      「文書を印刷する」アクションに以下スクリプトを追加しました。
      メニューから、印刷を選び、印刷設定で、別のプリンタBを設定し、OKを押下しても、プリンタBから出力されてしまいます。
      いろいろと、プリンタオブジェクトのプロパティを設定して試してみてるのですが、相変わらずプリンタBから出力されてしまいます。どこらへんが、問題になっている可能性があるか、アドバイスだ けでもいただければ幸いです。

      var printerName="プリンタ名";
      var pp = this.getPrintParams();
      /*------------------------------
      if(app.printerNames.indexOf(printerName)==-1){
      app.alert("check printer name");
      }
      -------------------------------*/
      pp.printerName = printerName;
      this.print(pp);
        • 1. Re: 「文書を印刷する」アクションにスクリプトを追加〜プリンタを強制指定
          Level 1
          自己レス

          本処理を「文書を印刷する」イベントではなく、PDF上のボタンのイベントに割り振ると問題ないようです。
          ということは、「文書を印刷する」イベントでは出来ないということなのでしょうね・・・。
          • 2. Re: 「文書を印刷する」アクションにスクリプトを追加〜プリンタを強制指定
            Level 1
            OS不明

            > 別のプリンタBを設定し、OKを押下しても、プリンタBから出力されてしまいます。
            前提が明確ではないのでは?
            「プリンタB」があるなら「プリンタA」でもあるのかなと思うが、そういう環境が書かれていない。
            普通なら「ユーザはプリンターAとプリンタBをそれぞれ同一PC上にインストールしており・・・」みたいな感じになるのでは?

            しかも引用プログラムのなかで「プリンタB」(プリンタA?)というのが出てこないので、さらに戸惑う。

            また、プログラム中でコメントアウトしてあるけどそれがプログラムだったりする。製作過程で条件文とか変数をわざとコメントアウトするというのはあるかもしれないが、質問投稿で注記もなしにす るものでもあるまい。

            「文書のアクション」についてはヘルプではごく簡素に触れているだけ。例えば以下のような個所だろうか。

            > 「文書のアクションを設定」コマンドを使用すると、文書全体に適用される文書レベルの JavaScript アクションを作成できます。 例えば、「文書を保存した」を選択すると、文書の保存後に JavaScript を実行できます。

            文書レベルの「文書を印刷する」イベントとな何であろうか?
            古めになるが「Acrobat JavaScript Object Specification Ver5.0.5」の記述がある。
            http://www.adobe.com/jp/support/products/pdfs/acrojs_j.pdf
            「文書を閉じる(ドキュメントを閉じる場合)、文書を保存する(ドキュメントを保存する直前)、文書を保存した(ドキュメントを保存した直後)、文書を印刷する
            (ドキュメントを印刷する直前)、文書を印刷した(ドキュメントを印刷した直後)」

            つまり、印刷を行う前のアクションを設定するわけである。例えば「app.alert ("印刷しますか?"); とすれば、「印刷しますか?」というメッセージ出て[OK]をクリックすると印刷が行われるという意味になる。

            質問者のプログラムだと、印刷行為を最大2回やることになる。つまりメニューからの[印刷」と、それによるアクション設定による印刷と。後者の印刷を条件分岐でストップしてもメニューからの印 刷行為はそのままなので、結局は印刷されることになるのでは?

            「文書を印刷する」アクションは、例えば印刷時間を入れたりメッセージ表示に使えるものではなかろうか?

            メニュー[文書/印刷]の動作を止められるようなスクリプトでないと所望のことはできないのでは? (実際にどうやるかは知らない)

            仮に「プリンタB」への印刷が止められたしても、ユーザが「プリンタA」を「プリンタB」として名前を書き換えれば意味がないのでは?

            質問者の意図している環境は閉じた環境であろう。プリントサーバーでの制限とか、プリンター本体での出力制限から検討してもいいのでは?