Processamento avançado de AcroForm
O HotPDF consegue recalcular campos carregados, regenerar aparências de texto variável baseadas em normas, resolver estados de aparência de anotações e aplanar (flatten) um conjunto selecionado de campos sem reescrever as páginas que não foram tocadas
Ordem de cálculo
RecalculateLoadedFormFields segue o array /AcroForm /CO carregado e avalia, através do avaliador seguro de scripts de campo, as operações delimitadas de AFSimple_Calculate: SUM, AVG, PRD, MIN e MAX
ApplyLoadedFieldCalculation instala a ação de cálculo e acrescenta o campo de destino a /CO sem entradas duplicadas
Scripts de campo seguros
EvaluateLoadedFieldJavaScript avalia apenas instruções declarativas de cálculo e validação associadas ao trigger do campo pedido
- As expressões suportam valores booleanos, números, strings, null, undefined e arrays, com operadores aritméticos, unários, de comparação, de igualdade, lógicos com short-circuit e condicionais
event.valuepreserva a semântica de entrada como string, enquanto o texto numérico do campo continua numérico, por compatibilidade com os cálculos existentes- Os helpers da allowlist cobrem conversão de números e strings, parsing, funções
Mathselecionadas, parsing e construção determinísticos de datas UTC e inspeção delimitada de strings e arrays AFSimple_Calculate,AFRange_Validate,event.valueassignment, andevent.rcassignment provide deterministic calculation and validation outcomes- Ciclos, avaliação dinâmica, acesso à aplicação, submissão, importação, execução e outros conteúdos ativos são rejeitados
- Os limites são 8.192 bytes de script, 32 instruções, 4.096 bytes de expressão, 32 níveis de parser, 1.024 operações, 64 argumentos, 128 itens de array, 65.536 bytes de string e 262.144 bytes de valores acompanhados
Aparências de texto variável
EnsureLoadedFieldAppearanceStream percorre todos os widgets e herda os valores /DA, /Q, /V, /DV, /Ff e /MaxLen da hierarquia do campo ou do AcroForm
- O quadding à esquerda, ao centro e à direita usa as coordenadas locais de aparência do widget
- Multiline text receives bounded line placement and clipping
- A zero default-appearance font size triggers automatic sizing
- Comb fields place each character independently across
/MaxLencells
Estados de aparência de anotações
GetLoadedAnnotationAppearanceStream resolve as aparências normal, rollover ou down e, para rollover ou down, recorre à aparência normal quando não existe
Os dicionários de estado usam, por esta ordem, /AS, /V ou /DV herdados, o estado do pai, /Off e o fallback para o único stream existente
Achamento seletivo
FlattenLoadedFormFields pinta apenas as aparências dos widgets selecionados nas páginas a que pertencem, remove apenas os campos e anotações correspondentes e mantém todas as páginas e campos que não foram tocados
The default permission gate refuses structural changes under DocMDP and enforces FieldMDP All, Include, and Exclude locks before any page is modified
PDF.BeginIncrementalUpdate('SignedForm.pdf');
PDF.RecalculateLoadedFormFields;
PDF.FlattenLoadedFormFields(['Subtotal', 'Total']);
PDF.SaveIncrementalUpdate('SignedForm-updated.pdf');