1

Acrobat で JavaScript を使用して、インタラクティブなフォームで 10 個のデータ フィールドを合計しようとしています。もともと、データは手動で入力する必要がありました。作成した計算式は、データが手動で入力された場合には機能しますが、データが別のフォームからエクスポートされ、FDF ファイルを使用してこのフォームにインポートされた場合、適切に合計されません。

現在のワークフローでは 3 つのフォームを使用しています。データはフォーム 1 と 2 に入力されます。次に、データは両方のフォームからデータとしてエクスポートされ、FDF 形式で保存されます。

フォーム 3 が開かれ、2 つのデータ ファイルがこのフォームにインポートされます。同様の式を持つ 2 つの TOTALS フィールドがあり、1 つはすべての負の数を合計し、もう 1 つはすべての正の数を合計します。

ただし、両方のファイルをインポートすると、最初の計算のみが実行されます。2 番目は無視されます。いずれかのデータ ファイルを 2 回目にインポートすると、2 回目の計算が開始されます。

そのため、データ ファイルがインポートされたら、Acrobat に両方の計算を行うように指示する方法を見つけようとしています。

負の数の JavaScript コードは次のとおりです。

function calcLost(){
 var amountLost = 0;
 var pt_neck_diff = this.getField('pt_neck_diff').value;
 var pt_arm_r_diff = this.getField('pt_arm_r_diff').value;
 var pt_arm_l_diff = this.getField('pt_arm_l_diff').value;
 var pt_chest_diff = this.getField('pt_chest_diff').value;
 var pt_belly_diff = this.getField('pt_belly_diff').value;
 var pt_waist_diff = this.getField('pt_waist_diff').value;
 var pt_hips_diff = this.getField('pt_hips_diff').value;
 var pt_butt_diff = this.getField('pt_butt_diff').value;
 var pt_thigh_r_diff = this.getField('pt_thigh_r_diff').value;
 var pt_thigh_l_diff = this.getField('pt_thigh_l_diff').value;
 if(pt_neck_diff < 0){
   amountLost += pt_neck_diff
 }

 if(pt_arm_r_diff < 0){
   amountLost += pt_arm_r_diff
 }

 if(pt_arm_l_diff < 0){
   amountLost += pt_arm_l_diff
 }

 if(pt_chest_diff < 0){
   amountLost += pt_chest_diff
 }

 if(pt_belly_diff < 0){
   amountLost += pt_belly_diff
 }

 if(pt_waist_diff < 0){
   amountLost += pt_waist_diff
 }

 if(pt_hips_diff < 0){
   amountLost += pt_hips_diff
 }

 if(pt_butt_diff < 0){
   amountLost += pt_butt_diff
 }

 if(pt_thigh_r_diff < 0){
   amountLost += pt_thigh_r_diff
 }

 if(pt_thigh_l_diff < 0){
   amountLost += pt_thigh_l_diff
 }
 return amountLost;
 }

 event.value = calcLost();

もう 1 つの (ほぼ同じ) スクリプトは、正の数を計算します。2 番目のスクリプトを実行するように Acrobat に指示する方法を知っている人はいますか?

前述のように、いずれかのデータ ファイルを再インポートすると、両方の式が正常に機能します。ファイルが最初にインポートされたときに正しく機能しません。

もう 1 つの興味深い事実は、同様の形式で、4 つの数字のみを使用する微分計算がうまく機能することです。10 個のデータ フィールドを持つフォームを使用すると、数式が機能しません。

私たちは困惑しています。

4

1 に答える 1

0

フォーム フィールドの計算順序を再確認することをお勧めします ( http://help.adobe.com/en_US/acrobat/X/pro/using/WS58a04a822e3e50102bd615109794195ff-7de2.w.html )。

または、 this.calculateNow() を呼び出すと、フォームのすべての計算フィールドの計算が強制されます。ここで Adob​​e の PDF API リファレンスを参照してください: http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/js_api_reference.pdf

于 2014-04-24T17:58:39.583 に答える