SearchAndReplaceTextInContent

Extração, Unicode, edição de conteúdo

Descrição

Substitui todas as ocorrências não sobrepostas da consulta em texto de página suportado, usando faixas exatas de bytes da origem e um mapeamento de fonte verificado

O método preserva o texto vizinho, os ajustes numéricos TJ existentes e a âncora original do texto seguinte; uma substituição vazia exclui apenas os caracteres correspondentes

Todas as ocorrências selecionadas são planejadas e reescritas antes de o conteúdo da página ser confirmado; texto não representável, mapeamentos de fonte incompletos ou uma localização de origem não suportada rejeitam o pedido sem substituir nenhum texto de página selecionado

Sintaxe

Delphi

Function TPDFlib.SearchAndReplaceTextInContent(Const Query, Replacement: WideString; Options: TPDFlibSearchOptions; Const PageRange: WideString): Integer;

Parâmetros

Query não pode ser vazio; Replacement pode ser vazio; PageRange usa a sintaxe existente de intervalo de páginas, e um intervalo vazio seleciona todas as páginas

Esta entrada delega para a SearchAndReplaceTextInContentEx com ReplacementFontID 0, então a substituição usa a fonte original verificada

Valores retornados

Retorna o número de correspondências substituídas, ou 0 para nenhuma correspondência ou um pedido rejeitado; examine a GetLastUnicodeReplacementDiagnostics para distinguir esses resultados

LastErrorCode 535 reporta entrada inválida ou limites de captura; 537 reporta edição ou codificação não suportada; uma busca válida sem correspondências reporta completed com replacedHits 0

Observações

Os mapeamentos vêm de uma CMap ToUnicode totalmente suportada ou de uma codificação de fonte simples verificada, incluindo nomes de glifo Differences suportados; nenhuma conversão de página de código do sistema ou codificação de glifo adivinhada é usada

Herança de UseCMap nomeada, mapeamentos não resolvidos, avanços de fonte Type3, escrita vertical, texto de Form aninhado, caracteres sintéticos, substituições de ActualText, strings transcodificadas, correspondências entre camadas e clusters parciais de ligadura são reportados como não suportados

Um cluster completo de ligadura pode ser substituído quando os bytes originais e o mapeamento Unicode dele são verificados; prefixos e sufixos permanecem na fonte original

As opções de busca mantêm o significado existente delas, incluindo restrições de maiúsculas e minúsculas, palavra inteira, curinga, diacrítico, equivalência canônica e grafema; soAcrossLines e chamadas durante um escopo de API aberto são rejeitadas

O planejamento suporta até 4096 correspondências; snapshots de origem capturados são limitados a 64 MiB por stream e 512 MiB no total, com 64 MiB de registros de localização de origem capturados; o parser de mapeamento de fonte também aplica limites limitados de token e de code space, com totais transacionais de 262144 mapeamentos e 8 Mi unidades de destino UTF-16

Esses limites restringem a captura retida e os dados de planejamento; o carregamento e a renderização de páginas existentes têm alocações próprias, então eles não são uma garantia de pico absoluto de uso de memória

Fluxos de conteúdo e dicionários de recursos compartilhados são copiados para as páginas selecionadas; a seleção do documento é restaurada e listas desatualizadas de blocos de texto devem ser extraídas de novo depois de uma edição bem-sucedida

Esta operação altera o conteúdo da página ativa e não é uma API de apagamento seguro: objetos desanexados ou revisões incrementais anteriores podem reter os bytes originais

Veja também

SearchAndReplaceTextInContent, SearchAndReplaceTextInContentEx, GetLastUnicodeReplacementDiagnostics, SearchText