Tips & Tricks

Jak dodać pola automatycznego obliczania w formularzu PDF do wypełnienia

Formularz PDF do wypełnienia, który sumuje pozycje pojedyncze, oblicza podatek lub automatycznie sumuje fakturę, to zasadniczo inny dokument niż ten, w którym odbiorca musi samodzielnie dokonać obliczeń. Pola autokalkulacji zamieniają statyczny formularz w działający kalkulator. Odbiorca wprowadza ilości i stawki, a formularz w czasie rzeczywistym na jego oczach wylicza sumy. W przypadku faktur, zamówień, raportów z wydatków i wszelkich formularzy, w których liczby muszą się poprawnie sumować, automatyczne obliczanie stanowi różnicę między formularzem, który pomaga użytkownikowi, a formularzem, który tworzy dodatkową pracę.

Dodawanie pól obliczeniowych do pliku PDF wymaga edytora formularzy obsługującego skrypty polowe oparte na JavaScript, ponieważ obliczenia PDF działają na uproszczonej wersji JavaScript wbudowanej w każdą większą przeglądarkę plików PDF. Konfiguracja obejmuje trzy kroki: utworzenie pól wejściowych, w których użytkownicy wpisują liczby, utworzenie pola wyjściowego, w którym pojawia się wynik, oraz napisanie skryptu obliczeniowego, który łączy je ze sobą. Po skonfigurowaniu obliczenia są uruchamiane automatycznie za każdym razem, gdy użytkownik zmieni wartość. Nie ma potrzeby zapisywania, odświeżania ani klikania przycisku.

How to Add Auto-Calculation Fields in a Fillable PDF Form

Omówienie typów pól PDF i ich wzajemnego współdziałania

Przed napisaniem dowolnego skryptu obliczeniowego należy zapoznać się z trzema typami pól biorących udział w obliczeniach. Pola tekstowe akceptują dane wpisane przez użytkownika. Można je skonfigurować tak, aby akceptowały tylko liczby, tylko daty lub dowolny tekst. W przypadku formularzy obliczeniowych standardowym typem danych wejściowych są pola tekstowe zawierające wyłącznie liczby. Każde pole ma unikalną nazwę, do której odwołuje się skrypt obliczeniowy. Spójne nazewnictwo, np. „Element1_Ilość”; „Item1_Rate”; „Item1_Total”; sprawia, że logika obliczeniowa jest czytelna i łatwa w utrzymaniu.

Listy rozwijane i przyciski opcji mogą również zostać uwzględnione w obliczeniach. Lista rozwijana może pozwolić użytkownikowi wybrać produkt, a odpowiednia cena automatycznie wypełnia pole stawki z tabeli przeglądowej. Pola wyboru mogą przełączać, czy uwzględniona jest opcjonalna opłata. Kluczową koncepcją jest to, że dowolne pole z wartością może być częścią obliczenia. Skrypt odczytuje bieżącą wartość każdego pola wejściowego, wykonuje obliczenia i zapisuje wynik w polu wyjściowym.

Pola wyjściowe są zwykle ustawione jako tylko do odczytu, więc użytkownik nie może przypadkowo zastąpić obliczonego wyniku. Pole obliczeniowe tylko do odczytu tworzy wyraźne oddzielenie liczb kontrolowanych przez użytkownika od liczb kontrolowanych przez formularz. To rozróżnienie jest ważne dla integralności formy. Gdyby użytkownik mógł edytować sumę, kalkulacja równie dobrze mogłaby nie istnieć.

WukongPDF

Wypróbuj opcję Edytuj plik PDF

Nie wymaga instalacji. Działa bezpośrednio w Twojej przeglądarce.

Zacznij teraz →

Krok po kroku: Tworzenie prostego formularza automatycznego obliczania

Zacznij od utworzenia pól wejściowych. W edytorze Formularze PDF wybierz narzędzie pola formularza i umieść pola tekstowe dla każdej wartości, którą użytkownik musi wprowadzić. W przypadku faktury może to być pole ilości i pole ceny jednostkowej dla każdej pozycji pojedynczej. Nadaj każdemu polu jasną, niepowtarzalną nazwę. Unikaj spacji i znaków specjalnych w nazwach pól, ponieważ JavaScript odwołuje się do nich jako nazw zmiennych. Zamiast tego użyj podkreśleń lub camelCase: „item1_qty” a nie „Pozycja 1 szt.”

Następnie utwórz pole wyjściowe, w którym pojawi się obliczona suma. Umieść go w logicznej pozycji, zazwyczaj na dole kolumny liczb lub w sekcji podsumowań. Ustaw to pole jako tylko do odczytu we właściwościach pola. To jest ważne. Edytowalne pole obliczeniowe podważa cały cel automatyzacji obliczeń matematycznych.

Teraz otwórz właściwości obliczeń dla pola wyjściowego. W edytorze WukongPDF wybierz pole sumy, otwórz zakładkę Oblicz we właściwościach pola i wybierz opcję „Własny skrypt obliczeniowy”. Spowoduje to otwarcie edytora skryptów, w którym napiszesz kod JavaScript wykonujący obliczenia. Prosta suma pozycji wygląda następująco: event.value = this.getField("item1_qty”).value * this.getField("item1_rate").value;. „Wartość zdarzenia” to wynik wyświetlany w polu. „this.getField()” pobiera bieżącą wartość innego pola według nazwy. Możesz połączyć wiele obliczeń i dodać je razem, aby uzyskać sumę całkowitą: event.value = this.getField(”line1_total”).value + this.getField(”line2_total”).value + this.getField(”line3_total").value;.

Po napisaniu skryptu od razu go przetestuj. Zapisz formularz, otwórz go w przeglądarce plików PDF, wpisz liczby w polach wejściowych i obserwuj aktualizację obliczonych pól. Aby poruszać się pomiędzy polami, naciśnij klawisz Tab, co spowoduje ponowne obliczenie. Wpisz literę w polu liczbowym i zobacz, co się stanie. Skrypt powinien obsługiwać lub bezpiecznie ignorować wprowadzanie nienumeryczne. Jeśli suma pokazuje „NaN” (To nie jest liczba), jedno z pól wejściowych zawiera coś, co nie jest liczbą, a skrypt wymaga sprawdzenia poprawności. Dodaj klauzulę ochronną, taką jak: var qty = Number(this.getField("item1_qty").value) || 0; Konwertuje to wartość pola na liczbę i domyślnie przyjmuje wartość zero, jeśli konwersja się nie powiedzie, zapobiegając kaskadowaniu NaN w obliczeniach.

Obsługa przypadków brzegowych: puste pola, liczby ujemne i dzielenie przez zero

Skrypt obliczeniowy, który doskonale współpracuje z danymi testowymi, może zawieść w zawstydzający sposób, gdy prawdziwy użytkownik wypełni formularz. Najczęstszą awarią jest puste pole. Jeśli użytkownik nie wpisał jeszcze niczego w polu, jego wartością jest pusty ciąg znaków, a nie zero. Mnożenie pustego ciągu przez liczbę daje NaN, który następnie jest propagowany do wszystkich obliczeń zależnych od tego wyniku.

Rozwiązanie polega na normalizacji każdej wartości wejściowej do zera, gdy jest ona pusta. Na górze każdego skryptu obliczeniowego pobierz wartość każdego pola i przekonwertuj ją: var qty = this.getField("qty").value; if (ilość === „” || isNaN(ilość)) ilość = 0; Ten wzorzec, zastosowany konsekwentnie do każdego pola wejściowego, eliminuje problem pustych pól. Obsługuje również przypadek, w którym użytkownik przypadkowo wpisuje literę w polu numerycznym, co w przeciwnym razie spowodowałoby wygenerowanie NaN.

Liczby ujemne wymagają decyzji politycznej. Czy formularz powinien akceptować ilości ujemne? W większości formularzy biznesowych odpowiedź brzmi „nie” i skrypt obliczeniowy powinien to wymuszać: if (qty < 0) qty = 0;. Dzielenie przez zero to subtelniejszy problem, który pojawia się w obliczeniach procentowych i stawek. Jeżeli pole pełniące rolę mianownika może wynosić zero, skrypt przed dzieleniem musi sprawdzić: if (mianownik !== 0) { wynik = licznik / mianownik; } else { wynik = 0; }. Te klauzule ochronne dodają kilka wierszy kodu i zapobiegają wyświetlaniu użytkownikowi mylących wartości błędów w formularzu.

Zaawansowane obliczenia: logika warunkowa i tablice przeglądowe

Podstawowa arytmetyka obsługuje sumy pozycji pojedynczych i sumy końcowe. Bardziej wyrafinowane formularze wymagają obliczeń warunkowych, które zmieniają się w zależności od wyborów użytkownika. Typowym przykładem jest obliczenie podatku, w którym stawka podatku zależy od wybranego stanu lub prowincji. Skrypt obliczeniowy odczytuje wartość pola rozwijanego i stosuje odpowiednią stawkę: var stan = this.getField(”state").value; zmienna stawka = 0; if (stan === „CA”) stawka = 0,0725; else if (stan === „NY”) stawka = 0,04; wartość zdarzenia = suma częściowa * stawka;

W przypadku większych tabel przeglądowych z wieloma opcjami instrukcja switch lub obiekt wyszukiwania jest czystszy niż łańcuch warunków if-else. var stawki = { „CA”: 0,0725, „NY”: 0,04, „TX”: 0,0625, „FL”: 0,06 }; var stawka = stawki[stan] || 0; Ten wzorzec skaluje się do dziesiątek wpisów, nie stając się nieczytelnym. Domyślna wartość zero, podana przez || operator, z wdziękiem obsługuje stany, których nie ma w tabeli przeglądowej.

Poziomy rabatów to kolejny typowy przypadek użycia warunkowego. Jeśli suma częściowa przekracza próg, zastosuj rabat procentowy: var rabat = 0; if (suma częściowa > 1000) rabat = suma częściowa * 0,10; else if (suma częściowa > 500) rabat = suma częściowa * 0,05; event.value = suma częściowa - rabat + podatek;. Obliczenia są uruchamiane za każdym razem, gdy zmienia się jakiekolwiek pole, więc rabat jest aktualizowany automatycznie, gdy użytkownik dodaje lub usuwa elementy. Użytkownik widzi zmianę ceny w czasie rzeczywistym i właśnie to jest interaktywne doświadczenie, które sprawia, że formularz PDF do wypełnienia przypomina aplikację, a nie kartkę papieru.

Testowanie formularza obliczeniowego przed jego wysłaniem

Formularz obliczeniowy, który nie został przetestowany, to formularz, który będzie generował błędne liczby. Systematyczne testowanie wyłapuje błędy, zanim dotrą one do klienta lub klienta. Najpierw przetestuj z normalnymi wartościami: wprowadź liczby, które możesz obliczyć w głowie i sprawdź, czy wyniki pasują. Następnie przetestuj przypadki Edge: pozostaw pola puste, wpisz zero, wpisz liczby ujemne, jeśli reguły biznesowe powinny je odrzucić, wpisz bardzo duże liczby, aby sprawdzić, czy nie są przepełnione, i wprowadź tekst w polach numerycznych.

Przetestuj na wielu przeglądarkach plików PDF. Formularz, który oblicza poprawnie w programie Adobe Acrobat, może zachowywać się inaczej w podglądzie na komputerze Mac, we wbudowanej przeglądarce plików PDF w przeglądarce internetowej lub w mobilnej aplikacji PDF. Każda przeglądarka nieco inaczej implementuje silnik JavaScript. Niektóre przeglądarki mobilne w ogóle nie obsługują PDF JavaScript i wyświetlają pola formularza bez żadnej funkcji obliczeniowej. Jeśli wśród Twoich odbiorców znajdują się użytkownicy mobilni, dodaj w formularzu notatkę wskazującą, że obliczenia wymagają przeglądarki plików PDF na komputerze lub podaj wstępnie obliczoną tabelę referencyjną jako rozwiązanie zastępcze.

Na koniec przetestuj przepływ pracy użytkownika od początku do końca. Otwórz formularz tak, jakbyś był odbiorcą. Wypełnij go w kolejności, w jakiej zrobiłby to prawdziwy użytkownik. Zapisz to. Otwórz ponownie zapisaną kopię i sprawdź, czy obliczenia są nadal prawidłowe. Wydrukuj go i upewnij się, że obliczone wartości pojawiają się na papierze. Formularz, który wygląda poprawnie na ekranie, ale drukuje puste pola obliczone, jest zaskakująco częstym trybem awarii spowodowanym przez silnik drukujący przetwarzający wartości pól w inny sposób niż moduł renderujący ekran. Godzina spędzona na dokładnym testowaniu jest niczym w porównaniu ze szkodami, jakie wyrządza wysłanie 500 klientom formularza faktury, który błędnie oblicza ich sumy.

Kiedy arkusz kalkulacyjny jest lepszym narzędziem

Obliczenia w formacie PDF są potężne, ale mają ograniczenia, które mogą sprawić, że arkusz kalkulacyjny będzie bardziej odpowiednim wyborem. Obliczenia PDF nie mogą odwoływać się do zewnętrznych źródeł danych. Nie mogą pobierać aktualnych kursów wymiany, cen akcji ani wartości z baz danych. Nie mogą wykonywać obliczeń iteracyjnych, takich jak poszukiwanie celu lub funkcje rozwiązywania. Nie mogą generować wykresów ani tabel przestawnych na podstawie wprowadzonych danych. Jeśli Twój formularz wymaga którejkolwiek z tych funkcji, utwórz logikę obliczeń w programie Excel lub Arkuszach Google i wyeksportuj wynik do pliku PDF, zamiast próbować replikować funkcjonalność arkusza kalkulacyjnego w pliku PDF.

Obliczenia w formacie PDF idealnie nadają się do formularzy, w których matematyka jest prosta, a dane wejściowe ograniczone: faktury ze stałymi pozycjami, formularze zamówień ze znanymi cenami produktów, raporty wydatków ze wstępnie zdefiniowanymi kategoriami i karty czasu pracy ze standardowymi stawkami godzinowymi. Formularz robi jedno, robi to niezawodnie i nie wymaga od odbiorcy szkolenia w obsłudze. WukongPDF PDF Editor dobrze radzi sobie z tym idealnym rozwiązaniem, łącząc tworzenie pól formularza z obsługą obliczeń JavaScript w jednym narzędziu opartym na przeglądarce. W odpowiednim przypadku dobrze zbudowany formularz obliczeniowy w formacie PDF eliminuje kolejne wiadomości e-mail dotyczące błędów matematycznych, przyspiesza czas przetwarzania i zapewnia bardziej profesjonalne doświadczenie niż statyczny formularz z oddzielnym kalkulatorem.

WukongPDF

Wypróbuj opcję Edytuj plik PDF

Nie wymaga instalacji. Działa bezpośrednio w Twojej przeglądarce.

Zacznij teraz →