항목을 합산하고, 세금을 계산하고, 송장 합계를 자동으로 계산하는 작성 가능한 PDF 양식은 수신자가 직접 계산해야 하는 문서와 근본적으로 다릅니다. 자동 계산 필드는 정적 양식을 작동하는 계산기로 바꿔줍니다. 수령인이 수량과 요율을 입력하면 양식이 눈앞에서 실시간으로 총액을 계산합니다. 송장, 구매 주문서, 비용 보고서 및 숫자를 정확하게 합산해야 하는 모든 양식의 경우 자동 계산은 사용자에게 도움이 되는 양식과 추가 작업을 생성하는 양식의 차이입니다.
PDF에 계산 필드를 추가하려면 JavaScript 기반 필드 스크립팅을 지원하는 양식 편집기가 필요합니다. 왜냐하면 PDF 계산은 모든 주요 PDF 뷰어에 내장된 JavaScript의 단순화된 버전에서 실행되기 때문입니다. 설정에는 사용자가 숫자를 입력하는 입력 필드 생성, 결과가 나타나는 출력 필드 생성, 이들을 서로 연결하는 계산 스크립트 작성의 세 단계가 포함됩니다. 일단 구성되면 사용자가 값을 변경할 때마다 계산이 자동으로 실행됩니다. 저장, 새로 고침, 버튼 클릭이 필요하지 않습니다.

PDF 필드 유형 이해 및 함께 작동하는 방식
계산 스크립트를 작성하기 전에 계산에 참여하는 세 가지 필드 유형을 이해해야 합니다. 텍스트 필드는 사용자가 입력한 내용을 받아들입니다. 숫자만, 날짜만 또는 모든 텍스트를 허용하도록 구성할 수 있습니다. 계산 양식의 경우 숫자 전용 텍스트 필드가 표준 입력 유형입니다. 각 필드에는 계산 스크립트가 참조하는 고유한 이름이 있습니다. "Item1_Qty"와 같은 일관된 이름 지정 "Item1_Rate," "항목1_총계," 계산 논리를 읽기 쉽고 유지 관리 가능하게 만듭니다.
드롭다운 목록과 라디오 버튼도 계산에 반영될 수 있습니다. 드롭다운을 사용하면 사용자가 제품을 선택할 수 있으며 해당 가격이 조회 테이블의 요율 필드에 자동으로 채워집니다. 체크박스를 사용하면 선택적 요금이 포함되는지 여부를 전환할 수 있습니다. 핵심 개념은 값이 있는 모든 필드가 계산의 일부가 될 수 있다는 것입니다. 스크립트는 각 입력 필드의 현재 값을 읽고, 수학을 수행하고, 결과를 출력 필드에 씁니다.
출력 필드는 일반적으로 읽기 전용으로 설정되므로 사용자가 실수로 계산된 결과를 덮어쓰는 일이 없습니다. 읽기 전용 계산 필드는 사용자가 제어하는 숫자와 양식이 제어하는 숫자를 명확하게 구분합니다. 이러한 구별은 양식 무결성에 중요합니다. 사용자가 합계를 편집할 수 있다면 계산이 존재하지 않을 수도 있습니다.
PDF 편집을 사용해 보세요
설치가 필요하지 않습니다. 브라우저에서 직접 작동합니다.
단계: 간단한 자동 계산 양식 만들기
입력 필드를 만드는 것부터 시작하세요. PDF 양식 편집기에서 양식 필드 도구를 선택하고 사용자가 입력해야 하는 각 값에 대한 텍스트 필드를 배치합니다. 송장의 경우 이는 각 품목에 대한 수량 필드 및 단가 필드일 수 있습니다. 각 필드에 명확하고 고유한 이름을 지정하십시오. JavaScript는 필드 이름을 변수 이름으로 참조하므로 필드 이름에 공백과 특수 문자를 사용하지 마세요. 대신 밑줄이나 camelCase를 사용하세요: "item1_qty" "항목 1 수량"이 아닙니다.
다음으로, 계산된 합계가 표시될 출력 필드를 만듭니다. 일반적으로 숫자 열의 하단이나 합계 섹션 등 논리적인 위치에 배치합니다. 필드 속성에서 이 필드를 읽기 전용으로 설정하세요. 이것은 중요합니다. 편집 가능한 계산 필드는 수학 자동화의 전체 목적을 훼손합니다.
이제 출력 필드의 계산 속성을 엽니다. WukongPDF 편집기에서 전체 필드를 선택하고 필드 속성에서 계산 탭을 열고 "사용자 정의 계산 스크립트"를 선택합니다. 그러면 계산을 수행하는 JavaScript를 작성하는 스크립트 편집기가 열립니다. 간단한 항목 항목 합계는 다음과 같습니다. event.value = this.getField("item1_qty").value * this.getField("item1_rate").value;. "이벤트.값" 필드에 표시되는 결과입니다. "this.getField()" 이름으로 다른 필드의 현재 값을 검색합니다. 여러 계산을 연결하여 총합계에 함께 추가할 수 있습니다. event.value = this.getField("line1_total").value + this.getField("line2_total").value + this.getField("line3_total").value;.
스크립트를 작성한 후 즉시 테스트해 보세요. 양식을 저장하고 PDF 뷰어에서 열고 입력 필드에 숫자를 입력하고 계산된 필드 업데이트를 확인하세요. Tab 키를 눌러 필드 사이를 이동하면 재계산이 시작됩니다. 숫자 필드에 문자를 입력하고 무슨 일이 일어나는지 확인하세요. 스크립트는 숫자가 아닌 입력을 처리하거나 정상적으로 무시해야 합니다. 합계에 "NaN"이 표시되면 (숫자가 아님), 입력 필드 중 하나에 숫자가 아닌 내용이 포함되어 있으며 스크립트에 유효성 검사가 필요합니다. 다음과 같은 보호 절을 추가하세요. var qty = Number(this.getField("item1_qty").value) || 0; 이렇게 하면 필드 값이 숫자로 변환되고 변환이 실패할 경우 기본값은 0이 되어 NaN이 계산을 통해 계단식으로 진행되는 것을 방지합니다.
특이한 사례 처리: 빈 필드, 음수 및 0으로 나누기
테스트 데이터와 완벽하게 작동하는 계산 스크립트는 실제 사용자가 양식을 작성할 때 당황스러운 방식으로 실패할 수 있습니다. 가장 일반적인 실패는 빈 필드입니다. 사용자가 아직 필드에 아무 것도 입력하지 않은 경우 해당 값은 0이 아닌 빈 문자열입니다. 빈 문자열에 숫자를 곱하면 NaN이 생성되고, 이는 해당 결과에 의존하는 모든 계산에 전파됩니다.
해결 방법은 모든 입력 값이 비어 있을 때 0으로 정규화하는 것입니다. 각 계산 스크립트 상단에서 각 필드 값을 검색하고 변환합니다. var qty = this.getField("qty").value; if (qty === "" || isNaN(qty)) qty = 0; 모든 입력 필드에 일관되게 적용되는 이 패턴은 빈 필드 문제를 제거합니다. 또한 사용자가 실수로 숫자 필드에 문자를 입력하여 NaN이 생성되는 경우도 처리합니다.
음수에는 정책 결정이 필요합니다. 양식에서 음수 수량을 허용해야 합니까? 대부분의 비즈니스 양식에서 대답은 '아니오'이며 계산 스크립트는 if (qty < 0) qty = 0;을 강제해야 합니다. 0으로 나누는 것은 백분율 및 비율 계산에 나타나는 더 미묘한 문제입니다. 분모 역할을 하는 필드가 0일 수 있는 경우 스크립트는 나누기 전에 확인해야 합니다. if (denominator !== 0) { result = numerator / denominator; } else { 결과 = 0; }. 이러한 보호 절은 몇 줄의 코드를 추가하고 양식이 사용자에게 혼란스러운 오류 값을 표시하는 것을 방지합니다.
고급 계산: 조건부 논리 및 조회 테이블
기본 산술은 개별 항목 합계와 총합계를 처리합니다. 보다 정교한 양식에는 사용자 선택에 따라 변경되는 조건부 계산이 필요합니다. 일반적인 예는 선택한 주 또는 지역에 따라 세율이 달라지는 세금 계산입니다. 계산 스크립트는 드롭다운 필드의 값을 읽고 해당 비율을 적용합니다. var state = this.getField("state").value; 변수 속도 = 0; if (state === "CA") rate = 0.0725; else if (state === "NY") rate = 0.04; event.value = 소계 * 비율;
옵션이 많은 대규모 조회 테이블의 경우 스위치 문이나 조회 개체가 if-else 조건 체인보다 더 깔끔합니다. var rates = { "CA": 0.0725, "NY": 0.04, "TX": 0.0625, "FL": 0.06 }; var rate = rate[상태] || 0; 이 패턴은 읽을 수 없게 되는 일 없이 수십 개의 항목으로 확장됩니다. ||에 의해 제공되는 기본값 0 연산자는 조회 테이블에 없는 상태를 정상적으로 처리합니다.
할인 등급은 또 다른 일반적인 조건부 사용 사례입니다. 소계가 임계값을 초과하는 경우 백분율 할인을 적용합니다. var 할인 = 0; if (소계 > 1000) 할인 = 소계 * 0.10; else if (소계 > 500) 할인 = 소계 * 0.05; event.value = 소계 - 할인 + 세금;. 필드가 변경될 때마다 계산이 실행되므로 사용자가 항목을 추가하거나 제거하면 할인이 자동으로 업데이트됩니다. 사용자는 가격이 실시간으로 조정되는 것을 볼 수 있는데, 이는 채울 수 있는 PDF 양식을 종이가 아닌 응용 프로그램처럼 느끼게 만드는 대화형 경험입니다.
계산 양식을 보내기 전에 테스트하기
테스트되지 않은 계산 양식은 잘못된 숫자를 생성하는 양식입니다. 체계적인 테스트는 클라이언트나 고객에게 도달하기 전에 오류를 포착합니다. 먼저 일반 값으로 테스트하세요. 머리 속에서 계산할 수 있는 숫자를 입력하고 출력이 일치하는지 확인하세요. 그런 다음 극단적인 경우를 테스트합니다. 필드를 비워 두고 0을 입력하고 비즈니스 규칙에서 거부해야 하는 경우 음수를 입력하고 오버플로를 확인하기 위해 매우 큰 숫자를 입력하고 숫자 필드에 텍스트를 입력합니다.
여러 PDF 뷰어에서 테스트하세요. Adobe Acrobat에서 올바르게 계산되는 양식은 Mac용 미리보기, 웹 브라우저에 내장된 PDF 뷰어 또는 모바일 PDF 앱에서 다르게 동작할 수 있습니다. 각 뷰어는 JavaScript 엔진을 약간 다르게 구현합니다. 일부 모바일 뷰어는 PDF JavaScript를 전혀 지원하지 않으며 계산 기능 없이 양식 필드를 표시합니다. 청중에 모바일 사용자가 포함된 경우 계산에 데스크톱 PDF 뷰어가 필요하다는 메모를 양식에 추가하거나 미리 계산된 참조 테이블을 대체 수단으로 제공하세요.
마지막으로 사용자 워크플로를 처음부터 끝까지 테스트합니다. 귀하가 수신자인 것처럼 양식을 엽니다. 실제 사용자가 작성하는 순서대로 작성하세요. 저장하세요. 저장된 사본을 다시 열고 계산이 여전히 올바른지 확인하십시오. 이를 인쇄하고 계산된 값이 종이에 나타나는지 확인하십시오. 화면에서는 올바르게 보이지만 빈 계산 필드를 인쇄하는 양식은 화면 렌더러와 다르게 인쇄 엔진 처리 필드 값으로 인해 발생하는 놀랍도록 일반적인 실패 모드입니다. 철저한 테스트에 소요된 시간은 500명의 고객에게 총 금액을 잘못 계산한 송장 양식을 보내는 피해에 비하면 아무것도 아닙니다.
스프레드시트가 더 나은 도구인 경우
PDF 양식 계산은 강력하지만 스프레드시트를 더 적절한 선택으로 만들 수 있는 한계가 있습니다. PDF 계산은 외부 데이터 소스를 참조할 수 없습니다. 실시간 환율, 주가 또는 데이터베이스 값을 가져올 수 없습니다. 목표 추구 또는 솔버 기능과 같은 반복 계산을 수행할 수 없습니다. 입력된 데이터에서 차트나 피벗 테이블을 생성할 수 없습니다. 양식에 이러한 기능이 필요한 경우 PDF 내부에 스프레드시트 기능을 복제하려고 시도하는 대신 Excel 또는 Google 스프레드시트에서 계산 논리를 만들고 결과를 PDF로 내보냅니다.
PDF 계산은 고정 품목이 포함된 송장, 알려진 제품 가격이 포함된 주문 양식, 사전 정의된 범주가 포함된 비용 보고서, 표준 시간당 요율이 포함된 작업표 등 수학이 간단하고 입력이 제한된 양식에 이상적입니다. 양식은 한 가지 작업을 수행하고 안정적으로 수행하며 수신자가 사용하는 데 교육이 필요하지 않습니다. WukongPDF의 PDF Editor는 단일 브라우저 기반 도구에서 양식 필드 생성과 JavaScript 계산 지원을 결합하여 이러한 최적의 위치를 잘 처리합니다. 올바른 사용 사례의 경우 잘 구축된 PDF 계산 양식은 수학 오류에 대한 후속 이메일을 제거하고 처리 시간을 단축하며 별도의 계산기가 포함된 정적 양식보다 더 전문적인 경험을 제공합니다.
PDF 편집을 사용해 보세요
설치가 필요하지 않습니다. 브라우저에서 직접 작동합니다.
