Antworten auf deine Fragen:
Neues Thema erstellen

Adobe Acrobat Pro DC Formularberechnung (Javascript)

exil-ösi

Noch nicht viel geschrieben

Ein Hallo in die Runde,

ich möchte gerne mittels PDF-Formular einen Leistungsrechner für Heizleistungen erstellen. D.h.: die Heizleistung wird nach einer Norm angegeben, unter Annahme, dass die Vorlauftemperatur 75°C und die Rücklauftemperatur 65°C beträgt, dies bei einer angenommenen Raumtemperatur von 20°C.
Besitzt man nun über bspw. weniger Temperatur im Vorlauf und Rücklauf als in der Norm angenommen, so reduziert sich die tatsächliche Heizleistung. Die tatsächliche Leistung kann ~ berechnet werden.

Da ich mich mit Javascript nicht auskenne, habe ich mich diesbezüglich schon etwas (vermeintlich) schlau gemacht, komme aber leider nicht weiter. Um die geänderte Leistung zu berechnen sind einige Rechenschritte notwendig, welche sich im Excel einwandfrei vorbereiten lassen. Diese habe ich nun auf das benutzerdefinierte Berechnungsskript adaptiert. Leider erhalte ich völlig unterschiedliche bzw. falsche Ergebnisse. Gibt es im „Benutzerdef. Berechnungsskript“ eine Hierarchie, welche nicht von Klammen beeinflusst wird?

Skript:
var A = this.getField("EN442WATT");
var B = this.getField("EFFVL");
var C = this.getField("EFFRL");
var D = this.getField("EFFTEMP");
event.value = (Math.pow(((((B.value+C.value)/2)-D.value)/((75+65/2)-20)),1.275))*A.value

var A zieht sich die Leistung nach Norm
var B die tatsächliche Vorlauftemperatur
var C die tatsächliche Rücklauftemperatur
var D die tatsächliche Raumtemperatur

Das Skript sollte nun folgendes berechnen (wobei die Raumtemperatur für gewöhnlich gleichbleibend ist):
=(((((TATSÄCHLICHE VORLAUFTEMPERATUR+TATSÄCHLICHE RÜCKLAUFTEMPERATUR)/2)-TATSÄCHLICHE RAUMTEMPERATUR)/(((VORLAUFTEMPERATUR NACH NORM+RÜCKLAUFTEMPERATUR NACH NORM)/2)-RAUMTEMPERATUR NACH NORM))^1,275)*LEISTUNG NACH NORM

Bin dankbar über jeden Input
Flo
 

Design & Layout

helge07

Aktives Mitglied

möglicherweise sitzt nur eine Klammer falsch.
Der folgende Code (mit Zwischenschritten zur Detail-Kontrolle) liefert bei mir jedenfalls das gleiche Ergebnis wie Excel:

--------------------------------------
var A = this.getField("EN442WATT");
var B = this.getField("EFFVL");
var C = this.getField("EFFRL");
var D = this.getField("EFFTEMP");
//event.value = Math.pow((((B.value+C.value)/2.0)-D.value)/((75+65/2.0)-20),1.275)*A.value;

var q=(((B.value+C.value)/2.0)-D.value)/((75+65/2.0)-20);
event.value = Math.pow(q,1.275)*A.value;

console.println("Zähler: " );
console.println(((B.value+C.value)/2.0)-D.value);

console.println("Nenner: " );
console.println((75+65/2.0)-20);

console.println("Quotient: " );
console.println(q);

console.println("Potenz: " );
console.println(Math.pow( q,1.275));

console.println("Potenz * A: " );
console.println(Math.pow( q,1.275)*A.value);

console.println("event.value:");
console.println(event.value);
------------------------------------

JavaScript-Konsolausgabe:

Zähler:
17
Nenner:
87.5
Quotient:
0.19428571428571428
Potenz:
0.12381181985727516
Potenz * A:
2.4762363971455033
event.value:
2.4762363971455033
----------------------------------------

Excel-Datei (als csv):
20;;;;;
40;;;;;
4;;;;;
5;;;;;
;;;;;
;17;;(B.value+C.value)/2)-D.value;;
;87,5;;(75+65)/2-20;;
;0,194285714;;(B.value+C.value)/2)-D.value / (75+65)/2-20;;
;2,476236397;;"=(POTENZ(B15;1,275))*A1";;
 

exil-ösi

Noch nicht viel geschrieben

Zunächst, vielen lieben Dank für die Hilfe! Habe die Klammern mal korrigiert. Als einfache Kontrolle trage ich für die effektiven Temperaturen dieselben Werte wie für die Normtemperaturen ein - hier sollte dann die Wattleistung ident sein. Klappt leider nicht - es wird zwar gerechnet, aber ich vermute, dass bei der Reihenfolge etwas nicht ordentlich greift.

Was wurden bei dem Bsp. "Zähler" für Werte bei B.value. C.value und D.value verwendet?
Beim "Nenner" stimmt die Reihenfolge nicht mit der Gesamtformel überein: die Division durch 2 sollte nach der Addition 75+65 erfolgen: ((75+65)/2)-20 = 50
 
Zuletzt bearbeitet:

exil-ösi

Noch nicht viel geschrieben

Ich neige mein Haupt. Das klappt nun einwandfrei und macht was es soll!
Vielen, vielen Dank für die sensationelle und vor allem prompte Unterstützung!

Gruß
Florian
 

tintonic

Noch nicht viel geschrieben

Hallo
Ich habe eine ähnliche Frage. Ich muss aus einer Excel-Datei ein interaktives PDF machen. Im Excel lautet die Formel: =POTENZ(J50;0.353)*0.459. Was muss ich nun im Acrobat bei Berechnung eingeben?
 

helge07

Aktives Mitglied

Was muss ich nun im Acrobat bei Berechnung eingeben?

Annahme:
- der Wert des Excel-Feldes "J50" steht in einem Formularfeld "Basis"
- das Formularfeld "Resultat" soll bei einer Änderung von "Basis" das Ergebnis enthalten.
Dann muss das Benutzerdefinierte Berechnungsskript des Feldes "Resultat" so aussehen:

var base = this.getField("Basis");
var result = this.getField("Resultat");
result.value = Math.pow(base.value,0.375) * 0.459;
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.633
Beiträge
1.538.446
Mitglieder
67.555
Neuestes Mitglied
scheflo
Oben