Processamento avançado de AcroForm
O HotPDF pode recalcular campos carregados, regenerar aparências de texto variável baseadas em padrões, resolver estados de aparência de anotação e achatar um conjunto selecionado de campos sem reescrever páginas intocadas
Ordem de cálculo
RecalculateLoadedFormFields segue o array /AcroForm /CO carregado e avalia as operações limitadas AFSimple_Calculate SUM, AVG, PRD, MIN e MAX por meio do avaliador seguro de scripts de campo
ApplyLoadedFieldCalculation instala a ação de cálculo e adiciona 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 gatilho de campo solicitado
- Expressões suportam valores booleanos, numéricos, de string, null, undefined e de array com operadores aritméticos, unários, de comparação, de igualdade, lógicos de curto-circuito e condicionais
event.valuepreserva a semântica de entrada de string, enquanto o texto numérico de campo permanece numérico para compatibilidade com cálculos existentes- Os auxiliares da lista de permissões cobrem conversão de número e string, análise, funções selecionadas de
Math, análise e construção determinísticas de data UTC e inspeção limitada de string e array AFSimple_Calculate,AFRange_Validate, a atribuição deevent.valuee a atribuição deevent.rcfornecem resultados determinísticos de cálculo e validação- Laços, avaliação dinâmica, acesso a aplicativos, envio, importação, inicialização e outro conteúdo ativo 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 analisador, 1.024 operações, 64 argumentos, 128 itens de array, 65.536 bytes de string e 262.144 bytes de valores rastreados
Aparências de texto variável
EnsureLoadedFieldAppearanceStream percorre cada widget e herda os valores /DA, /Q, /V, /DV, /Ff e /MaxLen da hierarquia de campos ou do AcroForm
- O quadding à esquerda, ao centro e à direita usa as coordenadas locais de aparência do widget
- O texto multilinha recebe posicionamento de linha e recorte limitados
- Um tamanho de fonte de aparência padrão zero dispara o dimensionamento automático
- Campos comb posicionam cada caractere de forma independente nas células de
/MaxLen
Estados de aparência de anotação
GetLoadedAnnotationAppearanceStream resolve aparências normal, de sobreposição ou pressionada e faz fallback de sobreposição ou pressionada para normal
Dicionários de estado usam /AS, /V ou /DV herdados, estado pai, /Off e fallback de stream único nessa ordem
Achatamento seletivo
FlattenLoadedFormFields pinta apenas as aparências de widget selecionadas em suas páginas proprietárias, remove apenas os campos e anotações correspondentes e retém toda página e campo intocados
O portão de permissão padrão recusa mudanças estruturais sob DocMDP e aplica os bloqueios FieldMDP All, Include e Exclude antes que qualquer página seja modificada
PDF.BeginIncrementalUpdate('SignedForm.pdf');
PDF.RecalculateLoadedFormFields;
PDF.FlattenLoadedFormFields(['Subtotal', 'Total']);
PDF.SaveIncrementalUpdate('SignedForm-updated.pdf');