THotPDF.PreviewLoadedPageTextReplacement Method
Prepara texto de substituição com fontes Unicode embutidas, mede cada correspondência e retorna um plano auditável sem modificar o documento carregado
function PreviewLoadedPageTextReplacement(PageIndex: Integer;
const Needle, Replacement: UnicodeString; MatchCase: Boolean;
const Options: THPDFLoadedTextReplacementOptions;
out Plan: THPDFLoadedTextReplacementPlan): Boolean;
Opções e resultados
THPDFLoadedTextReplacementOptions.Default usa Arial, o tamanho de fonte original da correspondência, a largura medida dela e uma altura de 1,25 vez esse tamanho, com rejeição atômica habilitada
Appearance seleciona fonte, estilo, cor, alinhamento e padding; UseMatchFontSize=False usa o tamanho solicitado, enquanto BoxWidth e BoxHeight positivos fornecem uma caixa explícita de quebra de texto
Appearance.OverflowPolicy seleciona ltopReject, ltopClip ou ltopShrinkToFit; o clipping retém somente o texto que coube segundo o producer, e o shrink-to-fit para em MinFontSize
THPDFLoadedTextReplacementPlan carrega a requisição, as opções, o fingerprint da origem, as contagens e o array THPDFLoadedTextReplacementResults
Cada THPDFLoadedTextReplacementResult relata índices de glifos, posição original, dimensões da caixa, tamanho de fonte efetivo e um valor de THPDFLoadedTextReplacementStatus: ltrsReady, ltrsApplied, ltrsRejected ou ltrsRolledBack, com um motivo para rejeição ou rollback
MaxMatches, MaxGlyphs, MaxContentTokens, MaxContentBytes, MaxGeneratedBytes e o limite de texto da aparência limitam o parsing da origem, a saída e os recursos de fonte copiados
Geometria e atomicidade
A substituição gerada usa as cadeias de fallback de fonte do documento, ShapingFeatures, as chaves de auto-shaping de script e as seleções de script e idioma do GSUB; configure isso antes da pré-visualização e mantenha as mesmas configurações ao aplicar o plano
Cada aparência de substituição limita as seleções distintas de fontes de shaping a 256 e os dados brutos cumulativos de fonte a 64 MiB, além dos orçamentos de parsing e de saída gerada da requisição
A substituição troca de fonte dentro do stream de texto original, mantém o texto ao redor pesquisável e restaura as matrizes originais de caneta e de linha, para que os glifos seguintes e as transições de linha conservem suas posições
Texto direto de página com geometria horizontal e não singular é suportado, incluindo transforms de página, escala de texto, rise, os operadores TJ e de aspas simples/duplas e correspondências que cruzam operandos adjacentes na mesma linha de base
Correspondências que cruzam linhas de base, escrita vertical, transforms singulares, conteúdo desbalanceado, glifos ausentes e documentos contendo campos de assinatura são rejeitados; texto dentro de Form XObjects está fora do escopo de correspondência desta API
Com Atomic=True, qualquer correspondência rejeitada faz rollback de todas as correspondências prontas; com Atomic=False, as prontas podem ser aplicadas enquanto as rejeitadas permanecem inalteradas, e o resultado Boolean permanece False quando qualquer correspondência foi rejeitada
O preview usa e faz rollback de uma transação de grafo aninhada, preservando uma transação existente do chamador; ele pode invalidar caches do documento e disparar a notificação de modificação do documento mesmo com o conteúdo restaurado
Commit
Passe o plano para ApplyLoadedPageTextReplacement para revalidar o fingerprint de conteúdo e de métricas de glifo antes de aplicar a requisição em uma transação de grafo
Recalcule o plano após mudanças de conteúdo; um plano obsoleto gera EInvalidOpException sem aplicar as substituições dele
Options := THPDFLoadedTextReplacementOptions.Default;
Options.Appearance.OverflowPolicy := ltopShrinkToFit;
if PDF.PreviewLoadedPageTextReplacement(0, 'Original', NewText,
True, Options, Plan) then
if PDF.ApplyLoadedPageTextReplacement(Plan, Applied) then
PDF.SaveLoadedDocument(TargetPath);