Een invulbaar PDF-formulier dat regelitems optelt, belasting berekent of een factuur automatisch optelt, is een fundamenteel ander document dan een document waarin de ontvanger het zelf moet uitrekenen. Automatische berekeningsvelden veranderen een statisch formulier in een werkende rekenmachine. De ontvanger voert hoeveelheden en tarieven in, en het formulier berekent de totalen in realtime voor zijn ogen. Voor facturen, inkooporders, onkostendeclaraties en elk formulier waarbij de getallen correct moeten worden opgeteld, is automatische berekening het verschil tussen een formulier dat de gebruiker helpt en een formulier dat extra werk met zich meebrengt.
Voor het toevoegen van rekenvelden aan een PDF is een formuliereditor vereist die op JavaScript gebaseerde veldscripts ondersteunt, omdat PDF-berekeningen worden uitgevoerd op een vereenvoudigde versie van JavaScript die in elke grote PDF-viewer is ingebouwd. De installatie omvat drie stappen: het maken van de invoervelden waarin gebruikers getallen typen, het maken van het uitvoerveld waarin het resultaat verschijnt en het schrijven van het rekenscript dat ze aan elkaar koppelt. Eenmaal geconfigureerd, wordt de berekening automatisch uitgevoerd wanneer de gebruiker een waarde wijzigt. Geen opslaan, geen vernieuwen, geen klikken op een knop vereist.

PDF-veldtypen begrijpen en hoe ze samenwerken
Voordat u een berekeningsscript schrijft, moet u de drie veldtypen begrijpen die aan een berekening deelnemen. Tekstvelden accepteren getypte invoer van de gebruiker. Ze kunnen worden geconfigureerd om alleen cijfers, alleen datums of tekst te accepteren. Voor berekeningsformulieren zijn tekstvelden met alleen getallen het standaardinvoertype. Elk veld heeft een unieke naam waarnaar het berekeningsscript verwijst. Consistente naamgeving, zoals "Item1_Qty," "Artikel1_tarief," "Artikel1_Totaal," maakt de rekenlogica leesbaar en onderhoudbaar.
Vervolgkeuzelijsten en keuzerondjes kunnen ook worden meegenomen in berekeningen. Via een vervolgkeuzelijst kan de gebruiker een product selecteren en de bijbehorende prijs wordt automatisch in een tariefveld uit een opzoektabel ingevuld. Met selectievakjes kunt u aangeven of er optionele kosten zijn inbegrepen. Het sleutelconcept is dat elk veld met een waarde deel kan uitmaken van een berekening. Het script leest de huidige waarde van elk invoerveld, voert de berekening uit en schrijft het resultaat naar het uitvoerveld.
Uitvoervelden zijn doorgaans ingesteld op alleen-lezen, zodat de gebruiker het berekende resultaat niet per ongeluk kan overschrijven. Een alleen-lezen berekend veld zorgt voor een duidelijke scheiding tussen de getallen die door de gebruiker worden beheerd en de getallen die door het formulier worden beheerd. Dit onderscheid is belangrijk voor de vormintegriteit. Als de gebruiker het totaal zou kunnen bewerken, zou de berekening net zo goed niet kunnen bestaan.
Probeer PDF bewerken
Geen installatie nodig. Werkt rechtstreeks in uw browser.
Stap voor stap: een eenvoudig automatisch berekeningsformulier maken
Begin met het maken van uw invoervelden. Selecteer in de editor PDF Forms het formulierveldgereedschap en plaats tekstvelden voor elke waarde die de gebruiker moet invoeren. Voor een factuur kan dit een hoeveelheidsveld en een eenheidsprijsveld zijn voor elk regelitem. Geef elk veld een duidelijke, unieke naam. Vermijd spaties en speciale tekens in veldnamen, omdat JavaScript ernaar verwijst als variabelenamen. Gebruik in plaats daarvan underscores of camelCase: "item1_qty" niet "Artikel 1 Aantal."
Maak vervolgens het uitvoerveld waarin het berekende totaal zal verschijnen. Plaats het op een logische positie, meestal onderaan een kolom met getallen of in een sectie met totalen. Stel dit veld in de veldeigenschappen in op alleen-lezen. Dit is belangrijk. Een rekenveld dat bewerkbaar is, ondermijnt het hele doel van het automatiseren van de wiskunde.
Open nu de berekeningseigenschappen voor het uitvoerveld. Selecteer in de editor van WukongPDF het totaalveld, open het tabblad Berekenen in de veldeigenschappen en kies "Aangepast berekeningsscript." Hiermee wordt een scripteditor geopend waarin u het JavaScript schrijft dat de berekening uitvoert. Een eenvoudig regelitemtotaal ziet er als volgt uit: event.value = this.getField("item1_qty").value * this.getField("item1_rate").value;. De "gebeurteniswaarde" is het resultaat dat in het veld wordt weergegeven. "dit.getField()" haalt de huidige waarde van een ander veld op naam op. U kunt meerdere berekeningen aan elkaar koppelen en ze samen optellen voor een eindtotaal: event.value = this.getField("line1_total").value + this.getField("line2_total").value + this.getField("line3_total").value;.
Test het script na het schrijven onmiddellijk. Sla het formulier op, open het in een PDF-viewer, typ getallen in de invoervelden en bekijk de update van de berekende velden. Druk op Tab om tussen velden te navigeren, waardoor de herberekening wordt geactiveerd. Typ een letter in een cijferveld en kijk wat er gebeurt. Het script moet niet-numerieke invoer verwerken of op een elegante manier negeren. Als het totaal "NaN" (Geen getal), bevat een van de invoervelden iets dat geen getal is, en heeft het script een validatiecontrole nodig. Voeg een beveiligingsclausule toe, zoals: var qty = Number(this.getField("item1_qty").value) || 0; Hierdoor wordt de veldwaarde geconverteerd naar een getal en wordt deze standaard ingesteld op nul als de conversie mislukt, waardoor wordt voorkomen dat NaN door de berekening loopt.
Omgaan met randgevallen: lege velden, negatieve getallen en delen door nul
Een rekenscript dat perfect werkt met testgegevens kan op gênante wijze mislukken wanneer een echte gebruiker het formulier invult. De meest voorkomende fout is het lege veld. Wanneer een gebruiker nog niets in een veld heeft getypt, is de waarde ervan een lege string, en niet nul. Het vermenigvuldigen van een lege string met een getal levert NaN op, dat zich vervolgens voortplant naar elke berekening die van dat resultaat afhangt.
De oplossing is om elke invoerwaarde naar nul te normaliseren als deze leeg is. Haal bovenaan elk berekeningsscript elke veldwaarde op en converteer deze: var qty = this.getField("qty").value; als (aantal === "" || isNaN(aantal)) aantal = 0; Dit patroon, consequent toegepast op elk invoerveld, elimineert het leegveldprobleem. Het behandelt ook het geval waarin een gebruiker per ongeluk een letter in een numeriek veld typt, wat anders NaN zou opleveren.
Negatieve cijfers vereisen een beleidsbeslissing. Moet het formulier negatieve hoeveelheden accepteren? In de meeste bedrijfsvormen is het antwoord nee, en het berekeningsscript zou dat moeten afdwingen: if (qty < 0) qty = 0;. Delen door nul is een subtieler probleem dat voorkomt in percentage- en tariefberekeningen. Als een veld dat als noemer dient nul kan zijn, moet het script vóór het delen controleren: if (noemer !== 0) { result = teller / noemer; } anders { resultaat = 0; }. Deze beveiligingsclausules voegen een paar regels code toe en voorkomen dat het formulier verwarrende foutwaarden voor de gebruiker weergeeft.
Geavanceerde berekeningen: voorwaardelijke logica en opzoektabellen
Basisrekenkunde verwerkt de totalen van regelitems en eindtotalen. Meer geavanceerde formulieren hebben voorwaardelijke berekeningen nodig die veranderen op basis van gebruikersselecties. Een veelvoorkomend voorbeeld is de belastingberekening waarbij het belastingtarief afhankelijk is van de geselecteerde staat of provincie. Het berekeningsscript leest de waarde van een vervolgkeuzeveld en past het bijbehorende tarief toe: var state = this.getField("state").value; var-tarief = 0; als (staat === "CA") tarief = 0,0725; anders als (staat === "NY") tarief = 0,04; event.value = subtotaal * tarief;
Voor grotere opzoektabellen met veel opties is een switch-instructie of een opzoekobject schoner dan een reeks if-else-voorwaarden. var tarieven = { "CA": 0,0725, "NY": 0,04, "TX": 0,0625, "FL": 0,06 }; var tarief = tarieven[staat] || 0; Dit patroon schaalt naar tientallen vermeldingen zonder onleesbaar te worden. De standaardwaarde nul, opgegeven door || operator, verwerkt staten die niet in de opzoektabel staan op een elegante manier.
Kortingsniveaus zijn een ander veelvoorkomend geval van voorwaardelijk gebruik. Als het subtotaal een drempel overschrijdt, past u een kortingspercentage toe: var korting = 0; als (subtotaal > 1000) korting = subtotaal * 0,10; anders als (subtotaal > 500) korting = subtotaal * 0,05; event.value = subtotaal - korting + belasting;. De berekening wordt elke keer uitgevoerd als een veld verandert, zodat de korting automatisch wordt bijgewerkt als de gebruiker artikelen toevoegt of verwijdert. De gebruiker ziet de prijs in realtime worden aangepast, wat precies de interactieve ervaring is die ervoor zorgt dat een Fillable PDF-formulier aanvoelt als een applicatie in plaats van als een stuk papier.
Uw berekeningsformulier testen voordat u het verzendt
Een rekenformulier dat niet is getest, is een formulier dat verkeerde cijfers oplevert. Systematisch testen spoort fouten op voordat ze een klant of klant bereiken. Test eerst met normale waarden: voer getallen in die u in uw hoofd kunt berekenen en controleer of de uitvoer overeenkomt. Test vervolgens de randgevallen: laat velden leeg, voer nul in, voer negatieve getallen in als de bedrijfsregels deze zouden afwijzen, voer zeer grote getallen in om te controleren op overloop, en voer tekst in numerieke velden in.
Test op meerdere PDF-viewers. Een formulier dat correct berekent in Adobe Acrobat, gedraagt zich mogelijk anders in Voorvertoning op de Mac, in de ingebouwde PDF-viewer van een webbrowser of in een mobiele PDF-app. Elke kijker implementeert de JavaScript-engine iets anders. Sommige mobiele viewers ondersteunen PDF JavaScript helemaal niet en geven de formuliervelden weer zonder enige rekenfunctionaliteit. Als uw doelgroep ook mobiele gebruikers omvat, voeg dan een opmerking toe op het formulier waarin u aangeeft dat voor berekeningen een desktop-PDF-viewer nodig is, of geef als reserve een vooraf berekende referentietabel op.
Test ten slotte de gebruikersworkflow van begin tot eind. Open het formulier alsof u de ontvanger bent. Vul het in in de volgorde waarin een echte gebruiker dat zou doen. Bewaar het. Open de opgeslagen kopie opnieuw en controleer of de berekeningen nog steeds correct zijn. Print het uit en zorg ervoor dat de berekende waarden op papier verschijnen. Een formulier dat er op het scherm correct uitziet, maar lege berekende velden afdrukt, is een verrassend vaak voorkomende fout die wordt veroorzaakt doordat het afdrukprogramma veldwaarden anders verwerkt dan de schermweergave. Het uur dat aan grondig testen wordt besteed, is niets vergeleken met de schade die ontstaat als 500 klanten een factuurformulier sturen dat hun totalen verkeerd berekent.
Wanneer een spreadsheet het betere hulpmiddel is
Berekeningen in PDF-formulieren zijn krachtig, maar er zijn beperkingen die ervoor zorgen dat een spreadsheet de meest geschikte keuze is. PDF-berekeningen kunnen niet verwijzen naar externe gegevensbronnen. Ze kunnen geen actuele wisselkoersen, aandelenkoersen of databasewaarden opvragen. Ze kunnen geen iteratieve berekeningen uitvoeren, zoals het zoeken naar doelen of het oplossen van functies. Ze kunnen geen grafieken of draaitabellen genereren op basis van de ingevoerde gegevens. Als uw formulier een van deze mogelijkheden vereist, maakt u de berekeningslogica in Excel of Google Spreadsheets en exporteert u het resultaat naar PDF, in plaats van te proberen de spreadsheetfunctionaliteit in een PDF te repliceren.
PDF-berekeningen zijn ideaal voor formulieren waarbij de wiskunde eenvoudig is en de invoer begrensd is: facturen met vaste posten, bestelformulieren met bekende productprijzen, onkostendeclaraties met vooraf gedefinieerde categorieën en urenstaten met standaarduurtarieven. Het formulier doet één ding: het doet het betrouwbaar en vereist geen training voor de ontvanger om het te gebruiken. De PDF Editor van WukongPDF kan deze goede plek goed aan, door het maken van formuliervelden te combineren met ondersteuning voor JavaScript-berekeningen in één browsergebaseerde tool. Voor de juiste toepassing elimineert een goed gebouwd PDF-berekeningsformulier vervolg-e-mails over wiskundefouten, versnelt de verwerkingstijd en biedt het een professionelere ervaring dan een statisch formulier met een aparte rekenmachine.
Probeer PDF bewerken
Geen installatie nodig. Werkt rechtstreeks in uw browser.
