Advanced AcroForm Processing
HotPDF는 로드된 필드를 재계산하고, 표준 기반 variable-text appearance를 재생성하고, 주석 appearance 상태를 해석하고, 손대지 않은 페이지를 다시 쓰지 않고 선택된 필드 집합을 평탄화할 수 있습니다
Calculation order
RecalculateLoadedFormFields는 로드된 /AcroForm /CO 배열을 따라가 안전 필드 스크립트 평가기로 상한 AFSimple_Calculate 연산 SUM, AVG, PRD, MIN, MAX를 평가합니다
ApplyLoadedFieldCalculation은 계산 action을 설치하고 중복 항목 없이 대상 필드를 /CO에 추가합니다
안전한 필드 스크립트
EvaluateLoadedFieldJavaScript는 요청된 필드 트리거에 연결된 선언적 계산·검증 문만 평가합니다
- 식은 boolean, number, string, null, undefined, array 값을 지원하며 산술, 단항, 비교, 동등, short-circuit 논리, 조건 연산자를 갖춥니다
event.value는 문자열 입력 시맨틱을 유지하고, 숫자 필드 텍스트는 기존 계산과의 호환을 위해 숫자로 남습니다- allowlist 헬퍼는 숫자·문자열 변환, 파싱, 선별된
Math함수, 결정론적 UTC 날짜 파싱·생성, 상한 문자열·배열 검사를 다룹니다 AFSimple_Calculate,AFRange_Validate,event.value할당,event.rc할당이 결정론적 계산·검증 결과를 제공합니다- 루프, 동적 평가, 애플리케이션 접근, 제출, 가져오기, 실행 등 기타 active content는 거부됩니다
- 제한은 스크립트 8,192바이트, 문 32개, 식 4,096바이트, 파서 수준 32, operation 1,024회, 인자 64개, 배열 항목 128개, 문자열 65,536바이트, 추적 값 262,144바이트입니다
variable-text appearance
EnsureLoadedFieldAppearanceStream는 모든 위젯을 훑으며 필드 계층이나 AcroForm에서 /DA, /Q, /V, /DV, /Ff, /MaxLen 값을 상속합니다
- 왼쪽/가운데/오른쪽 quadding은 위젯의 로컬 appearance 좌표를 사용합니다
- 여러 줄 텍스트는 상한이 있는 줄 배치와 클리핑을 적용받습니다
- default appearance 폰트 크기가 0이면 자동 크기 조정이 발동합니다
- comb 필드는 각 문자를
/MaxLen셀에 독립적으로 배치합니다
주석 appearance 상태
GetLoadedAnnotationAppearanceStream는 normal, rollover, down appearance을 해석하고 rollover/down에서 normal로 폴백합니다
상태 딕셔너리는 그 순서대로 /AS, 상속 /V 또는 /DV, 부모 상태, /Off, 유일 stream 폴백을 씁니다
Selective flattening
FlattenLoadedFormFields는 선택된 위젯 appearance만 소유 페이지에 그리고 일치하는 필드·주석만 제거하며, 손대지 않은 페이지와 필드는 모두 유지합니다
기본 권한 게이트는 DocMDP 아래의 구조 변경을 거부하고 어떤 페이지가 수정되기 전에 FieldMDP All, Include, Exclude 잠금을 강제합니다
PDF.BeginIncrementalUpdate('SignedForm.pdf');
PDF.RecalculateLoadedFormFields;
PDF.FlattenLoadedFormFields(['Subtotal', 'Total']);
PDF.SaveIncrementalUpdate('SignedForm-updated.pdf');