• 締切済み

PDF-acrobat数値ありフィールドのカウント

PDFにインタラクティブフィールド(フォーム)を作成してあります。 そのうち、ラベルが 1_totalE ~31_totalの名前が付いたフィールド31個があります。 それぞれは、自動計算で結果が入力されてきます。 [例] 以下フィールドの名前を[]で囲んで示します。 [1_total] については、[1_am]と[1_pm]フィールドの値を足しています。   これは、それぞれのフィールドのプロパティ⇒計算⇒次のフィールドの和を返す。   でスクリプトを書かなくても良いので設定できています。 最終的に  [1_am]、[1_pm]⇒自動計算⇒[1_total]  [2_am]、[2_pm]⇒自動計算⇒[2_total] ・・・という形で、[1_total]から[20_total]までは、[1_am]などに入力があれば、その計が自動的に入ってきます。 その上で、[nissuu]フィールドに、[1_total]~[31_total]の値(計算結果)が1以上の場合、そのフィールド個数を自動計算して入れたい。  別途、[pm_total]の値などは、単に簡易入力で同様に入力されますから出来上がっています。  判らないのは、acrobatにユーザースクリプト枠に記述するjavascriptです。  他にもあるのですが、内容が異なるために別質問にさせていただきます。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

A No1です。 >8行目は >if(parseFloat(val) >= 1) total++; >ですよね。 はい。ご指摘の通りです。 大変失礼いたしました。 (手動インデントの際に消してしまったらしい…) >しかし、formに出力されない。 こちらでは、「Adobe Acrobat 9 Pro」で一応動作の確認をしています。 表示されない原因として、すぐに思いつくのは、 1) フィールド名が合致しない(又は存在しない)などで、エラーとなり   実行が中断されている。 2)そもそも、スクリプトに処理が移っていない。 あたりではないかと。 1)は、[1_total]~及び[nissuu]を確認して、スクリプト中のmaxNoを小さくして実行させてみれば確認できそうです。 2)は実行のタイミングをどのように設定していらっしゃるかによるので、こちらではわかりかねますが、スクリプトの最初に仮のフィールドに出力するとか、あるいはalert表示( app.alert("calculating…"); とか)をさせてみるなどで、スクリプトが実行されているかの確認ができるかと思います。 Acrobatに、デバッグ用のコンソールが附属しているようですので、使い方をご存知であれば原因の確認に役立つのではないかと思います。(私は使ったことがないので、使用方法を知りませんけれど・・・)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

Acrobatのスクリプトは使ったことがないので、まったくわかりませんが・・・ ドキュメントの拾い読みで実験してみたところ、以下で動作すると思います。 各フィールドの値がどのような範囲を取りうるのか不明なので、とりあえずparseFloatで判断するようにしてあります。 AcrobatのScriptのドキュメントを以下から入手できます。 http://www.adobe.com/jp/support/products/pdfs/acrojs_j.pdf 少々バージョンが古いですが、基本的な部分は同じと想像しますので、参考にできるでしょう。 (以下も、このドキュメントを参考に記述しています) (インデントは全角空白にしてあります) function test() {  var maxNo = 31;  var i, val, total = 0;  for(i=1; i<=maxNo; i++){   val = this.getField(i+"_total").value;   f(parseFloat(val) >= 1) total++;  }  this.getField("nissuu").value = total; }

ORUKA1951
質問者

補足

ご回答ありがとうございました。 8行目は if(parseFloat(val) >= 1) total++; ですよね。  しかし、formに出力されない。 少し調べてみます。

関連するQ&A

  • ファイルメーカーPro7で

    条件) Aのフィールドには別のいくつかのフィールドに入力された値を元に自動計算で入力される。(文字列) ------- 自動入力された値それぞれに0からの自動採番をかけたいのですがどのようなスクリプトを作ればいいのかわかりません。 おわかりになる方がいらっしゃればご教授ください。

  • FMPro7で繰り返しフィールドの繰り返し数を変数で設定できますか?

    スクリプトの「フィールド移動」や「計算結果の挿入」などではフィールド指定ダイアログに繰り返し数の入力があります。「フィールド移動」や「計算結果の挿入」をする直前に参照したい繰り返し数を計算で求め、グローバルフィールドに保存しているような場合はどのように参照したらいいのでしょう。 「計算結果の挿入」でフィールド指定はしないで、GetRepetition ( 繰り返しフィールド ; 保存されたグローバルフィールド ) = "○"を設定するなどしてみたのですが、うまく出来ません。 宜しくお願いします。

  • FileMaker 同一フィールドに同じ値が連続している個数をかえすス

    FileMaker 同一フィールドに同じ値が連続している個数をかえすスクリプト 当方はFileMaker Pro 5.5を使用しています。初心者です。 ---------------- 甲乙 A3 A3 A3 B2 B2 C4 C4 C4 C4 D1 A2 A2 C1 ---------------- フィールド甲を参照し、同じ値が連続している個数をフィールド乙に返すスク リプトを組みたいと考えています。 たとえば、一番上のレコードから「A」が3回続いているため、フィールド乙には 3をかえします。同様に全レコード繰り返します。 フィールド甲の値は一度連続が途切れたあとも、後のレコードで再度でてくることも あります。 よいスクリプトはありますでしょうか。

  • フォームの値が0だったら空白を表示するスクリプト

    PDFに埋め込むスクリプトですが、  入力テキストフォーム"1_AM_T"と"1_PM_T"があります。これらには0.1から4程度の任意の数字が入力されます。初期値はNULL,空欄です。  別のフォーム(1_total)で、上記いずれかまたは両方に数値が入力されると、その合計を表示させようと考えています。  同様に 2_AM_T,2_PM_T・・・・・・・・・・・・・・2_total 3_AM_T,3_PM_T・・・・・・・・・・・・・・3_total 4_AM_T,4_PM_T・・・・・・・・・・・・・・4_total と続きます。単に式だと、常に「0」が表示されてしまうので、ちょっと勝子が悪い・・ [ 1 ] [ 2 ] [ 3 ] [ 2 ] [   ] [ 2 ] [   ] [ 5 ] [ 5 ] [   ] [   ] [ 0 ] [   ] [   ] [ 0 ] [   ] [   ] [ 0 ]      ↓以下のように変更したい [ 1 ] [ 2 ] [ 3 ] [ 2 ] [   ] [ 2 ] [   ] [ 5 ] [ 5 ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ] [   ]

  • VBAからPDFのテキストフィールド

    Excelに入力されたデータをVBAでPDFのテキストフィールドへデータを自動で入力したいのですが、いろいろ探してみたものの、それらしきサンプル等もなく困窮しています。 例えばExcelに名前が100人登録されているとして、これを順番にPDFのテキストフィールドへ自動的に入力(更新)し、印刷する。(100人分が完了するまで) といった感じの内容です。 まったくわかりませんので、どなたかお教え下さい。 もしサンプルコードが存在するようでしたらURLをお教えいただけると助かります。 宜しく御願いします。

  • Accessで、他の二つのフィールドの値を結合し自動的に入力する

    Accessについて質問です テーブル  フィールド1(テキスト)  フィールド2(テキスト)  フィールド3(テキスト) フィールド3の値はフィールド1と2の値を結合させた値を自動で入力し フィールド1や2を更新すると、自動的にフィールド3の値も更新される というのはできますでしょうか?

  • Access フィールドに入力した値を、同じテーブルの別のフィールドにコピーしたい。

    Accessについて質問させていただきます。 フィールドに入力した値が、同じテーブルの別のフィールドに自動的に入力され、あとでその別フィールドを書き換えても最初に入力したフィールドに反映しないような仕組みを作りたいのですが、やり方が判りません。 初歩的な質問で申し訳ないのですが、ご存知の方がおられましたら、お教えください。

  • 入力した合計数値を振り分けたい

    関数とかマクロなど理解していない初心者でエクセル2003を使用しいます。 例えば 1Aのセルに1~10個(単価50円)と入力済 2Aのセルに11~20個(単価40円)と入力済 3Aのセルに21~30個(単価30円)と入力済 1B~3Bのセルに個数欄未入力 1C~3Cのセルに金額自動計算式入力済 4Bのセルに合計個数欄未入力 4Cのセルに合計金額自動計算式入力済 とした場合、例えば4Bの合計個数に29個と入力すると、自動的に1Bに10個、2Bに10個、3Bに9個と個数が振り分けられる様にしたいのですが、できるのでしょうか?

  • filemakerでフィールドの値をスクリプトで使う方法

    Filemaker10の初心者です。 テキストの内容をフィールドの値で置換する方法がわからなくて困っています。 データ変換用のテーブルのフィールドには 連番_役名_役者(各フィールドの名前) 1_ヴァンプ将軍_山田ルイ53世(各フィールドのデータの内容) 2_サンレッド_高木俊 3_1号_ひぐち君」 テキスト入力画面に、 「ヴァンプ将軍、1号、サンレッド」と入力して スクリプトを実行させると、 テキストが「山田ルイ53世、ひぐち君、高木俊」 と変換されるようにしたいのですが、 スクリプトでフィールドの各レコードのデータの参照の仕方がわかりません。 どうか教えてください。よろしくお願いします。

  • Acrobat Java Scriptについて教えてください。

    お世話になります。 Acrobat JavaScriptの初心者ですが、以下の問題で困ってます。 使用環境:Acrobat 4.05で、PDFフォームにてテキスト型のフィールドA,B,Cを作成しております。やりたいことは、AとBにデータが入力されるとCにA+Bの文字列を代入したいです。 つまり、Aに”012”と入力され、Bに”034”と入力された時、Cには”012034”を入れたいのです。 そのためフィールドcの書式スクリプトに var a;・・・・・・・・・・・・・・(1) var b;・・・・・・・・・・・・・・(2) a = this.getField("A").value;・・・(3) b = this.getField("B").value;・・・(4) event.value = a+b;・・・・・・・・(5) の5行を記述していますが、どうも(3)、(4)行目の段階で"012"の"0", "034"の"0"が消えてしまいます。 Acrobat5.0だと”valueAsString”のようなプロパティが追加されているようですが、Acrobat4.05の環境ではどうすればテキストの前のゼロを保留できるのでしょうか? どなたが教えてください.

専門家に質問してみよう